testing. what is testing? definition: exercising a program under controlled conditions and verifying...
TRANSCRIPT
![Page 1: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/1.jpg)
Testing
![Page 2: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/2.jpg)
What is Testing?
• Definition: exercising a program under controlled conditions and verifying the results
• Purpose is to detect program defects after all syntax errors have been removed and the program compiles
• No amount of testing can guarantee the absence of defects in sufficiently complex programs
![Page 3: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/3.jpg)
Careful Testing is Needed
• Unless all possible inputs are tested (usually impossible), testing cannot guarantee freedom from logic errors– Errors that always occur are easily found– But, errors that occur sporadically or only
in certain special cases are hard to find– Testers must be careful and clever to test
these obscure conditions!
![Page 4: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/4.jpg)
Structured Walkthroughs
• Designer must explain the algorithm to other team members and simulate its execution with other team members looking on
• When you explain, you often catch your own errors
• Teammates might see errors or misconceptions
![Page 5: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/5.jpg)
Levels and Types of Testing
• Unit testing: checking the smallest testable piece of the software (a method or class)
• Integration testing: testing the interactions among units
• System testing: testing the program in context
![Page 6: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/6.jpg)
Levels and Types of Testing (continued)
• Acceptance testing: system testing designed to show that the program meets its functional requirements
• Black-box testing: tests the item based on its interfaces and functional requirements
• White-box testing: tests the software with the knowledge of its internal structure
![Page 7: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/7.jpg)
Preparations for Testing
• A test plan should be developed early in the design phase
• Testing should take place concurrently with the design and coding
• A good programmer practices defensive programming– Include code to detect invalid or
unexpected data (e.g. exception code)
![Page 8: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/8.jpg)
Test Plan
• How will the software be tested?
• When will the tests occur?
• Who will do the testing?
• What is the test data (and expected results)?
![Page 9: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/9.jpg)
Start with Documentation
• Method documentation: include parameters and expected results
• Carefully document method parameters and class attributes in comments as you write the code
• Include pre- and post-conditions
![Page 10: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/10.jpg)
Include Helpful Output
• Leave a trace of execution by displaying the method name as you enter it
• Display values of all input parameters upon entry to a method
• Display the values of any class attributes that are accessed by this method
• Display the values of all method outputs after returning from a method
![Page 11: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/11.jpg)
Developing the Test Data
• Specify test data during the analysis and design phases for the different levels of testing: unit, integration, and system
• Data includes inputs & expected outputs
![Page 12: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/12.jpg)
Black Box Testing
• Test relationship between inputs & outputs
• Check for all (types of) expected inputs
• Check for unanticipated data– If a monkey was sitting at a keyboard…
![Page 13: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/13.jpg)
White Box Testing
• Goal is to test every path through the code
• For every if statement, there should be at least one test case where the condition is false, and one where the condition is true
• All methods of all classes should be exercised
![Page 14: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/14.jpg)
Boundary Conditions
• These are cases where errors often happen– The first or last execution of a loop
• (Off-by-one error)
– The largest or smallest possible value– The first or last location in an array
![Page 15: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/15.jpg)
Who Does Testing?
• The programmer– Risk: blind to his/her own oversights
• Other members of the software team who did not code the module being tested– Quality Assurance organization within company– Team member not responsible for the code
• Final users of the software product– Alpha testing– Beta testing– After delivery (unfortunately)
![Page 16: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/16.jpg)
Unit Testing (Drivers & Stubs)
• To test a method, some other method or main needs to call it– A driver is written specifically to run test
cases on one or more methods
• To test a method, methods that it uses must be implemented– A stub is written to allow its parent to be
tested
![Page 17: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/17.jpg)
Drivers
• A driver program declares any necessary object instances and variables, assigns values to any of the method’s inputs, calls the method, and displays the values of any outputs returned by the method
• You can put a main method in a class to serve as the test driver for that class’s methods
![Page 18: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/18.jpg)
Stubs
• The replacement of a method that has not yet been implemented or tested is called a stub
• A stub has the same header as the method it replaces, but its body only displays a message indicating that the stub was called (and returns a default result if a return is needed)
![Page 19: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/19.jpg)
Using a Test Framework
• A test framework is a software product that facilitates writing test cases, organizing the test cases into test suites, running the test suites, and reporting the results
• A test framework often used for Java products is JUnit, an open-source product that can be used in a stand-alone mode and is available from junit.org
• Junit is also included within Eclipse and BlueJ (and other Java IDE’s)
![Page 20: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/20.jpg)
Junit in BlueJ
• Enable testing:– Preferences : Miscellaneous – check “Unit
Testing Tools”
• Right click a class, ‘Create Test Class’
• Creates a (green) test class
Edit text or right-click for options
• Click ‘run tests’ to run all tests at once
![Page 21: Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects](https://reader035.vdocuments.us/reader035/viewer/2022062801/56649e2a5503460f94b18159/html5/thumbnails/21.jpg)
Junit in Eclipse
• With the class you want to test open, select File / New / Junit TestCase
• Click ‘setup’ and ‘teardown’ for items to create (you can delete later if you don’t need them)
• Create tests (all begin with the word test)• Run / Run As / Junit test (to test)