TJHSST Computer Systems Lab Automation of Testing in the Distributed Common Ground System (Army) 2008-2009 Michael Eng Mentor: Mark Pumphrey Northrop Grumman.

Slides:



Advertisements
Similar presentations
Database System Concepts and Architecture
Advertisements

Programming Paradigms and languages
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
Ch. 2 Exploring core JUnit. This chapter covers ■ Using the core JUnit classes ■ Understanding JUnit mechanisms ■ Understanding the JUnit lifecycle.
Approach of Unit testing with the help of JUnit Satish Mishra
Well-behaved objects 4.0 Testing. 2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts to.
JUnit, Revisited 17-Apr-17.
Tools and Services for the Long Term Preservation and Access of Digital Archives Joseph JaJa, Mike Smorul, and Sangchul Song Institute for Advanced Computer.
AP Computer Science.  Not necessary but good programming practice in Java  When you override a super class method notation.
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
Introduction to Software Testing
Software Testing & Strategies
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
The POSTGRES Next - Generation Database Management System Michael Stonebraker Greg Kemnitz Presented by: Nirav S. Sheth.
Unit Testing & Defensive Programming. F-22 Raptor Fighter.
JUnit The framework. Goal of the presentation showing the design and construction of JUnit, a piece of software with proven value.
Christopher Jeffers August 2012
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Cmpe 589 Spring Software Quality Metrics Product  product attributes –Size, complexity, design features, performance, quality level Process  Used.
An Approach to Test Autonomic Containers Ronald Stevens (IEEE Computer Society & ACM Student Member) August 1, 2006 REU Sponsored by NSF.
© 2012 IBM Corporation Rational Insight | Back to Basis Series Chao Zhang Unit Testing.
Computer Science and Engineering College of Engineering The Ohio State University JUnit The credit for these slides goes to Professor Paul Sivilotti at.
Internationalization and the Java Stack Matt Wheeler.
JUnit in Action SECOND EDITION PETAR TAHCHIEV FELIPE LEME VINCENT MASSOL GARY GREGORY ©2011 by Manning Publications Co. All rights reserved. Slides Prepared.
Understand Application Lifecycle Management
Testovid - an environment for testing almost any aspect of student assignments I. Pribela, S. Tošić, M. Ivanović, Z. Budimac Risan, September 2007.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Unit testing Unit testing TDD with JUnit. Unit Testing Unit testing with JUnit 2 Testing concepts Unit testing Testing tools JUnit Practical use of tools.
Intoduction to Unit Testing Using JUnit to structure Unit Testing SE-2030 Dr. Rob Hasker 1 Based on material by Dr. Mark L. Hornick.
Scalable Web Server on Heterogeneous Cluster CHEN Ge.
The Daikon system for dynamic detection of likely invariants MIT Computer Science and Artificial Intelligence Lab. 16 January 2007 Presented by Chervet.
Generic API Test tool By Moshe Sapir Almog Masika.
Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation.
Abstract The Center for Remote Sensing of Ice Sheets (CReSIS) has collected hundreds of terabytes of radar depth sounder data over the Greenland and Antarctic.
Introduction to JUnit 3.8 SEG 3203 Winter ‘07 Prepared By Samia Niamatullah.
A Technical Validation Module for the offline Auger-Lecce, 17 September 2009  Design  The SValidStore Module  Example  Scripting  Status.
Unit Testing with JUnit and Clover Based on material from: Daniel Amyot JUnit Web site.
Week 14 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
Introduction of Geoprocessing Lecture 9. Geoprocessing  Geoprocessing is any GIS operation used to manipulate data. A typical geoprocessing operation.
EMBEDDED REAL-TIME, INC. December 8, 2015 Java Unit Mark Mosher Rochester Java Users Group.
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Final Review. From ArrayLists to Arrays The ArrayList : used to organize a list of objects –It is a class in the Java API –the ArrayList class uses an.
Intoduction to Unit Testing Using JUnit to structure Unit Testing SE-2030 Dr. Mark L. Hornick 1.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
IBM Global Services © 2005 IBM Corporation SAP Legacy System Migration Workbench| March-2005 ALE (Application Link Enabling)
Unit Testing with FlexUnit
Selenium server By, Kartikeya Rastogi Mayur Sapre Mosheca. R
Test Automation For Web-Based Applications Portnov Computer School Presenter: Ellie Skobel.
Getting Started with JUnit Getting Started with JUnit The benefits and ease of writing and running JUnit test cases and test suites. The benefits and ease.
SWE 434 SOFTWARE TESTING AND VALIDATION LAB2 – INTRODUCTION TO JUNIT 1 SWE 434 Lab.
Space FSW Conference 2016 Matthew Conte Software Engineer
Semi-Automated Software Restructuring
Software Testing.
John D. McGregor Session 9 Testing Vocabulary
Self Healing and Dynamic Construction Framework:
Michael Eng Mentors: Mark Pumphrey, Greg Cordero
Spark Presentation.
Software Engineering 1, CS 355 Unit Testing with JUnit
Applied Software Implementation & Testing
Introduction to Software Testing
Introduction to JUnit IT323 – Software Engineering II
Automation of Testing in the Distributed Common Ground System (Army)
Automation of Testing in the Distributed Common Ground System (Army)
Designing a Method and Test Program
CMPE212 – Reminders Assignment 2 due this Friday.
Java IDE Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
CSE 1020:Software Development
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Ponder policy toolkit Jovana Balkoski, Rashid Mijumbi
Presentation transcript:

