Introduction to Software Testing Chapter 9.5 Input Space Grammars Paul Ammann & Jeff Offutt

Slides:



Advertisements
Similar presentations
C O N T E X T - F R E E LANGUAGES ( use a grammar to describe a language) 1.
Advertisements

1 Web Data Management XML Schema. 2 In this lecture XML Schemas Elements v. Types Regular expressions Expressive power Resources W3C Draft:
Black Box Testing Csci 565 Spring 2009.
Introduction to Software Testing Chapter 1 Paul Ammann & Jeff Offutt SUMMARY OF PARTS 1 AND 2 FROM LAST WEEK.
Introduction to Software Testing Chapter 2.6 Graph Coverage for Use Cases Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.2 Challenges in Testing Software – Software Testability Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 5.5 Input Space Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 2.6 Graph Coverage for Use Cases Paul Ammann & Jeff Offutt
Requirements and Design
1 Introduction to Computability Theory Lecture12: Decidable Languages Prof. Amos Israeli.
PZ02A - Language translation
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
Introduction to Software Testing Chapter 9.1 Syntax-based Testing Paul Ammann & Jeff Offutt
Software Testing Prasad G.
Introduction to Software Testing Chapter 5.2 Program-based Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 5.5 Input Space Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.4 Model-Based Grammars Paul Ammann & Jeff Offutt
XML-based Testing of Web Software Services Joint research with Wuxhi Xu, Juan Luo and Suet Chun Lee Jeff Offutt Software Engineering George Mason University.
Why XML ? Problems with HTML HTML design - HTML is intended for presentation of information as Web pages. - HTML contains a fixed set of markup tags. This.
Dr. Azeddine Chikh IS446: Internet Software Development.
CMSC 345 Fall 2000 Unit Testing. The testing process.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 6 Slide 1 Requirements Engineering Processes l Processes used to discover, analyse and.
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
New Perspectives on XML, 2nd Edition
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
Black Box Testing Techniques Chapter 7. Black Box Testing Techniques Prepared by: Kris C. Calpotura, CoE, MSME, MIT  Introduction Introduction  Equivalence.
Introduction to Software Testing Chapter 5.1 Syntax-based Testing Paul Ammann & Jeff Offutt
XML 2nd EDITION Tutorial 4 Working With Schemas. XP Schemas A schema is an XML document that defines the content and structure of one or more XML documents.
1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary.
Tutorial 13 Validating Documents with Schemas
Introduction to Parsing
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
Introduction to Software Testing Chapters 1-5 Coverage Summary Paul Ammann & Jeff Offutt
Software Testing and Quality Assurance Practical Considerations (4) 1.
© SERG Dependable Software Systems Topics in Syntax Testing Material drawn from [Beizer]
Introduction to Software Testing Paul Ammann & Jeff Offutt Updated 24-August 2010.
1 Graph Coverage (6). Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Section
Software Testing Syntax-based Testing. Syntax Coverage Four Structures for Modeling Software Graphs Logic Input Space Syntax Use cases Specs Design Source.
Introduction to Software Testing Chapter 9.2 Program-based Grammars Paul Ammann & Jeff Offutt
1Computer Sciences Department. Book: INTRODUCTION TO THE THEORY OF COMPUTATION, SECOND EDITION, by: MICHAEL SIPSER Reference 3Computer Sciences Department.
Introduction to Software Testing (2nd edition) Chapter 4 Putting Testing First Paul Ammann & Jeff Offutt August.
Introduction to Software Testing Chapter 3.4 Logic Coverage for Specifications Paul Ammann & Jeff Offutt
Testing Web Services by XML Perturbation Joint research with Wuzhi Xu and Juan Luo Jeff Offutt Information & Software Engineering George Mason University.
Text2PTO: Modernizing Patent Application Filing A Proposal for Submitting Text Applications to the USPTO.
Is Mutation Analysis Ready for Prime Time? Jeff Offutt George Mason University Based on the book Introduction.
Software Testing and Quality Assurance Syntax-Based Testing (2) 1.
Introduction to Software Testing (2nd edition) Chapter 5 Criteria-Based Test Design Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.2 Program-based Grammars
Paul Ammann & Jeff Offutt
Syntax-based Testing CS 4501 / 6501 Software Testing
Introduction to Software Testing Chapter 5.1 Syntax-based Testing
Unit# 8: Introduction to Computer Programming
Introduction to Software Testing Chapter 9.2 Program-based Grammars
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 5.2 Program-based Grammars
Test Driven Lasse Koskela Chapter 9: Acceptance TDD Explained
Paul Ammann & Jeff Offutt
Graph Coverage for Specifications CS 4501 / 6501 Software Testing
Paul Ammann & Jeff Offutt
Software Testing Syntax-based Testing.
Managing the Test Process CS 4501 / 6501 Software Testing
Introduction to Software Testing Chapter 5.1 Syntax-based Testing
Chapter 10: Compilers and Language Translation
Paul Ammann & Jeff Offutt
Input Data Validation for Web Applications
Presentation transcript:

