Physical Architecture Layer Design Chapter 13 Testing is rather weak in this text, p 467 to 774– not enough so some additional material is provided. Slide 1 Types of Testing Unit Testing Integration Testing System Testing Acceptance Testing Slide 2 Unit Testing According to Wiki: In computer programming, unit testing is a procedure used to validate that individual units of source code are working properly. A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, etc., while in object-oriented programming, the smallest unit is a method; which may belong to a base/super class, abstract class or derived/child class. Ideally, each test case is independent from the others; mock objects and test harnesses can be used to assist testing a module in isolation. Unit testing is typically done by developers and not by endusers. Slide 3 Unit Testing In Wiki, we note the latest definition of unit testing. While the text talks about the smallest unit as a class, testing the class simply means testing each of the methods. There are two approaches to unit (methods in a class) testing. Black Box Testing White Box Testing Slide 4 Unit Testing Black Box Unit Testing inputs Black Box (method) outputs A black box test (sometimes called a "functional test") is one in which you feed it inputs and verify the outputs without being able to inspect the internal workings. Slide 5 Unit Testing Black Box Unit Testing inputs Black Box (method) outputs We did black box testing on our use cases with our functional tests. But black box testing of units are tested differently since each method is tested independently. Slide 6 Unit Testing Black Box Unit Testing inputs Black Box (method) outputs In Black Box (BB) Unit testing error handling is not usually considered. It is not considered if you are executing all the paths thru the code. The BB test only tests that known inputs result in known outputs. Slide 7 Unit Testing Black Box Unit Testing inputs Black Box (method) outputs In Black Box (BB) Unit testing the code in the method is black, not seen and thus not tested as code just as a function that yields a result. Slide 8 Unit Testing White Box Unit Testing inputs White Box (method) outputs A white box tests is white and you can clearly see the actual code. White box tests has the knowledge needed to test all the possible pathways in the actual code. This includes not only correct inputs, but incorrect inputs, testing error handling procedures. Slide 9 Unit Testing White Box Unit Testing inputs White Box (method) outputs White box testing has the ability to inspect the internal state of the code at different times. White box testing is needed on critical methods and when methods are very complex. Slide 10 Integration Testing According to Wiki: Integration testing (sometimes called Integration and Testing, abbreviated I&T) is the phase of software testing in which individual software modules are combined and tested as a group. It follows unit testing and precedes system testing. Slide 11 Integration Testing According to Wiki: (cont) Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing. Slide 12 Integration Testing Types of Integration Testing User Interface Testing Use-Case Testing Interaction Testing System Interface Testing Slide 13 Integration Testing User Interface Testing The User Interface Tests assure that the user interfaces operate correctly. User Interface Application Testing Test each window – right click and perform those functions avail, try all menus Test each component Test navigation using Navigation matrix Slide 14 Integration Testing Use-Case Testing Use Case Testing is done in conjunction with user interface testing traversing thru the use case assuring all the navigation and functionality exist. Slide 15 Integration Testing Interaction Integration Testing Interaction testing test each use case to assure it performs as the sequence diagram dictates, that all the functions are called, all updates are done. It verifies the behavior of the unit being tested – beginning with the method if it interacts with other classes, assuring all use cases interact correctly, assuring all packages are correct, etc. Slide 16 Integration Testing System InterfaceTesting System Interface Testing assures that data that is shared with other systems including the database system is transferred correctly. Slide 17 System Testing Types of System Testing Requirements Testing Usability Testing Security Testing Performance Testing Documentation Testing Slide 18 System Testing Requirements Testing While developers performed Unit and Integration Testing, Users now need to test the requirements of the use cases using their functional tests they developed when writing the use case descriptions. Slide 19 System Testing Usability Testing These test are typically done by an human computer interface specialist, if done at all. It simply test the usability of the system. Slide 20 System Testing Security Testing Security Testing assures no unauthorized accesses are possible Test the back up procedure ( if things go down do we have back ups for our data, processes, programs, code, etc.) Test the recovery procedure (can we use our backups to recover). Slide 21 System Testing Performance Testing Investigates peak times to assure the system will operate well under stress conditions. Slide 22 System Testing Documentation Testing Test the accuracy of the documentation such as user manuals, help links, etc. Slide 23