Allow pre-and post condition encoding in methods, independently of program logic
Measure for Integrity
Considering the proportion of 'attacks' on a product
Maintainability measuring
Measured indirectly using mean time to change (MTTC)
MTTC
The average of the times it takes to analyze a bug report, design an appropriate modification, implement the change, test it and distribute the change to all users
Usability testing
Involves users systematically trying out the user interface
Heuristic review
Can be used to make substantial improvements to user interfaces without involving users
Verification
Process of ensuring that the product being built 'right'
Validation
Process of checking that the developer is building the 'right' product
Consistency with a customer requirement
Means that the requirement is met
Self-inconsistency
If two descriptions of the same part of the system contradict each other
Completeness
Every aspect of customer's requirements must be met by system description
Approaches to promote testing throughout development
Prototyping
Iterative approaches
Frameworks: dynamic systems development method (DSDM)
Testing types
Usability testing
Developmental testing
Requirements-based testing
Regression testing
Testing is an essential part of developing software
Java and eiffel support assertion mechanisim
JUnit is framework used in Java to test units
Black box testing
Test if customer's requirements are handled correctly by an implementation
Black box testing strategy
1. Determine the input data space
2. Partition the input data space into sub domains
3. Test all sub domains given by the case analysis
problem of black box testing and white box testing
black box problem:poor coverage and doesn’t consider dependency. white box problem: Doesn’t consider costumer requirements
White box testing
Check that the details of an implementation are correct
White box testing strategy
1. Basis-path testing (Determine the cyclomatic complexity of the flow & Count independent paths)
2. Loop testing
System testing
1. User-command testing (or operator testing)
2. Interface and protocol testing
3. Start-up and initialization testing
4. Restart testing
5. Performance testing
6. Stress testing
7. Security testing
8. Acceptance testing
User-command testing (or operator testing)
Tests all user commands from the point of view of tolerance to syntax errors and data input errors
Interface and protocol testing
If the system communicates with other systems in the outside world, tests its interaction with the communication system
Start-up and initialization testing
Tests the system's ability to be started in a working hardware/software configuration
Restart testing
Tests the ability of the system to recover from errors of internal state
Performance testing
Tests that the system meets all specified operating requirements for speed, number of concurrent users permitted, etc.
Stress testing
Tests that the system can operate reliably at the limits of each of its resources (for example, to stress test a web server, we may simulate the accesses of hundreds or thousands of users all at the same time to see if it can cope with the load)
Security testing
Tests that the system does not offer opportunities to breach security
Acceptance testing
Performed by the customer and after which, all being well, the system is accepted