
Project plan:
 Each student will work independently on Code Kata #1.
 Each student may select any two of the remaining four Code Katas.
 Each student will submit an interim report every Monday. They will email the report to Aditya and also place it at CodePlex for John's feedback.
 On Monday March 19 each student will make a summary presentation of their work. John is invited to attend and provide feedback.
 During the week of March 19, the class will write an integrated project report. This will be submitted to Aditya who will review and may suggest changes. The final report
will be submitted soon after to Jon and Aditya.


Coordinator
Feb 21, 2012 at 2:16 AM

Dr. Mathur, Zhou, Jake, and Michael,
Thank you for the opportunity to work with you on this project. I appreciate it very much. And I'm really looking forward to your reports! I'm lucky to have such good friends, old (but young in spirit) and new, from Purdue University!
Don't hesitate to post any questions you have about OpenHopla to the Discussions List. It is important that someone create good Getting Started documentation for OpenHopla. My strength in terms of how well I understand the project is my
weakness in terms of understanding what people new to the project might find difficult. So
I need you to help me see things that are more obvious from your point of view.
Thanks again!
John



Interim Report for 2/27/12
I used SpartanUnit to test a small C# program that I wrote that searches an array of integers for a single integer and returns its index. First reactions were good, it seems to adhere to the xUnit style very nicely and was very intuitive. I will do further
investigations on Code Kata 1 during the week.


Coordinator
Feb 27, 2012 at 10:50 PM

Thanks for your feedback Jake.



Interim Report
I was having difficulty coming up with proper tests for SpartanUnit, so I decided to download the source for NUnit and see if they had anything useful. They have a lot more features, but after poking around awhile I found some good simple tests.
One such test just set some boolean variables to see that the Setup and TearDown functions ran before and after the tests, respectively. On my first couple runs, I thought either SpartanUnit or my tests had some major problems. Turned out I was
under the assumption that these functions ran before/after the set of tests in a controller, not each one individually. After moving some things around, I got it to work.
Unfortunately I wasn't able to complete other tests, but this one helped me learn SpartanUnit a little better.



Interim Report,
Since I have done 4 exams in the past week (last one is tonight), i didt do much test on the SpartanUnit but tested a selfwritten simple program
which was just a loop counting integer and stoped by the addition equal to some value. It looks pretty good tho (it is really simple), i would go try some technic taught in the class such as boundary test in the next few week.


Coordinator
Feb 28, 2012 at 10:52 AM

Sounds like you're all off to a good start! Starting simple is definately a good way to begin, I believe. I'm interested in learning more about how SpartanUnit and NUnit compare and contrast. Thanks for exploring both. Don't hesitate to ask questions any
time you need help getting unstuck.



interim report 2,
I tried to look into the triangle test, first it is require the graph to have exactly 3 sides to be a triangle, then it goes to classify triangles into Equilateral, Isosceles, Right,
Scalene. The method to determine the type of the triangle is fine. Do we need to put a if statement to verify whether a triagnle is valid after exactly 3 side and type of the triangle : none of the sides is zero, either sum of 2 sides must >= 3rd side,
either difference of 2 sides must <= 3rd side?


Coordinator
Mar 12, 2012 at 10:10 PM

Hi Zhou,
You're asking good questions about triangles in general! Checking to see whether the lengths of the sides of a triangle satisfy the criteria you've listed would be a good idea in the case of the classic triangle testing problem posed by Glenford Myers in
The Art of Software Testing. However, the problem I've created is a bit different. Of course, I haven't changed the requirements that various types of triangles must satisfy. But I have posed a different problem in terms of the input parameter(s),
for example. Although it might still be a good idea to test whether the lengths of the sides of an instance of the triangle class are greater than zero, the question is raised: where does the code that does the checking belong? Does
it belong in TriangleTester or somewhere else? Also, I have a question for you: is it possible for the C# triangle object as it is currently coded to have a side, the length of which is greater than the sum of the lengths of the two remaining sides? If
not, why not? If so, how would you instantiate such a strange "triangle"?
John



Interim report 3
KK, I just forgot everything is based on the triangle object which did guarantee that is a Triangle. After I dig deeper
on this, i think we can classify the triangle into more types. For the angle, we can divide it into Right angle, obtuse angle and acute angle. For obtuse angle and acute angle.
simply let a=a*a;b=b*b;c=c*c;
if(a==b+c) it would be right angle
else if(a>b+c) it would be obtuse angle
else if(a<b+c) it would be acute angle
I am not sure if it is necessary, but i do think it is good for child to understand every type of the triangles. Furthemore, for the
place to decide the type of the triangle, you put if in every statement. I know that the child do not need to look at the source code, but if a triangle is a Equilateral, it do not need to pass the following 3 ifs. (it cant be isoceles, scalene,right). The
same isoceles triangle can have right angle but it cant be scalene. I know if we do this, the code may be complicated and the time saved for the process is very limited.
Best.
Zhou


Coordinator
Mar 20, 2012 at 3:42 PM

Hi Zhou,
Yes, there are many ways to classify shapes such as triangles! You highlight other possibilities that I initially ignored, in part for the sake of simplicity. (Also, I was trying to create a problem that resembled Myers' classic testing problem but
with a twist or two to keep it interesting and challenging.) The more complex the classification problem becomes, the more test cases we'll need to verify that the code is correct. And it is the completeness of the test cases (more so than the completeness
of the classification problem/solution) that I encourage you to focus on for your software testing class. That said, I don't want to discourage you from suggesting new features; that is one of the very
fun parts about computer programming after all!
Since you mention right, obtuse, and acute triangles, what are your thoughts about, say, a test case that consists of inputs {(0,0), (3,0), (0, 4)}? Obviously that set of points defines a 345 right triangle. What other test cases do
you think are needed to verify that an implementation of TriangleTester correctly classifies a right triangle? (Hint: Think about the word
epsilon and rounding/truncation errors associated with computers and math.)
Regards,
John

