1 / 19

Unit Testing for F-22 Raptor Fighter

Learn about the importance of unit testing in the development and implementation of the F-22 Raptor Fighter. Discover the methods, benefits, and tools used in unit testing for this advanced aircraft.

rcarmella
Download Presentation

Unit Testing for F-22 Raptor Fighter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unit Testing

  2. F-22 Raptor Fighter

  3. F-22 Raptor Fighter • Manufactured by Lockheed Martin & Boeing • How many parts does the F-22 have?

  4. F-22 Raptor Fighter • What would happen if Lockheed assembled an F-22 with "untested" parts (i.e., parts that were built but never verified)? • It wouldn't work, and in all likelihood you would never be able to make it work • Cheaper and easier to just start over

  5. Managing implementation complexity • Individual parts should be verified before being integrated with other parts • Integrated subsystems should also be verified • If adding a new part breaks the system, the problem must be related to the recently added part • Track down the problem and fix it • This ultimately leads to a complete system that works

  6. 2 approaches to programming • Approach #1 • "I wrote ALL of the code, but when I tried to compile and run it, nothing seemed to work!“ • Approach #2 • Write a little code (e.g., a method or small class) • Test it • Write a little more code • Test it • Integrate the two verified pieces of code • Test it • …

  7. Unit testing • Large programs consist of many smaller pieces • Classes, methods, packages, etc. • "Unit" is a generic term for these smaller pieces • Three important types of software testing are: • Unit Testing (test units in isolation) • Integration Testing (test integrated units) • System Testing (test entire system that is fully integrated) • Unit Testing is done to test the smaller pieces in isolation before they are combined with other pieces • Usually done by the developers who write the code

  8. What unit tests do • Unit tests create objects, call methods, and verify that the returned results are correct • Actual results vs. Expected results • Unit tests should be automated so that they can be run frequently (many times a day) to ensure that changes, additions, bug fixes, etc. have not broken the code • Regression testing • Notifies you when changes have introduced bugs, and helps to avoid destabilizing the system

  9. Test driver program • The tests are run by a "test driver", which is a program that just runs all of the unit test cases • It must be easy to add new tests to the test driver • After running the test cases, the test driver either tells you that everything worked, or gives you a list of tests that failed • Little or no manual labor required to run tests and check the results

  10. Android testing framework • Android provides a framework for writing automated unit tests • Based on the popular JUnit unit testing framework • There are two types of Android unit tests • Local Unit Tests • These tests depend only on standard Java classes, and so can be run on the development computer instead of on an Android device • You will create local unit tests for the Family Map Server project • Instrumented Unit Tests • These tests depend on Android-specific classes, and so must be run on an Android device • You will create instrumented unit tests for the Family Map Client project

  11. Android local unit tests • Official Documentation • Can run on the development computer without a device or emulator • Module’s primary source code is located in the folder • <module>/src/main/java/<package> • Local unit test code is located in the folder • <module>/src/test/java/<package>

  12. Android local unit tests • Example: junit-example (on web site) • “spellcheck” module contains code for web-based spelling checker • “Real” classes are in: • src/main/java/spellcheck/*.java • src/main/java/dataaccess/*.java • “Test” classes are in: • src/test/java/spellcheck/*.java • src/test/java/dataaccess/*.java

  13. Android local unit tests • Local test classes are written using the JUnit 4 unit test framework • Include the following in app/build.gradle dependencies {…testCompile'junit:junit:4.12'} • Import JUnit 4 classes import org.junit.*; import static org.junit.Assert.*;

  14. Android local unit tests • Test classes are just regular classes (no special superclass) • Test methods may have any name (need not be test*), but must have the @Test annotation on them • Common initialization code can be placed in a method (any name) with the @Before annotation • Common cleanup code can be placed in a method (any name) with the @After annotation • Use JUnit assert* methods to implement test cases • JUnit 4 Assert Method Documentation

  15. Running local unit tests(from Android Studio) • No device or emulator is needed • To run a single test class, in the “Project” tool window right-click on a test class name, and select “Run Tests” or “Debug Tests” • To run all of your local unit tests, right-click on the “test/java” folder, and select “Run All Tests” or “Debug All Tests”

  16. Running local unit tests (from command-line) • Write a test driver class whose “main” method invokes the org.junit.runner.JUnitCore class to run your unit tests • Run your test driver program from the command-line: java –cp build\classes\main;build\classes\test;libs\junit-4.12.jar;libs\hamcrest-all-1.3.jar;libs\sqlite-jdbc-3.16.1.jar TestDriver • For the Family Map Server project, you will create a bash shell script that will compile and run your unit tests from the command-line

  17. JUnit 4 unit testing framework • JUnit 4 Documentation • Use JUnit 4 annotations to mark test methods

  18. JUnit 4 unit testing framework • Use JUnit 4 annotations to mark test methods

  19. Database Unit Tests • When writing unit tests for your database code, there are additional things to think about • Put database driver JAR file on the class path • Each unit test should start with a pristine database so prior tests have no effect • Can re-create tables before each test • Or, you can “rollback” the effects of each test so they are undone and don’t affect later tests

More Related