(some of) My Research Engineering is about getting technology to do what it does well so humans can do what they do well Jeff Offutt Professor of Software.

Slides:



Advertisements
Similar presentations
Requirements for a UI Test Framework Stanislaw Wozniak Bernie Miles.
Advertisements

Introduction to Software Testing Chapter 1 Model-Driven Test Design Paul Ammann & Jeff Offutt
Model-Driven Test Design Based on the book by Paul Ammann & Jeff Offutt Jeff Offutt Professor, Software Engineering.
Of 23 Generating Automated Tests from Behavioral Models Jeff Offutt (Research with Dr. Nan Li, currently with MediData Solutions) Software Engineering.
Introduction to Software Testing Chapter 9.3 Challenges in Testing Software Test Criteria and the Future of Testing Paul Ammann & Jeff Offutt
Of 46 How To Teach Testing Based on the book Introduction to Software Testing with Paul Ammann Jeff Offutt Professor,
1 Basic Definitions: Testing What is software testing? Running a program In order to find faults a.k.a. defects a.k.a. errors a.k.a. flaws a.k.a. faults.
Introduction to Software Testing (2nd edition) Chapter 1 Why Do We Test Software? Paul Ammann & Jeff Offutt
1 SWE Introduction to Software Engineering Lecture 28 – Introduction to Software Testing.
Lecture 1: Introduction.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
Introduction to Software Testing Paul Ammann & Jeff Offutt Updated 24-August 2010.
Introduction to Software Testing Chapter 9.3 Challenges in Testing Software Test Criteria and the Future of Testing Paul Ammann & Jeff Offutt
Sep 13, 2006 Scientific Computing 1 Managing Scientific Computing Projects Erik Deumens QTP and HPC Center.
Testing. Today’s Topics Why Testing? Basic Definitions Kinds of Testing Test-driven Development Code Reviews (not testing) 1.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois
Introduction to Software Testing Why Do We Test Software? Dr. Pedro Mejia Alvarez From Book: Introduction to Software Testing, P.Ammann&J.Offutt.
Why Are My Tests Dumb? Jeff Offutt George Mason University.
Introduction to Software Testing Model-Driven Test Design and Coverage testing Paul Ammann & Jeff Offutt Update.
1 Chapter 1- Introduction How Bugs affect our lives What is a Bug? What software testers do?
Software Testing and Quality Assurance Practical Considerations (1) 1.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Introduction to Software Testing (2nd edition) Chapter 5 Criteria-Based Test Design Paul Ammann & Jeff Offutt
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVIII. Software Testing.
Software Engineering Experimentation
Testing Your Program: Input Space Partitioning
What is Software Engineering?
COTS testing Torbjørn Skramstad.
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Module A Fundamentals of Testing
Regression Testing with its types
Testing Tutorial 7.
Why study Software Design/Engineering ?
Generating Automated Tests from Behavior Models
Software Testing Introduction CS 4501 / 6501 Software Testing
Stable and reliable Web Automation
Test Automation CS 4501 / 6501 Software Testing
Designing For Testability
Software Testing An Introduction.
Paul Ammann & Jeff Offutt
Coverage-Based Test Design CS 4501 / 6501 Software Testing
Automated Pattern Based Mobile Testing
Jeff Offutt SWE 637 Software Testing
Beyond Test Automation (Why Are My Tests Dumb?)
Software Testing and Maintenance Introduction
Paul Ammann & Jeff Offutt
A Model Based Path Selection Testing on Mobile Apps using TABU Monitored Hybrid Local Search Optimizations Main Paper Akhil Yendluri.
Introduction to Software Testing Chapter 2 Model-Driven Test Design
It is great that we automate our tests, but why are they so bad?
The Top 10 bugs
From Spec-based Testing to Test Automation and Beyond
Introduction to Software Testing
Introduction to Software Testing
Software Testing and Maintenance Maintenance and Evolution Overview
Test Automation CS 4501 / 6501 Software Testing
Jeff Offutt SWE 637 Software Testing
Software Verification, Validation, and Acceptance Testing
A Test Automation Language for Behavioral Models
Scriptless Test Automation through Graphical User Interface
Test Cases, Test Suites and Test Case management systems
Review for Final – Spring 2018
Review for Final – Spring 2019
Chapter 10: Testing and Quality Assurance
Software Engineering Experimentation
Presentation transcript:

(some of) My Research Engineering is about getting technology to do what it does well so humans can do what they do well Jeff Offutt Professor of Software Engineering https://www.cs.gmu.edu/~offutt/

