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.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

Lecture 8: Testing, Verification and Validation
SOFTWARE TESTING. Software Testing Principles Types of software tests Test planning Test Development Test Execution and Reporting Test tools and Methods.
DETAILED DESIGN, IMPLEMENTATIONA AND TESTING Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
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 Testing.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
Program Testing Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Illinois Institute of Technology
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
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.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Testing Dr. Andrew Wallace PhD BEng(hons) EurIng
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.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
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.
CS1: chr, jeh, & Testing vs. Debugging Testing finds problems –Unit test –Integration test –System test Debugging finds and fixes causes.
Lecture 11 Testing and Debugging SFDV Principles of Information Systems.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Software Testing Testing types Testing strategy Testing principles.
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Neil Ghani Software testing. 2 Introduction In a perfect world all programs fully verified testing thus redundant Back in the real.
计算机科学概述 Introduction to Computer Science 陆嘉恒 中国人民大学 信息学院
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005 MIS 161 Systems Development Life Cycle II Lecture 5: Testing User Documentation.
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.
Testing, Testing & Testing - By M.D.ACHARYA QA doesn't make software but makes it better.
Software Testing and Quality Assurance 1. What is the objectives of Software Testing?
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Software Testing Mehwish Shafiq. Testing Testing is carried out to validate and verify the piece developed in order to give user a confidence to use reliable.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
October 21, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser
CSC 395 – Software Engineering Lecture 27: White-Box Testing.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
ANOOP GANGWAR 5 TH SEM SOFTWARE TESTING MASTER OF COMPUTER APPLICATION-V Sem.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
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.
ISQB Software Testing Section Meeting 10 Dec 2012.
Software Testing Strategies for building test group
Software Testing.
Rekayasa Perangkat Lunak Part-13
Chapter 9, Testing.
Software Engineering (CSI 321)
Verification and Testing
Software engineering – 1
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Verification and Validation Unit Testing
Static Testing Static testing refers to testing that takes place without Execution - examining and reviewing it. Dynamic Testing Dynamic testing is what.
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 Testing “If you can’t test it, you can’t design it”
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software Testing.
Presentation transcript:

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 you see it

Good Quality Software Has… Understandability –The ability of a reader of the software to understand its function –Critical for maintenance Modifiability –The ability of the software to be changed by that reader –Almost defines "maintainability"

Good Quality Software Has… Reliability –The ability of the software to perform as intended without failure –If it isn't reliable, the maintainer must fix it Efficiency –The ability of the software to operate with minimal use of time and space resources –If it isn't efficient, the maintainer must improve it

Good Quality Software Has… Testability –The ability of the software to be tested easily –Finding/fixing bugs is part of maintenance –Enhancements/additions must also be tested Usability –The ability of the software to be easily used (human factors) –Not easily used implies more support calls, enhancements, corrections

Good Quality Software Has… Portability –The ease with which the software can be made useful in another environment –Porting is usually done by the maintainer Notice all related to maintenance but these qualities need to be instilled during development

Why Test? No matter how well software has been designed and coded, it will inevitably still contain defects Testing is the process of executing a program with the intent of finding faults (bugs) A successful test is one that finds errors, not one that doesnt find errors

Why Test? Testing can prove the presence of faults, but can not prove their absence But can increase confidence that a program works

What to Test? Unit test – test of small code unit: file, class, individual method or subroutine Integration test – test of several units combined to form a (sub)system, preferably adding one unit at a time System (alpha) test – test of a system release by independent system testers Acceptance (beta) test – test of a release by end-users or their representatives

When to Test? Early Agile programming developers write unit test cases before coding each unit Many software processes involve writing (at least) system/acceptance tests in parallel with development Often Regression testing: rerun unit, integration and system/acceptance tests –After refactoring –Throughout integration –Before each release

Defining a Test Goal – the aspect of the system being tested Input – specify the actions and conditions that lead up to the test as well as the input (state of the world, not just parameters) that actually constitutes the test Outcome – specify how the system should respond or what it should compute, according to its requirements

Test Harness (Scaffolding) Driver - supporting code and data used to provide an environment for invoking part of a system in isolation Stub - dummy procedure, module or unit that stands in for another portion of a system, intended to be invoked by that isolated part of the system –May consist of nothing more than a function header with no body –If a stub needs to return values, it may read and return test data from a file, return hard- coded values, or obtain data from a user (the tester) and return it

Unit Testing

Unit Testing Overview Unit testing is testing some program unit in isolation from the rest of the system Usually the programmer is responsible for testing a unit during its implementation Easier to debug when a test finds a bug (compared to full-system testing)

