Presentation is loading. Please wait.

Presentation is loading. Please wait.

Testing JUnit Testing. Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes.

Similar presentations


Presentation on theme: "Testing JUnit Testing. Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes."— Presentation transcript:

1 Testing JUnit Testing

2 Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes any evaluation performed by human or computer to assess quality Some evaluations should occur before coding even begins The earlier we find an problem, the easier and cheaper it is to fix

3 Testing The goal of testing is to find errors As we find and fix errors, we raise our confidence that a program will perform as intended We can never really be sure that all errors have been eliminated So when do we stop testing? –Conceptual answer: Never –Snide answer: When we run out of time –Better answer: When we are willing to risk that an undiscovered error still exists

4 Reviews A review is a meeting in which several people examine a design document or section of code It is a common and effective form of human-based testing Presenting a design or code to others: –makes us think more carefully about it –provides an outside perspective Reviews are sometimes called inspections or walkthroughs

5 Test Cases A test case is a set of input and user actions, coupled with the expected results Often test cases are organized formally into test suites which are stored and reused as needed For medium and large systems, testing must be a carefully managed process Many organizations have a separate Quality Assurance (QA) department to lead testing efforts

6 Defect and Regression Testing Defect testing is the execution of test cases to uncover errors The act of fixing an error may introduce new errors After fixing a set of errors we should perform regression testing – running previous test suites to ensure new errors haven't been introduced It is not possible to create test cases for all possible input and user actions Therefore we should design tests to maximize their ability to find problems

7 Black-Box Testing In black-box testing, test cases are developed without considering the internal logic They are based on the input and expected output Input can be organized into equivalence categories Two input values in the same equivalence category would produce similar results Therefore a good test suite will cover all equivalence categories and focus on the boundaries between categories

8 White-Box Testing White-box testing focuses on the internal structure of the code The goal is to ensure that every path through the code is tested Paths through the code are governed by any conditional or looping statements in a program A good testing effort will include both black-box and white-box tests

9 JUnit Testing Testing is critical to software quality Good test plans are difficult to specify but also difficult to document precisely Good testing must be repeatable Good testing is tedious Testing is a good candidate for automation Some methodologies such as “Extreme Programming” mandate daily builds and automated unit testing

10 JUnit Testing In project 1, when we developed our Java code for the QuadraticSolver class, we used the CLI class itself as the “driver” to execute test cases We manually entered our test case values and visually verified whether the response provided was correct or not This testing process was labor intensive!! The JUnit framework helps us build a “test case” class to automate testing of a “class under test”

11 JUnit Testing TestCaseTestSolver QuadraticSolver + assertEquals( ) + setA( ) … + getEquation( ) + getSolution( ) + testSolver( ) “Class Under Test” TestSolver “Driver Class” “junit.framework.TestCase Class” extends depends on

12 JUnit Testing Useful method inherited from TestCase class: assertEquals(“should be value”, cut.method( )); The assertEquals method flags discrepancies between the “should be” value and the result returned by the “class under test” method( ) assertEquals method automatically displays the difference between the “should be value” and the actual return value received

13 JUnit Test for QuadraticSolver import junit.framework.TestCase; public class TestSolver extends TestCase { private QuadraticSolver cut; public TestSolver() { cut = new QuadraticSolver(); // Instantiate Class Under Test } // First of six test case methods for the QuadraticSolver class public void test2RealRoots() { cut.setA(1); cut.setB(0); cut.setC(-1); assertEquals("Solving: 1x**2 + 0x -1 = 0", cut.getEquation()); assertEquals("Root 1 is 1.0\nRoot 2 is -1.0", cut.getSolution()); }

14 JUnit Testing Test Case Execution 1 test failed: TestSolver test2RealRoots test2ImaginaryRoots testOnly1Root testLinear testNoSolution testAnySolution Failure: expected: but was:

15 JUnit Testing The Java code in the TestCase class(es) precisely documents the test cases It allows them to be run automatically It allows people other than the test designer to run them It prevents oversights in identification of any discrepancies in the results


Download ppt "Testing JUnit Testing. Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes."

Similar presentations


Ads by Google