Courses from Bender & Associates Inc.

46 Digital Drive, Suite 5
Novato, CA 94949

Phone: 415-884-4380
FAX: 415-884-4384

Requirements Based Testing

This course will provide the student with a set of practical, yet rigorous techniques for testing program requirements to ensure that they are complete, consistent, accurate, and unambiguous and for designing a sufficient set of test cases to validate that the design and code fully implement all of the functional requirements. Cause-Effect Graphing is taught as a technique for validating the completeness and consistency of the requirements specification. Analysis of graphs to determine which functions will mask errors in other functions is demonstrated. From this analysis, specific test cases are designed to ensure that logical ambiguities have been resolved and the software performs to specification.

Over eighty percent of funds allocated to the elimination of software errors can be traced to inferior or missing requirements. A requirements-based error that is not discovered during the requirements stage of development costs time, money and resources. With this fact in mind, it is obvious that the major opportunity for improving the quality of software systems lies in improving the process in which requirements specifications are developed, tested and how functional test cases are designed.

Requirements based testing will significantly increase the effectiveness of the testing process by increasing functional and code coverage. The technique will also significantly increase the efficiency of testing by reducing the number of required functional test cases by up to sixty percent.

Requirements-Based Testing increases the effectiveness and efficiency of the testing process and provides systems with more function, in less time,and with fewer resources. The total development time is shortened due to increased parallel efforts since testing can begin much earlier in the development cycle. Project resources are reduced by minimizing scrap & rework since errors are discovered earlier in the life cycle.

The final day of the course is spent working through the entire testing process using the client's own specifications. This includes an introduction to using SoftTest. The course is student-paced and participants are encouraged to bring samples from their own projects to evaluate during class. SoftTest can be used to test any application running on any platform, written in any language.

Code Based Testing

The IEEE standard for unit testing strives to execute each statement and conditional branch of code within a software program. However, experience has shown that this technique is not meticulous enough to reliably test safety-critical and mission-critical software, or applications involving high levels of asynchronous interaction.

The two-day Code-Based Testing seminar introduces techniques designed to increase testing accuracy by thirty-five to forty percent over that achieved by the IEEE standard. This is accomplished by ensuring that all data flows (i.e., the set/use pairs of data transformations) are tested. Maximum testing accuracy reveals code defects particular to tests executed in a particular sequence or in a particular position.

Code-Based Testing also identifies the source of non-reproducible bugs (all of which have their roots in spurious data flows). When they occur during the development of a product, such order-dependent, position-dependent and non-reproducible defects are the most difficult and expensive obstacles to overcome. Practiced in conjunction with methods taught in the Requirements-Based Testing seminar, Code-Based Testing insures maximum efficiency in software development.

The Code-Based Testing seminar illustrates a method called Data Flow Analysis. This method is used to identify data flows within the program code. Data Flow Analysis is applied to the special issues in designing test libraries that cover one hundred percent of data flows, testing asynchronous interactions, testing maintenance changes, and reverse engineering logical rules from code. Useful methods for scaffolding code-under-test will be taught, allowing all exception handling--even those functions invoked only by error conditions within hardware and operating system software--to be tested. Ultimately, the seminar will teach one how to combine data flow testing criteria with Requirements-Based Testing to eliminate all unnecessary operations.

Writing Testable Requirements

The greatest opportunity for improving the quality of software systems lies in the definition of system requirements. Inferior requirements significantly increase the cost of system development and project scheduling. SoftTest's Requirements-Based Testing approach provides a powerful, yet practical method for evaluating requirements specifications. This seminar provides a set of practical guidelines to ensure accurately written specifications. The course furnishes writing style guidelines for describing all types of processes and data, while ensuring the creation of a sufficient set of test cases to validate the system's functionality. Also addressed are topics such as compliance with common industry guidelines and the effect of automated repositories on requirements writing styles.

Course Objectives

Course Outline

Return to Listings