Seattle Area Software Quality Assurance Group Acceptance Test Driven Development (ATDD) in Practice This one-day class covers the whole ATDD cycle, including.

Slides:



Advertisements
Similar presentations
Automating Software Module Testing for FAA Certification Usha Santhanam The Boeing Company.
Advertisements

© by cellconsult.com Application Testing & Test Management.
Testing Workflow Purpose
Test Yaodong Bi.
Designing Reusable Frameworks for Test Automation
Test-First Programming. The tests should drive you to write the code, the reason you write code is to get a test to succeed, and you should only write.
Test process essentials Riitta Viitamäki,
University of Toronto Minimization of Delay Sensitivity to Process Induced Vth Variations Georges Nabaa Farid N. Najm University of Toronto
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation (Adapted) Object-Oriented Systems Analysis and Design Joey F. George, Dinesh.
Robustness Evaluation and Tolerance Prediction for a Stamping Process with Springback Calculation by the FEM Matteo Strano Università di Cassino, Dip.
Testing and Quality Assurance
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 3: Input/output and co-processors dr.ir. A.C. Verschueren.
Testing and Debugging CS221 – 2/13/09. Airline Program.
SE 450 Software Processes & Product Metrics Reliability: An Introduction.
Aho-Corasick String Matching An Efficient String Matching.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
High Level: Generic Test Process (from chapter 6 of your text and earlier lesson) Test Planning & Preparation Test Execution Goals met? Analysis & Follow-up.
Introduction to Software Testing
Regression testing Tor Stållhane. What is regression testing – 1 Regression testing is testing done to check that a system update does not re- introduce.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Test Driven Development TDD. Testing ”Testing can never demonstrate the absence of errors in software, only their presence” Edsger W. Dijkstra (but it.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
TESTING.
Benefits of PL/SQL. 2 home back first prev next last What Will I Learn? In this lesson, you will learn to: –List and explain the benefits of PL/SQL –List.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
Software Engineering Chapter 23 Software Testing Ku-Yaw Chang Assistant Professor Department of Computer Science and Information.
Testing in Extreme Programming
 CS 5380 Software Engineering Chapter 8 Testing.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
1 Principles of Computer Science I Prof. Nadeem Abdul Hamid CSC 120 – Fall 2005 Lecture Unit 10 - Testing.
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Testing Workflow In the Unified Process and Agile/Scrum processes.
What is software testing? 1 What are the problems of software testing? 2 Time is limited Applications are complex Requirements are fluid.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
Software Construction Lecture 18 Software Testing.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005 MIS 161 Systems Development Life Cycle II Lecture 5: Testing User Documentation.
Chair of Software Engineering Exercise Session 6: V & V Software Engineering Prof. Dr. Bertrand Meyer March–June 2007.
Finding Errors in.NET with Feedback-Directed Random Testing Carlos Pacheco (MIT) Shuvendu Lahiri (Microsoft) Thomas Ball (Microsoft) July 22, 2008.
Directed Random Testing Evaluation. FDRT evaluation: high-level – Evaluate coverage and error-detection ability large, real, and stable libraries tot.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Winter 2007SEG2101 Chapter 121 Chapter 12 Verification and Validation.
Whole Test Suite Generation. Abstract Not all bugs lead to program crashes, and not always is there a formal specification to check the correctness of.
Random Test Generation of Unit Tests: Randoop Experience
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Week # 4 Quality Assurance Software Quality Engineering 1.
Introduction to Software Testing Maili Markvardt.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Test Granularities Unit Testing and Automation
Input Space Partition Testing CS 4501 / 6501 Software Testing
Applied Software Implementation & Testing
Discussion section #2 HW1 questions?
Introduction to Software Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
CS 1111 Introduction to Programming Fall 2018
Chapter 10 – Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Verification, Validation, and Acceptance Testing
Regression testing Tor Stållhane.
Open Source Tool Based Automation solution with Continuous Integration and end to end BDD Implementation Arun Krishnan - Automation Manager Maria Afzal-
Bringing more value out of automation testing
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Open Source Tool Based Automation solution with Continuous Integration and end to end BDD Implementation Arun Krishnan - Automation Manager Maria Afzal-
Presentation transcript:

Seattle Area Software Quality Assurance Group Acceptance Test Driven Development (ATDD) in Practice This one-day class covers the whole ATDD cycle, including Discussing the new feature or story, Distilling acceptance criteria into acceptance tests, Developing the feature and automating the acceptance tests, and Demonstrating the resulting feature to the business stakeholder(s) responsible for accepting it. Elisabeth HendricksonElisabeth Hendrickson has over 20 years software industry experience and has been working with Agile teams since

Keith Stobie

Lessons Learned in Software Testing Using Simple Oracles Test Case size and Known Errors Never be Gatekeeper – know release goals Testing Exception handling Alternatives to execution Testing Combinations

4

Test SquareRoot() function: 1. Assert(SquareRoot(X) == MySquareRoot(X)) 2. Assert(SquareRoot(X) == StdSquareRoot(X)) 3. Y := SquareRoot(X) Assert(X == Y*Y)

ACID Transaction Atomicity, Consistency, Isolation, Durability Over test: For each operation, repeat the same operation on a side test implementation. Test system must be as performant as Real system (to keep same level of concurrency)

Transfer $100 from checking to savings 1. Add money to savings or Remove from checking 2. Remove money from checking or Add to savings 2 Steps, both or neither must occur for consistency. Checking Savings $100 Checking Savings $

Maintain a consistency invariant outside of transactions (but violated inside) 1. Randomly choose first operation and value: Transfer Savings -> Checking 1, Choose last operation to keep balances /1,000 A. Add more: Savings -> Checking (2,000 total transfer) B. Add less : Checking -> Savings (1,000 total transfer)

Pros: Simple fast Check (can be made post production) Cons: Difficult Failure Diagnosis (just like with real customers) Related notions: Metamorphic testing Sampling & Consistency Oracles

Reuse existing test cases to generate more tests. (Existing tests as Oracles) MR: Any relation among the inputs and the outcomes of multiple executions of SUT. SqRt(X)*SqRt(Y) == SqRt(X*Y) Test 1: SqRt(9) == 3 Gen Test 2: SqRt(9)*SqRt(2) == SqrRt(9*2)

ShortestPath(G, a, b) find the shortest path between vertices a and b in graph G and also output its length, where G is an undirected graph with positive edge weights. (dijkstras algorithm)dijkstras algorithm Reverse: The shortest path between B and A should be the reverse of the shortest path between A and B. Prefix: For any vertix, V, on shortest path between vertices A and B, the Shortest path between A and V must be the same sequence as the start of the path between A and B.

Boyer-Moore algorithm returns the index of the first occurrence of a specified pattern within a given text. Boyer-Moore Metamorphic Relations Reverse: if string X exists in string Y, then the reverse of Y exists in the reverse of X.

Lessons Learned in Software Testing Using Simple Oracles Test Case size and Known Errors Never be Gatekeeper – know release goals Testing Exception handling Alternatives to execution Testing Combinations

Spec Explorer long test Ideal: Single test for all transitions in a model Pass/Fail test == Pass/Fail product Simplest way to design test cases is to fail fast. As soon as an error is detected, note the error and stop any further processing (Assert) Information loss when many Asserts. Symptom: Many blocking failures

Appropriately complex [Kaner 2003] Towards smaller tests: Fewer blocking failures (less dependency/commonality) Parallel execution. Test Prioritization for regression (running < whole set) Automatic Failure Analysis tools Towards larger tests: Reduced redundant setup/cleanup time Chance of inadvertently implementing a test idea that finds a bug. [Marick 2000] System medium-large? Integration medium Functional small-med Unit small

Lessons Learned in Software Testing Using Simple Oracles Test Case size and Known Errors Never be Gatekeeper – know release goals Testing Exception handling Alternatives to execution Testing Combinations

New Java Transaction Api (JTA) [Part of J2EE] Built on top of existing Transaction engine. 1 Week before Beta: Multi-threaded test Violated Isolation! (I in ACID) I and Dev mgr think must slip to fix Project Mgr understands meets release goals! Just document in release notes Set customer expectations

Lessons Learned in Software Testing Using Simple Oracles Test Case size and Known Errors Never be Gatekeeper – know release goals Testing Exception handling Alternatives to execution Testing Combinations

If (!ret) return ret;

Start Normal retrun Previous Return Exception Exception Normal return Previous Return Normal Exception Normal return

Start 2. Normal retrun Previous Return Exception 3. Exception 1. Exception Previous Return Normal 4. Exception 5. Normal retrun

Lessons Learned in Software Testing Using Simple Oracles Test Case size and Known Errors Never be Gatekeeper – know release goals Testing Exception handling Alternatives to execution Testing Combinations

Lessons Learned in Software Testing Using Simple Oracles Test Case size and Known Errors Never be Gatekeeper – know release goals Testing Exception handling Alternatives to execution Testing Combinations

In the code, the BypassProxyOnLocal property on the WebProxy object does not reflect the fact that it is checked

Visual Basic installation testing: 30% fewer test cases vs. minimal test suite created manually: 60 tests from PICT vs manual out of 200 possibilities (exhaustive). Testers had high confidence in quality 235 tests generated for a domain with over 1M possible combinations. All these tests implemented in less than one week; traditional methods: tests per week. An order of magnitude of a difference. Games testing: Asherons Call testing: the team was able to cut test resources by half due to use of PICT Vanguard testing: 4 man-months to build and implement test cases vs. 44 man-months during last release. Process more efficient by an order of magnitude Windows command-line tools testing: (findstr.exe &) Attrib.exe testing: 13 test cases generated by PICT achieved identical block coverage as 370 exhaustive test cases

Testing is a business activity with a cost. Understand the product and release goals, Deal with common issues like known errors, Anticipate likely errors Choose the right evaluation methods

Use Simple Oracles Allow for Known Errors Choose appropriately complex Test Case size Know release quality goals GateKeeeper Test Exception handling Consider Pairwise Testing of Combinations Consider Alternatives to Execution