Introduction to Software Testing Chapter 9.5 Input Space Grammars Paul Ammann & Jeff Offutt

© Ammann & Offutt 2 Input Space Grammars The input space can be described in many ways – User manuals – Unix man pages – Method signature / Collection of method preconditions – A language Most input spaces can be described as grammars Grammars are usually not provided, but creating them is a valuable service by the tester – Errors will often be found simply by creating the grammar Input Space The set of allowable inputs to software Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 3 Using Input Grammars Software should reject or handle invalid data Programs often do this incorrectly Some programs (rashly) assume all input data is correct Even if it works today … – What about after the program goes through some maintenance changes ? – What about if the component is reused in a new program ? Consequences can be severe … – The database can be corrupted – Users are not satisfied – Many security vulnerabilities are due to unhandled exceptions … from invalid data Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 4 Validating Inputs Before starting to process inputs, wisely written programs check that the inputs are valid How should a program recognize invalid inputs ? What should a program do with invalid inputs ? If the input space is described as a grammar, a parser can check for validity automatically – This is very rare – It is easy to write input checkers—but but also easy to make mistakes Input Validation Deciding if input values can be processed by the software Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 5 Instantiating Grammar-Based Testing Grammar-Based Testing Program-basedIntegrationModel-BasedInput-Based Compiler testing Valid and invalid strings Grammar String mutation Program mutation Valid strings Mutants are not tests Must kill mutants Input validation testing XML and others Valid strings Grammar Test how classes interact Valid strings Mutants are not tests Must kill mutants Includes OO String mutation FSMs Model checking Valid strings Traces are tests String mutation Input validation testing XML and others Invalid strings No ground strings Mutants are tests String mutation 9.5 Introduction to Software Testing, edition 2 (Ch 9)

Input Space BNF Grammars (9.5.1) Input spaces can be expressed in many forms A common way is to use some form of grammar We will look at three grammar-based ways to describe input spaces 1.Regular expressions 2.BNF grammars 3.XML and Schema All are similar and can be used in different contexts Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 6

7 Regular Expressions Consider a program that processes a sequence of deposits and debits to a bank Inputs deposit 5306 $4.30 debit 0343 $4.14 deposit 5306 $7.29 Initial Regular Expression (deposit account amount | debit account amount) * Ready deposit debit FSM to represent the grammar Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 8 BNF Grammar for Bank Example Grammars are more expressive than regular expressions–they can capture more details bank ::= action* action ::= dep | deb dep ::= “deposit” account amount deb ::= “debit” account amount account ::= digit 4 amount ::= “$” digit + “.” digit 2 digit ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9” Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 9 FSM for Bank Grammar Derive tests by systematically replacing each non-terminal with a production If the tester designs the grammar from informal input descriptions, do it early – In time to improve the design – Mistakes and omissions will almost always be found deposit debit digit “.” digit $ Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 10 XML Can Describe Input Spaces Software components that pass data must agree on format, types, and organization Web applications have unique requirements : – Very loose coupling and dynamic integration 1970s style P1P2 File File storage Un-documented format Data saved in binary mode Source not available 1980s style P1P2 File WM File storage Un-documented format Data saved as plain text Access through wrapper module Data hard to validate Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 11 XML in Very Loosely Coupled Software Data is passed directly between components XML allows data to be self-documenting P1, P2 and P3 can see the format, contents, and structure of the data Data sharing is independent of type Format is easy to understand Grammars are defined in DTDs or Schemas 2000s style Schema P1 P2 Parser XML File P3 Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 12 XML for Book Example XML messages are defined by grammars – Schemas and DTDs Schemas can define many kinds of types Schemas include “facets,” which refine the grammar The Art of Software Testing Glen Myers Wiley Introduction to Software Testing, edition 2 (Ch 9) schemas define input spaces for software components

Representing Input Domains Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 13 goal Desired inputs (goal domain) specified Described inputs (specified domain) implemented Accepted inputs (implemented domain)

Example Input Domains Goal domains are often irregular Goal domain for credit cards † – First digit is the Major Industry Identifier – First 6 digits and length specify the issuer – Final digit is a “check digit” – Other digits identify a specific account Common specified domain – First digit is in { 3, 4, 5, 6 } (travel and banking) – Length is between 13 and 16 Common implemented domain – All digits are numeric Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 14 † More details are on :

Representing Input Domains Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 15 goal goal domain specified specified domain implemented implemented domain This region is a rich source of software errors …

