CSC 309 Milestone 4
CSC 309 Milestone 4
Continued Model/View Design and Implementation
Initial Work on Formal Testing
Design Reviews
Revised 6 May
Due: 11:59PM Mon 18 May (Week 8)
Deliverables:
Initial work on Formal Test Implementation:
-
Determine the testing framework your team will use.
-
Your team can use
JUnit
,
TestNG
, or some other comparable framework. Note that if you're using Java for
project development, Junit4 is the default framework, since that's what Spest
generates. Junit4 tests are compatible with TestNG, so you can use that
framework with Spest-generated tests.
As a team, you need to work out how precisely your team will implement and
deploy the tests. We will discuss in labs during weeks 5 and 6.
-
For reference, there Makefile-based framework described in the 309 notes and
examples. Typcially test generation is mangaged at by an IDE. If you use the
Makefile scheme, confirm that the testing directory infrastructure is properly
set up, and define the Makefile targets for each team member.
-
The requirements for any testing framework are these:
-
It must support method/function-level unit testing.
-
It must support class-level inter-method testing.
-
It must support (sub)system-level integration testing.
-
It must support regression testing.
-
Determine the code coverage tool your team will use.
-
For Java, I like
Cobertura,
there's also
JaCoCo,
and
others.
-
For Python, there's
coverage 3.7.1
which appears to be the standard these days.
-
The requirements for any code coverage tool are these:
-
it must run in conjunction with the testing framework your team has chosen to
use
-
it must report both line coverage and decision coverage 1 in the report that it generates
-
Update the integration test plan for the entire team, based on the evolution of
the design and development of the project. Put the plan here:
testing/implementation/source/java/your-
tool/integration-test-plan.html
-
Complete the class test plans for all model and process classes assigned to
each each individual team member.
-
Complete Spest specs for all methods in all model and process classes assigned
to each individual team member.
-
For the Java teams, use Spest to generate unit tests for all the project
methods.
-
For the non-Java teams, write unit tests for four to six methods per team
member, with the exact number of methods to be determined in lab meetings of
weeks 6 and 7 .
-
Run the coverage tool on your unit testing results and see what they look like.
Almost certainly you'll not achieve 100% coverage yet.
Continued work on Design and Implementation:
-
Model class data representations and method implementation.
-
Continue to refine data representations for all model and process classes,
i.e., the definition of class data fields that define how class data are
represented.
-
Approximately 75% of model/process class methods must be operationally
implemented.
-
This percentage will vary based on the complexity of the methods for individual
team members.
-
We will determine specific team member responsibilities in lab meetings.
-
As necessary, continue to use testing stubs to support model/process classes,
where underlying process classes are not yet completed.
-
All packages, classes, methods, and data fields must have javadoc-visible
descriptions, as described in the design and implementation conventions.
-
The javadoc-generated .html files for the classes must be in
the design/javadoc directory.
-
Continued work on view classes.
-
Approximately 75% of view classes must be operational, in conjunction with the
75% of the operational model/process classes.
-
This percentage will vary based on the complexity of the methods for individual
team members.
-
We will determine specific team member responsibilities in lab meetings.
-
As necessary, provide hand-built model/process testing data, where underlying
process classes are not yet completed.
-
All classes, methods, and data fields must have javadoc-visible descriptions,
as described in the design and implementation conventions.
-
Enhanced package-level and class-level design documentation.
-
As discussed in Notes Week 7, provide additional high-level design
documentation for packages and major classes.
-
Such documentation includes, but is not limited to,
-
UML package diagrams
-
UML class diagrams
-
function diagrams
-
There are no general requirements for using design diagrams; your formal
milestone evaluations will include specific individual requirements for design
documentation.
Administration:
-
Provide a HOW-TO-RUN-TESTS.html file in the project
administration directory.
-
If you use the you use the Makefile-based testing framework described in the
notes and examples, then the description of how to run tests is given in terms
of the make target(s) to execute; if you use the 309 makefile template
specifically, then HOW-TO-RUN-TESTS can be as simple as "Type
make in the project testing directory."
-
If you use some other testing framework, then HOW-TO-RUN-TESTS must describe
clearly and precisely how to execute the tests, and how to view the results.
-
Provide a m4-duties.html file that itemizes the Milestone 4 work for
each team member, in the
same table format as for Milestone 3.
-
the parts of the project that produce validated execution results
-
the class for which the test plan is written
-
the methods for which the preconditions, postconditions, and test plans are
written
-
Update the HOW-TO-RUN.html file to reflect the updates and
modifications you have made for these latest milestones.
-
Update work-breakdown.html as necessary. (The work-breakdown
file defines overall project responsibilities. The m4-duties file
defines the specific work for Milestone 4. For example, work-
breakdown can say that team member X is working on all of the classes in a
particular package. The m4-duties file will say which particular
classes and methods are the focus of work for Milestone 4.)
-
Prepare for the team design reviews to be held in lab during the 6th week.
-
During week 7, each team will present their design in a 24-minute technical
review.
-
You may use any media you choose, including powerpoint slides, whiteboard, and
operational demos.
-
Organize your presentations along the following lines:
-
focus the discussion on the major interesting model and view classes
-
use UML and function diagrams to present the design
-
provide at least one operational demo of an interesting piece of functionality
-
The presentation schedule is as follows:
Day
| Time
| Team
|
Wed 13 May
| 2:10-2:35
| Token CSC
|
| 2:35-3:00
| DJ Cars
|
| 3:10-3:35
| Fire Breathers
|
Fri 15 May
| 2:10-2:35
| Node
|
| 2:35-3:00
| Team 0
|
| 3:10-3:35
| Team 1
|
Footnotes:
1 The term "branch coverage" is used in the
documentation of some Java coverage tools, notably Cobertura. As used there,
it is equivalent to the term "decision coverage" as described in Lecture Notes
8. In any case, your chosen coverage tool must require that the Boolean logic
of all if-else conditional expressions is fully exercised, not simply that both
branches of an if-else statement are taken.