Chapter 8
Object class testing
Complete test coverage of a class involves Testing all operations associated with an object; Setting and interrogating all object attributes; Exercising the object in all possible states. Inheritance makes it more difficult to design object class tests as the information to be tested is not localised.
Component testing
Testing to validate that a unit which may consist of several classes working together performs as intended.
General testing guidelines
-Choose inputs that force the system to generate all error messages -Design inputs that cause input buffers to overflow -Repeat the same input or series of inputs numerous times -Force invalid outputs to be generated -Force computation results to be too large or too small.
Partition testing
-Input data and output results often fall into different classes where all members of a class are related. -Each of these classes is an equivalence partition or domain where the program behaves in an equivalent way for each class member. -Test cases should be chosen from each partition.
Automated test components
A setup part, where you initialize the system with the test case, namely the inputs and expected outputs. A call part, where you call the object or method to be tested. An assertion part where you compare the result of the call with the expected result. If the assertion evaluates to true, the test has been successful, if false, then it has failed.
Use-case testing
Capturing individual interactions between actors and the system to help test specific scenarios that are likely to be performed
Benefits of test driven development
Code coverage, regression testing, simplified debugging, system documentation
Unit testing
Unit testing is the process of testing individual components in isolation. It is a defect testing process. Units may be: - Individual functions or methods within an object - Object classes with several attributes and methods - Composite components with defined interfaces used to access their functionality.
Development Testing
Unit testing, where individual program units or object classes are tested. Unit testing should focus on testing the functionality of objects or methods. Component testing, where several individual units are integrated to create composite components. Component testing should focus on testing component interfaces. System testing, where some or all of the components in a system are integrated and the system is tested as a whole. System testing should focus on testing component interactions.
Guideline-based testing
Use testing guidelines to choose test cases.
Automated testing
Used when there are tests that can't be accomplished by manual testing because they would consume too much time and resources. It is when another software is used to check the performance of the software
What is an equivalence partition? Give an example.
a. A partition created with possible outputs from running a software so that when the software is tested, if the data is within a certain range, the bug can be easier to find.
What are the three types of user testing?
a. Alpha testing i. Users of the software work with the development team to test the software at the developer's site. b. Beta testing i. A release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers. c. Acceptance testing i. Customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed in the customer environment. Primarily for custom systems.
What tests should be included in object class testing?
a. Complete test coverage of a class involves i. Testing all operations associated with an object ii. Setting and interrogating all object attributes iii. Exercising the object in all possible states. b. Inheritance makes it more difficult to design object class tests as the information to be tested is not localized.
Briefly describe the three principal stages of testing for a commercial software system
a. Development testing i. System tested during development to find bugs and errors. b. Release testing i. Where a separate team tests the software before it is released to the users. c. User testing i. The users are able to test the system in their own environment.
What are the three important classes of interface errors?
a. Interface misuse i. A calling component calls another component and makes an error in its use of its interface e.g. parameters in the wrong order. b. Interface misunderstanding i. A calling component embeds assumptions about the behaviour of the called component which are incorrect. c. Timing errors i. The called and the calling component operate at different speeds and out-of-date information is accessed.
What is stress testing and why is it useful?
a. Stress testing is a form of performance testing where the system is deliberately overloaded to test its failure behavior. This shows what will cause the program to crash and shows what the software can handle.
What should be the principal concerns of system testing?
a. System testing during development involves integrating components to create a version of the system and then testing the integrated system. b. The focus in system testing is testing the interactions between components. c. System testing checks that components are compatible, interact correctly and transfer the right data at the right time across their interfaces. d. System testing tests the emergent behavior of a system.
What are the advantages of inspections over testing?
a. Test data is given to the software to see if the results given are correct. It is easy to find errors this way before they are too deep to be caught. If there are errors, they can be hidden by other errors so inspections are useful for finding errors before there are too many.
Briefly summarize the test-driven development process
a. Testing code as soon as any component is available. Tests are written before the code so that passing the tests is the critical driver of the development. Code is developed and tested in increments. The code can not move forward until it has passed the previous test. It can be used for agile development and plan driven development.
What guidelines does Whittaker suggest for defect testing?
a. Testing focused on finding bugs
What is scenario testing?
a. Using the software based on a scenario of what may be needed from the software.
What is the distinction between validation and verification?
a. Verification checks that the software does what is required, Validation checks that the software does what the user really needs.
Explain why testing can only detect the presence of errors, not their absence.
he goal of software testing is to observe the software behavior to meet its requirement expectation. Testing is a set of activities where the tester try to make the software behave anomalous in order to detect a defect or anomaly to be later fix.