Using Grammars to Design Tests This form of testing allows us to focus on interactions among the components – Originally applied to Web services, which depend on XML A formal model of the XML grammar is used The grammar is used to create valid as well as invalid tests The grammar is mutated The mutated grammar is used to generate new XML messages The XML messages are used as test cases Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 16

© Ammann & Offutt 17 Book Grammar – Schema Introduction to Software Testing, edition 2 (Ch 9) Built-in types

XML Constraints – “Facets” Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 18 Boundary Constraints Non-boundary Constraints maxOccursenumeration minOccursuse lengthfractionDigits maxExclusivepattern maxInclusivenillable maxLengthwhiteSpace minExclusiveunique minInclusive minLength totalDigits

Generating Tests Valid tests – Generate tests as XML messages by deriving strings from grammar – Take every production at least once – Take choices … “maxOccurs = “unbounded” means use 0, 1 and more than 1 Invalid tests – Mutate the grammar in structured ways – Create XML messages that are “almost” valid – This explores the gray space on the previous slide Introduction to Software Testing, edition 2 (Ch 9) © Ammann & Offutt 19

© Ammann & Offutt 20 Generating Tests The criteria in section can be used to generate tests – Production and terminal symbol coverage The only choice in the books grammar is based on “minOccurs” PC requires two tests – ISBN is present – ISBN is not present The facets are used to generate values that are valid – We also want values that are not valid … Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 21 Mutating Input Grammars (9.5.2) Software should reject or handle invalid data A very common mistake is for programs to do this incorrectly Some programs (rashly) assume that all input data is correct Even if it works today … – What about after the program goes through some maintenance changes ? – What about if the component is reused in a new program ? Consequences can be severe … – Most security vulnerabilities are due to unhandled exceptions … from invalid data To test for invalid data (including security testing), mutate the grammar Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 22 Mutating Input Grammars Mutants are tests Create valid and invalid strings No ground strings – no killing Mutation operators listed here are general and should be refined for specific grammars Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 23 Input Grammar Mutation Operators Every nonterminal symbol in a production is replaced by other nonterminal symbols 1. Nonterminal Replacement Every terminal symbol in a production is replaced by other terminal symbols 2. Terminal Replacement Every terminal and nonterminal symbol in a production is deleted 3. Terminal and Nonterminal Deletion Every terminal and nonterminal symbol in a production is duplicated 4. Terminal and Nonterminal Duplication Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 24 Mutation Operators Many strings may not be useful Use additional type information, if possible Use judgment to throw tests out Only apply replacements if “they make sense” Examples … Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 25 Nonterminal Replacement dep ::= “deposit” account amount dep ::= “deposit” amount amount dep ::= “deposit” account digit deposit $ $ deposit Terminal Replacement amount ::= “$” digit + “.” digit 2 amount ::= “.” digit + “.” digit 2 amount ::= “$” digit + “$” digit 2 amount ::= “$” digit + “1” digit 2 deposit deposit 4400 $1500$00 deposit 4400 $ Terminal and Nonterminal Deletion dep ::= “deposit” account amount dep ::= account amount dep ::= “deposit” amount dep ::= “deposit” account 4400 $ deposit $ deposit 4400 deposit deposit 4400 $ deposit $ deposit 4400 $ $ Introduction to Software Testing, edition 2 (Ch 9) Terminal and Nonterminal Duplication dep ::= “deposit” account amount dep ::= “deposit” “deposit” account amount dep ::= “deposit” account account amount dep ::= “deposit” account amount amount

© Ammann & Offutt 26 Notes and Applications We have more experience with program-based mutation than input grammar based mutation – Operators are less “definitive” Applying mutation operators – Mutate grammar, then derive strings – Derive strings, mutate a derivation “in-process” Some mutants give strings in the original grammar (equivalent) – These strings can easily be recognized to be equivalent Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 27 Mutating XML XML schemas can be mutated If a schema does not exist, testers should derive one – As usual, this will help find problems immediately Many programs validate messages against a grammar – Software may still behave correctly, but testers must verify Programs are less likely to check all schema facets – Mutating facets can lead to very effective tests Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 28 Test Case Generation – Example Original Schema (Partial) Mutants : value = “3” value = “1” Mutants : value = “100” value = “2000” XML from Original Schema Mutant XML Mutant XML Mutant XML Mutant XML Introduction to Software Testing, edition 2 (Ch 9)

© Ammann & Offutt 29 Input Space Grammars Summary This application of mutation is fairly new Automated tools do not exist Can be used by hand in an “ad-hoc” manner to get effective tests Applications to special-purpose grammars very promising – XML – SQL – HTML Introduction to Software Testing, edition 2 (Ch 9)