Unit Testing Strategies Black box (specification-based) testing White box (program-based) testing, aka glass-box Normally perform both (not alternatives!)

White Box Testing Test suite constructed by inspecting the program (code) Look at specification (requirements, design, etc.) only to determine what is an error Attempt to exercise all statements, all branches, or all paths (control flow and/or data flow) Intuition: If you never tested that part of the code, how can you have any reason to believe that it works?

Whitebox Approaches to Unit Testing 1.Execute all (reachable) statements 2.Execute all branches of logical decisions, including boundaries of loops 3.Execute all (feasible) control flow paths in combination 4.Execute all data flow paths (from each variable definition to all its uses) Usually applied only to individual subroutines rather than larger unit (due to combinatorics)

Example Consider a function that takes as input a string assumed to be a URL and checks to see if it contains any characters that are illegal Illegal URL characters are control characters (ascii 0-31, 127), space (ascii 32), and delimiter characters (">", "<", "#", "%", and the double quote character) The function returns true if the URL is valid (does not contain an illegal character), and false if the URL is invalid (contains an illegal character)

public boolean isLegalURL (String url) { char c; boolean valid = true; int i = 0; while (i < url.length() && valid) { c = url.charAt(i); if (c >= 0 && c <= 32) valid = false; else { switch (c) { case '>': valid = false; case '<': valid = false; case '#': valid = false; case '%': valid = false; case '\': valid = false; } return valid; }

Black Box Testing Test suite constructed by inspecting the specification (requirements, design, etc.), not the source code Tests unit against functional and, sometimes, extra-functional specifications (e.g., resource utilization, performance, security) Attempts to force behavior (outcome) that doesn't match specification

Blackbox Approaches to Unit Testing Functional testing – exercise code with valid or nearly valid input for which the expected outcome is known (outcome includes global state and exceptions as well as output) Exhaustive testing usually infeasible, so need way(s) to select test cases and determine when done testing Choose test cases to attempt to find different faults –Equivalence partitioning –Boundary value analysis

Equivalence Partitioning Assume similar inputs will evoke similar responses Equivalence class is a related set of valid or invalid values or states Only one or a few examples are selected to represent an entire equivalence class Good for basic functionality testing

Equivalence Partitioning Divide input domain into equivalence classes Divide outcome domain into equivalence classes –Need to determine inputs to cover each output equivalence class –Also attempt to cover classes of errors, exceptions and external state changes

Boundary Value Analysis Consider input values that are between different expectations of functionality –Sometimes called corner cases Programmers tend to make common errors –Off-by-one –< instead of <=

Example A student must be registered for at least 12 points to be considered full-time –Full-time: some number 12 or greater –Not full-time: some number less than 12 The method isFullTime takes an int and returns a boolean What inputs should we use to test it?

Another Example The function stringSqrRoot takes a String as input, converts it to a number, and returns that numbers square root It throws an exception if the String is not numeric What inputs should we use to test it?

Automated Testing Testing by hand is tedious, slow, error- prone and not fun Computers are much less easily bored than people So write code to test your code!

Automated Testing Write code to set up the unit, call its methods with test inputs, and compare the results to the known correct answers Once tests are written, they are easy to run, so you are much more likely to run them JUnit is a commonly used tool for testing

Unit Testing Summary Unit testing is testing some program unit in isolation from the rest of the system Usually the programmer is responsible for testing a unit during its implementation Strategies: –Black box (specification-based) testing –White box (program-based) testing Normally perform both (not alternatives!)

Integration Testing

Performed after all units to be integrated have passed all black box unit tests Reuse unit test cases that cross unit boundaries (that previously required stub(s) and/or driver standing in for another unit) White box testing might be combined with integration as well as unit testing (tracking coverage)

Example: Two Units readFile getCharacterFreq String String[]String Frequency[]

Example: Integration Testing readFile getCharacterFreq String String[]String Frequency[] for each

System/Acceptance Testing

Also known as user testing All units in the system are combined into the final program/application Ensure that the system works the way that the user expects, i.e. that it meets the user specifications for functionality

System/Acceptance Testing Usually difficult to automatically mimic users input (keyboard, GUI, etc.) Requires human users to try different input: –Valid vs. invalid actions –Various sequences of actions –Unanticipated actions

What does this mean for me?

Software Testing in CS1007 In all your homework assignments, you must document what testing you have done In homework #1, you only need to perform system testing –Test different types of user input In future assignments, you will also conduct unit testing