TJHSST Computer Systems Lab Automation of Testing in the Distributed Common Ground System (Army) Michael Eng Mentor: Mark Pumphrey Northrop Grumman Corporation: Mission Systems Sector Abstract In most large-scale software systems, it is important to thoroughly test individual modules and components whenever possible. There are many different methods of testing that differ mainly in their approach to the scale of each test. Unit testing is a method of testing that verifies and validates individual units of source code. This project seeks to use different testing methods within unit tests to test the United States Army’s Distributed Common Ground System (DCGS), which will optimize coverage and efficiency as development continues. Background DCGS-A is a joint collaboration between multiple defense contractors and the U.S. Army. It is envisioned as one cohesive system that integrates architecture and input from all surface systems. Intelligence on terrain, personnel, targets, and signals will be integrated into DCGS- A. The infrastructure will include Imagery Intelligence (IMINT), Signals Intelligence (SIGINT), and Measurements and Signatures Intelligence (MASINT) functions and components. The part of DCGS-A that I am testing is written in Java and organized according to the object- oriented programming practice. A Subversion repository is used for version control and as a central bank for stable code. Unit testing has been utilized in countless programs. It is the cornerstone of Extreme Programming, a methodology designed to make development more flexible and to reduce the cost of changing existing software. Unit testing usually relies on an automated testing framework- in this case, JUnit- that facilitates creation and execution of test classes. Within the DCGS-A infrastructure, each class with logic- not simple get and set methods- has a corresponding test class. Each test class tests each method with logic in multiple ways. Testing each method optimizes code coverage and eases debugging by limiting problems to individual lines of code, rather than whole classes or packages. Methodology JUnit, an automated testing framework, was used in conjunction with Eclipse as an environment for creating and running tests for the various DCGS-A classes. Classes with logic- those with more than simple get and set methods and constructors- were tested. Each class tested had its logical methods and constructors tested in multiple ways. For example, consider a Parser class with a method parse that returns the first number character found in a given String parameter and returns null if there are no numbers in the String. A corresponding JUnit test class might test the parse method by sending it a String with all letters, a blank String, a null value, an Integer, a String array, a String obtained from an Object’s toString method, and a String with all numbers. In each case, there would be an expected output or result from the method. In JUnit, the actual result of each test is usually compared with an expected result by using assertion methods like assertEquals, assertNull, assertTrue, or assertFalse. In order to run test classes en masse, JUnit’s suite method was used to “chain” clusters of tests together. Classes called allTests classes were written at each subdirectory of the project. Each allTests class, depending on its level in the hierarchy, either loaded individual test classes into its suite or loaded the suite of the allTests classes in its subdirectories into its suite. Thus, using Eclipse’s Run as JUnit Test on the allTests class in the root of the directory will run every single test class and method in the project, achieving testing automation. Results Fourteen test classes have been created for various DCGS-A classes. Four existing test classes have been modified to increase test coverage or have been updated to remove build errors and reflect updated source classes. As a direct result of testing, five source classes have been modified to remove bugs. Three AllTests classes have been created, and five AllTests classes have been updated to include new test classes. All of the test classes written were designed to meet the criteria that 1) they tested anything with logic- constructors, methods, etc., and 2) tests covered the majority of possible cases for each method being tested. Bugs found using this form of testing usually were a result of bad logic or improper code placement. For example, a class that issued security classifications based on an input erroneously had a line at the end of the method that forced all security classifications to the default configuration. Without unit testing, this might not have been found until DCGS-A was being demonstrated to the U.S. Army’s representatives. A sample image of Eclipse running JUnit tests. The green bar on the left side shows the progress and success rate of the collection of tests- Conclusion During the mentorship period, test files were successfully written for DCGS-A. They used the JUnit testing framework and methods to carry out test methods and followed the unit test approach to testing software, mainly focusing on testing various permutations of methods by manipulating parameters and arguments. The tests were stored in a test directory equal in structure to the main class directory in order to ease automation and test file location. Automation of the tests was achieved by “chaining” AllTests files together to form a tree-style execution of all test files that could be triggered from the AllTests file at the very top of the testing directory. Possible means of further automating testing include the implementation of a script into the DCGS-A batch files in order to run all of the tests overnight, though the software group is satisfied with the current implementation. References Buy, U., Orso, A. & Pezze, M. (September 2000). Automated Testing of Classes. ACM SIGSOFT Software Engineering Notes, 25(5), from &key2= &coll=GUIDE&dl=ACM&CFID= &CFTOKEN = ACM Portal. Canna, J. Testing, fun? Really? IBM. Retrieved January 7, 2009, from test.html Carrington, D. (1997). Teaching software testing. ACM International Conference Proceeding Series, 2, Retrieved January 7, 2009, from &key2= &coll=GUIDE&dl=GUIDE&CFID= &C FTOKEN= ACM Portal. Chatterjee, S. Testing Java in an Object-Oriented Way. Java.net. Retrieved January 7, 2009, from Rajendran, R. V. (2008). White paper on Unit Testing. Retrieved January 7, 2009, from