ELN5622 Embedded Systems Class 10 Spring, 2003 Aaron Itskovich

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
Test process essentials Riitta Viitamäki,
Lecture 8: Testing, Verification and Validation
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Software Failure: Reasons Incorrect, missing, impossible requirements * Requirement validation. Incorrect specification * Specification verification. Faulty.
T. E. Potok - University of Tennessee Software Engineering Dr. Thomas E. Potok Adjunct Professor UT Research Staff Member ORNL.
CS351 © 2003 Ray S. Babcock Software Testing What is it?
Documentation Testing
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Chapter 13 & 14 Software Testing Strategies and Techniques
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
System/Software Testing
Testing Overview. Why Test? Before you begin designing tests, it ’ s important to have a clear understanding of why you are testing In general, you test.
Chapter 9 Database Planning, Design, and Administration Sungchul Hong.
Software Testing. Recap Software testing – Why do we do testing? – When it is done? – Who does it? Software testing process / phases in software testing.
Dillon: CSE470: QUALITY ASSURANCE1 Software Qualities Maintainer User Customer Good Documentation Readable Code Good Design Low Cost Portability Increased.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
TESTING.
© 2012 IBM Corporation Rational Insight | Back to Basis Series Chao Zhang Unit Testing.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
CMSC 345 Fall 2000 Unit Testing. The testing process.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
Software testing basic. Main contents  Why is testing necessary?  What is testing?  Test Design techniques  Test level  Test type  How to write.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
Week 9 Data structures / collections. Vladimir Misic Week 9 Monday, 4:20:52 PM2 Data structures (informally:) By size: –Static (e.g. arrays)
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Chapter 8 Testing. Principles of Object-Oriented Testing Å Object-oriented systems are built out of two or more interrelated objects Å Determining the.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Testing and Quality Assurance 1. What is the objectives of Software Testing?
Software Quality Assurance and Testing Fazal Rehman Shamil.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
Testing Integral part of the software development process.
Software Testing. Software Quality Assurance Overarching term Time consuming (40% to 90% of dev effort) Includes –Verification: Building the product right,
Software Testing Strategies for building test group
Software Testing.
THE PROCESS OF EMBEDDED SYSTEM DEVELOPMENT
Verification and Testing
Chapter 13 & 14 Software Testing Strategies and Techniques
Lecture 09:Software Testing
Verification and Validation Unit Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Software testing.
Software visualization and analysis tool box
Chapter 10 – Software Testing
Baisc Of 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 Testing “If you can’t test it, you can’t design it”
Java & Testing.
Whitebox Testing.
CSE 1020:Software Development
Software Testing Strategies
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

ELN5622 Embedded Systems Class 10 Spring, 2003 Aaron Itskovich

Outlook  Testing, & Verification, Reliability  Test Plan Creation & Execution.  Relaiability & Correctness  Design for Test & Debugging  Testing (Yield, Field Return, Golden System, Coverage), JTAG

Why test?  To reduce risk to both user and company  To reduce development and maintenance cost  To improve performance  To find bugs in software and hardware

To Find the Bugs  Halting Theorem proves it’s impossible to prove that an arbitrary program is correct  Given the right test you can prove that a program is incorrect  Testing is not about proving “correctness” of a program but about finding bugs  The only way to “know” how many bugs left is to test it with carefully designed test plan  Known bug is already “half bug”

To reduce the risk and costs  Minimize risk to yourself, your company and your customers  Earlier you detect the problem cheaper the fix

Costs of bugs  In 1990 HP sampled the cost of errors in software development during the year. The answer $400 million, shocked HP into a completely new effort to eliminate mistakes in writing software. The $400 waste, half of ot spent in the labs on rework and half in the field to fix the mistakes that escaped from lab amounted to 1/3 of the company total R&D budget

How to make bug fixing cheaper?  If we can’t ensure correctness of the released system how to make bug fix cheaper?  Design system to be field upgradeable –Re-configurable hardware (FPGA) –Separate application software from boot –Use Flash or EEPROM as application storage

When to test?  As early as possible  Statistically about 70% of the bugs found during the integration phase of the project were generated by code that had never been exercised before

What tests?  Every time the program is modified, it should be retested to assure that the changes didn’t break some unrelated behavior - REGRESSION TESTING  Individual developers test at the module level by writing stub code to substitute for the rest of the system hardware and software – UNIT TESTINGH

Test case design  Functional testing (black box) –Can and should be written in parallel with the requirements document  Coverage testing (white box) –Coverage test implies that your code is stable  Both kind of testing are necessary to test rigorously your embedded design

A bit of history  The first known computer bug came about in 1946 when a primitive computer used by Navy to calculate the trajectories of artillery shells shut down when a moth got stuck in one of it’s computing elements, a mechanical relay. Hence, the name bug for computer error.

When to stop testing  When the boss says  When the new iteration of the test cycle founds fewer than X new bugs  When a certain coverage threshold has been met without uncovering any new bugs  In case your system is mission critical look into DO-178B specification.

Choosing Test Cases  Functional tests –Stress tests: test that intentionally overload input input channels, memory buffers… –Boundary value tests: Inputs that represent “boundaries”within particular rangeand input values that should case the output to transition across a similar boundary in the output range –Exception test: Test that should trigger a failure mode or exception mode –Error guessing: Test based on the prior experience with testing similar products –Random tests: Usually the least productive form of testing –Performance tests: Test that performance expectation from the requirements are met

Choosing Test Cases  Coverage tests –Statement coverage: Test cases selected because they execute every statement in the program at least once. –Decision or branch coverage: Test cases chosen because they cause every branch (both true and false path) to be executed at least once. –Condition coverage: Test cases chosen to force each condition (term) in decision to take on all possible logic values.

Practical alternatives  Gray box testing-what it is? –White box tests – expensive to maintain need to be reengineered every time code is changed –Gray box – exploit knowledge of implementation without being intimately tied to the coding details

Some distinguishers of the embedded system  Embedded system must run reliably without crashing for long periods of time.  Embedded software must often compensate for problems with the embedded hardware  Real world events are usually asynchronous and non deterministic, making simulations tests difficult and unreliable  Did you read software “license agreement”?

Measuring test coverage  Code instrumentation methods - aka Software logging –Printf: intrusive - slows down system –Low intrusion Printf –Usage of logic analyzer to measure coverage –Decision coverage (DC): measures results of decision points in the code –Modified decision coverage (MDC): One step farther than DC evaluates the terms that make up decision point.  Hardware instrumentation methods (logic analyzer, trace,

How to test performance

Manufacturing tests  Build in self test (BIST)  Test bed  Golden system concept  JTAG boundary scan  Yield  Field return  Fault correlation and root cause analyzes