| Preface | p. vii |
| Acknowledgments | p. ix |
| Introduction | p. 1 |
| The Need for Testing | p. 1 |
| Why Does Software have Errors? | p. 2 |
| Software Testing Definitions | p. 3 |
| Software Errors, Faults and Failures | p. 3 |
| Software Testing | p. 3 |
| When Should Testing Start in the Software Lifecycle? | p. 5 |
| Types of Testing Techniques | p. 6 |
| UML | p. 7 |
| Formal Specification Languages | p. 8 |
| Current Testing Technologies and Tools | p. 8 |
| Types of Automated Testing Tools | p. 8 |
| Design and Visual Modeling Tools | p. 9 |
| Automated Testing Tools | p. 10 |
| Disadvantage of Record and Playback Test Automation Tools | p. 12 |
| Related Literature | p. 13 |
| AGENDA; A Test Generator for Database Applications | p. 14 |
| Executable Software Specifications | p. 14 |
| Objectives of this Book | p. 15 |
| SpecDB: A Database Design for Software Specifications | p. 21 |
| Introduction | p. 21 |
| The Advantages of a Database Representation of Specifications | p. 22 |
| The Specification Database Design: SpecDB | p. 23 |
| Entities for Specific Software Requirements | p. 24 |
| Operator and Valid Operands | p. 24 |
| List_of_Tables and Table Descriptions | p. 28 |
| Types, Types_LOV and Type Restrictions | p. 29 |
| Variables and Restrictions on Variable Values | p. 32 |
| Procedure, Function, and Subroutine Descriptions | p. 36 |
| Subroutine Parameters and Post-Conditions | p. 38 |
| Dataflow, Triggers and Input/Output Definitions | p. 42 |
| Assignment and Calculation | p. 45 |
| Predicate | p. 48 |
| Database Operations | p. 50 |
| Classes, Objects and Class Relations | p. 54 |
| Conclusion | p. 55 |
| Other SpecDB Entities | p. 57 |
| Representing Formal Specifications in SpecDB: A Translation Algorithm | p. 63 |
| A Translation Algorithm from Formal Specifications to SpecDB | p. 63 |
| Assumptions and Restrictions | p. 64 |
| Preparing for Translation | p. 65 |
| Storing Formal Specifications | p. 65 |
| Defining Schema Names and Operations | p. 65 |
| Types of Schemas | p. 66 |
| User-Defined Types | p. 67 |
| Specifying Values for a User-Defined Type | p. 67 |
| Defining Sets or Tables | p. 68 |
| Function Declaration | p. 69 |
| Subroutine Input Restriction | p. 69 |
| Variable Definition and Subroutine Inputs | p. 70 |
| Output Definition | p. 71 |
| Setting Variable Restrictions | p. 72 |
| Assignment Operation | p. 73 |
| Assignment Operation and Function Call | p. 74 |
| Assignment Operation for Sets | p. 75 |
| Assignment Operation for a Set | p. 76 |
| Inserting Records in the Database | p. 76 |
| Output Table Definition | p. 77 |
| Assigning a Variable to a Calculation | p. 78 |
| Constraining the Values Populating a Table or Set | p. 79 |
| Conclusion | p. 81 |
| An Automated Constraint Generator | p. 83 |
| The Design of Additional Tables in SpecDB | p. 84 |
| Using List_of_Tables and Table_Description | p. 85 |
| Adding the Constraints Table to SpecDB and Using the Predicate Table | p. 87 |
| Other Tables from SpecDB, Type_Excluded_Ranges and Types_LOV | p. 90 |
| Generating Database-Level Constraints | p. 91 |
| Generating Simple Static Constraints: The Algorithm | p. 91 |
| Enforcing Complex Dynamic Business Rules | p. 95 |
| Conclusion | p. 97 |
| A Reverse Engineering Testing Tool | p. 99 |
| Technique | p. 100 |
| Input and Pre-Condition Classification and Categorization | p. 101 |
| Output and Post-Condition Classification and Categorization | p. 104 |
| Case Study | p. 106 |
| Problem Statement for the Vacation Salesman Commission Program | p. 107 |
| Implementation | p. 107 |
| Program Graph for the Salesman Commission Problem | p. 110 |
| DD-Path Graph for the Salesman Commission Problem | p. 110 |
| Examples | p. 111 |
| Test Case 1 | p. 113 |
| Test Case 2 | p. 120 |
| Test Case 3 | p. 122 |
| Conclusion | p. 124 |
| Enhancing Other Testing Tools Using SpecDB | p. 125 |
| Using the SpecDB Database to Expand the Testing Domain | p. 125 |
| Enhancing State Validation Tools | p. 128 |
| Expanding the Testing Scope Beyond Variables and Database States | p. 129 |
| Testing Different Operation Types | p. 129 |
| Conclusion | p. 130 |
| Conclusion and Future Work | p. 131 |
| A Comparison Between Testing Tools | p. 131 |
| Test Cases and Scenarios | p. 132 |
| Comparing the Ability of Testing Tools to Identify Errors | p. 134 |
| Book Concepts at a Glance | p. 135 |
| Conclusion and Recommendations | p. 136 |
| Future Work at a Glance | p. 138 |
| SQL Scripts for SpecDB Constraints | p. 143 |
| PL/SQL Constraint Generator Code | p. 173 |
| Table of Contents provided by Ingram. All Rights Reserved. |