Software is the nervous system of our civilization Quote partially due to Dr. Mark Harman CS 700 September 2018 Jeff Offutt

Spectacular software failures NASA’s Mars lander : September 1999, crashed due to a units integration fault Ariane 5: exception-handling bug : forced self destruct on maiden flight (64-bit to 16-bit conversion: about 370 million $ lost) Mars Polar Lander crash site? Toyota brakes : Dozens dead, thousands of crashes Major failures : Ariane 5 explosion, Financial engines, Intel’s Pentium FDIV bug Poor testing of safety-critical software can kill : THERAC-25 radiation machine: 3 dead THERAC-25 design Northeast blackout : 50 million people, $6 billion USD lost … alarm system failed Software testers try to find faults before the faults find users CS 700 September 2018 Jeff Offutt

What is testing & why is it hard? A program can have quadrillions of inputs. And will work correctly on most! If a million inputs trigger the fault. Only .00000000025 chance of finding it randomly ... Software testers design test inputs to trigger faults before they get to users CS 700 September 2018 Jeff Offutt

Unit testing saves a LOT of money Cost of testinglate 60 50 Fault origin (%) Detected (%) Unit cost (X) 40 30 20 10 Requirements Design Prog / Unit Test Integration Test System Test Post-Deployment 28-Oct-2010, at GTAC, added the animation to demonstrate increasing the number of faults found early, thereby decreasing the number of faults found late, and finally saving money. Lots of it! This animation is fairly complicated … must practice first!! Unit testing saves a LOT of money CS 700 September 2018 Jeff Offutt

What do testing researchers do? Software testing researchers invent clever ways to design inputs that will find software faults Build software tools to create tests Run experiments to find out how well the testing ideas work Tell industry how to use the ideas Teach students – the next generation of software testers CS 700 September 2018 Jeff Offutt

A few recent PhD students Towards automatically localizing and repairing SQL faults, 2018, Cvent Generating cost-effective criteria-based tests from behavioral models, 2014, Medidata Solutions Mutation testing for android apps, 2017, Towson University Towards evasive attacks: Anomaly detection resistance analysis on the Internet, 2013, Intuit Testing web applications with mutation analysis, 2017, University of Virginia Testability of dynamic real-time systems, 2009, University of Skövde CS 700 September 2018 Jeff Offutt

Model-based testing process Test criterion Test requirements (subpaths) Abstract tests (test paths) Concrete tests Test oracles Model Criterion Test Requirements Abstract Tests Concrete Tests Extra Info Test Execution Test Reports CS 700 September 2018 Jeff Offutt

Test oracle strategies 28,881,000 test executions % faults found that the oracle revealed More precise OSes are not always more effective CS 700 September 2018 Jeff Offutt

Test oracle strategy findings Crash testing (NOS) wastes testing effort Penny wise, pound foolish We should check state invariants (SIOS) Only one check needed Can be partially derived automatically from the model A lot of JUnit test assertions are broken—they do not check the right thing Joint work with Dr. Nan Li CS 700 September 2018 Jeff Offutt

Current research—smart tests Old style tests Values invented by humans Scripts were pieces of paper with steps Turn on computer Type : “Run myProgram” Enter name : “George P. Burdell” Enter age : “-25” Simple directions to humans Slow! Error prone! Limited repeatability! These tests are as dumb as single-cell organisms !! Almost impossible to use test criteria CS 700 September 2018 Jeff Offutt

These multi-cellular tests show the first signs of intelligence! Modern dumb tests Test values Created by a mix of humans and test data generators Satisfy well-documented goals, test criteria, or specialized domain needs Integrated into automated test scripts (eg, JUnit) Includes a small amount of brain power … these tests know what results to expect (eg, JUnit assertions) Fast … repeatable … These multi-cellular tests show the first signs of intelligence! CS 700 September 2018 Jeff Offutt

But this test does not know … Multicellular tests But this test does not know … Test values Expected results Before values After values Why is it there? When should it run? When should it change? When should it die? CS 700 September 2018 Jeff Offutt

Self-awareness Self-determination Intelligent tests Each test should encode traceability … what it covers Tests should check what has changed, and rerun if necessary Tests should alert tester when they no longer match the software Tests should quietly go away when no longer needed CS 700 September 2018 Jeff Offutt

https://cs.gmu.edu/~offutt/ Google’s motto Debugging sucks Testing rocks Jeff Offutt https://cs.gmu.edu/~offutt/ CS 700 September 2018 Jeff Offutt