Basic Testing Concepts and Terminology



Similar documents
Software testing. Objectives

Software Testing. Knowledge Base. Rajat Kumar Bal. Introduction

Chapter 8 Software Testing

Standard Glossary of Terms Used in Software Testing. Version 3.01

Levels of Software Testing. Functional Testing

ISTQB Certified Tester. Foundation Level. Sample Exam 1

Quality Management. Lecture 12 Software quality management

Testing Introduction. IEEE Definitions

An Analysis on Objectives, Importance and Types of Software Testing

Sample Exam Syllabus

Oracle Insurance Policy Administration System Quality Assurance Testing Methodology. An Oracle White Paper August 2008

Metrics in Software Test Planning and Test Design Processes

Introduction to Automated Testing

Presentation: 1.1 Introduction to Software Testing

The V-model. Validation and Verification. Inspections [24.3] Testing overview [8, 15.2] - system testing. How much V&V is enough?

Sample Exam Foundation Level Syllabus. Mobile Tester

CS314: Course Summary

CSTE Mock Test - Part III Questions Along with Answers

Standard Glossary of Terms Used in Software Testing. Version 3.01

Software Testing. System, Acceptance and Regression Testing

JOURNAL OF OBJECT TECHNOLOGY

Software Testing Interview Questions

Standard Glossary of Terms Used in Software Testing. Version 3.01

Test Management and Techniques

International Software Test Institute

Chapter 11, Testing, Part 2: Integration and System Testing

Testing of safety-critical software some principles

Software Engineering. Software Testing. Based on Software Engineering, 7 th Edition by Ian Sommerville

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

Software Testing, Mythology & Methodologies

Verification and Validation of Software Components and Component Based Software Systems

SOFTWARE TESTING - QUICK GUIDE SOFTWARE TESTING - OVERVIEW

Software Engineering I: Software Technology WS 2008/09. Integration Testing and System Testing

Formal Software Testing. Terri Grenda, CSTE IV&V Testing Solutions, LLC

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

Chap 1. Software Quality Management

IEEE ComputerSociety 1 Software and Systems Engineering Vocabulary

Lecture 8 About Quality and Quality Management Systems

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

CHAPTER 01 THE SCOPE OF SOFTWARE ENGINEERING

Advancements in the V-Model

Software Testing Tutorial

Essentials of the Quality Assurance Practice Principles of Testing Test Documentation Techniques. Target Audience: Prerequisites:

SOFTWARE QUALITY MODELS: A COMPARATIVE STUDY

Manual Testing Online Training Concepts : Software Testing Manual Module 1: Testing fundamentals. Introduction:

A Brief Overview of Software Testing Techniques and Metrics

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

Advanced Testing Techniques

Automated Module Testing of Embedded Software Systems

R214 SPECIFIC REQUIREMENTS: INFORMATION TECHNOLOGY TESTING LABORATORY ACCREDITATION PROGRAM

The Role of Information Technology Studies in Software Product Quality Improvement

Software Engineering Compiled By: Roshani Ghimire Page 1

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not.

Smarter Balanced Assessment Consortium. Recommendation

CS 451 Software Engineering Winter 2009

Chapter 11: Integration- and System Testing

The Role of the Software Architect

Testing and Inspecting to Ensure High Quality

Defining Quality Workbook. <Program/Project/Work Name> Quality Definition

TESTING: FIRST STEP TOWARDS SOFTWARE QUALITY

Software Engineering Question Bank


Process Models and Metrics

Procedure for Assessment of System and Software

MANUAL TESTING. (Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn.?? New Batches Info

Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur

Software Engineering

Software Engineering Reference Framework

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Karunya University Dept. of Information Technology

Application of software product quality international standards through software development life cycle

Software Testing. Quality & Testing. Software Testing

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Exploratory Testing Dynamics

Sample Exam Foundation Level Syllabus. Mobile Tester

Your Software Quality is Our Business. INDEPENDENT VERIFICATION AND VALIDATION (IV&V) WHITE PAPER Prepared by Adnet, Inc.

Latest Trends in Testing. Ajay K Chhokra

The Theory of Software Testing

Testing in a Mobile World

Testing Tools Content (Manual with Selenium) Levels of Testing

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

How To Write Software

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

How To Test A Web Based System

Latest Research and Development on Software Testing Techniques and Tools

Testing in Agile methodologies easier or more difficult?

SPECIFICATION BY EXAMPLE. Gojko Adzic. How successful teams deliver the right software. MANNING Shelter Island

Exploratory Testing Dynamics

CDC UNIFIED PROCESS JOB AID

ICAgile Learning Roadmap Agile Testing Track

4. Test Design Techniques

Publication I International Society of Agile Manufacturing (ISAM) Reprinted by permission of International Society of Agile Manufacturing.

8. Master Test Plan (MTP)

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

JOURNAL OF OBJECT TECHNOLOGY

Transcription:

T-76.5613 Software Testing and Quality Assurance Lecture 2, 13.9.2006 Basic Testing Concepts and Terminology Juha Itkonen SoberIT

Contents Realities and principles of Testing terminology and basic concepts V-model, test levels and types The concept of software quality 2

Realities and principles of 3

The problem of complete Why not just test everything? Complete would require every possible valid and invalid input of the system and every possible valid and invalid output and every possible combination of inputs in every possible sequence of inputs and outputs and user interface errors and configuration and compatibility issues and environment related failures There is definitely too much cases to test completely any realistic software module, not to mention a whole system 4

Testing is always prioritizing Time is always limited Use company s significant risks to focus effort what to test first what to test most how thoroughly to test each feature what not to test Most important tests first Possible ranking criteria 1. test where a failure would be most severe 2. test where failures would be most visible 3. test where failures are most likely 4. ask the customer to prioritize the requirements 5. what is most critical to the customer s business 6. areas changed most often 7. areas with most problems in the past 8. most complex areas, or technically critical 5

Realities of (1/2) It is impossible to test a program completely Testing can show the presence of defects but cannot show the absence of defects You can report found defects and what you have tested and how All bugs cannot be found All found bugs will not be fixed It s really not a bug It s too risky to fix, there is not enough time There is more important tasks to do Testing does not create quality software or remove defects The critique is focused on the product, not the developer 6

Realities of (2/2) Product specifications are never final You cannot wait until specifications are final There will always be changes to specifications The specifications are never complete The more bugs you find, the more bugs there are Programmers have bad days Programmers often make same mistake Some bugs are really just the tip of the iceberg The Pesticide Paradox Programs become immune to unchanging tests Software should be based on risks 7

Testing principles When the test objective is to detect defects, the a good test case is one that has a high probability of revealing a yet undetected defect(s). Test results should be inspected meticulously. A test case must contain the expected results. Test cases should be developed for both valid and invalid input conditions. The probability of the existence of additional defects in software component is proportional to the number of defects already detected in that component. Testing should be carried out by a group that is independent of the development team. Tests must be repeatable and reusable. Testing should be planned. Testing activities should be integrated into the software life cycle. Testing is a creative and challenging task. Burnstein 2003 8

Testing terminology and basic concepts 9

Validation and verification (V&V) Validation are we building the right product? Implementation meets customer requirements, needs and expectations Verification are we building the product right? Program conforms to its specification Note! In the chapter 1 of the course book (Burnstein, 2003, p. 6) there is different definition for V&V. The above definition, however, is more common and makes more clear distinction between the terms. 10

Black-box and white-box Black-box (functional, behavioral, data-driven) The software under test considered as a black-box and no knowledge of the internal structure or how the software actually works is utilized in Testing based on inputs and respective outputs The size of the black box can vary from one class or component to a whole system White-box (structural, logic-driven) Testing based on knowing the inner structure of the system and the program logic 11

Functional Testing conducted to evaluate the compliance of a system with specified functional requirements. IEEE Standard Glossary of Software Engineering Terminology Compare to non-functional E.g. performance, reliability, usability, security 12

Dynamic and static quality practices Dynamic methods executes code Software in the traditional sense Dynamic analysis methods Static methods do not execute code Reviews, inspections, static analysis Some authors name these static 13

Scripted and non-scripted In scripted (test case based) test cases are pre-documented in detailed, step-by-step descriptions Different levels of scripting possible Scripts can be manual or automated Non-scripted (exploratory) is usually manual without detailed test case descriptions Can be disciplined, planned, and well documented exploratory or ad-hoc 14

What is a bug? Error - a human action that produces an incorrect result Fault - a manifestation of an error in software also known as a defect, bug, issue, problem, anomaly, incident, variance, inconsistency, feature, if executed, a fault may cause a failure Failure - deviation of the software from its expected delivery or service Failure is an event; fault is a state of the software, caused by an error. 15

Error > Fault -> Failure A programmer makes an error that creates a fault in the software that can cause a failure in operation 16

What is a fault? A software error is present when the program does not do what its end user reasonably expects it to do (Myers, 1979) There can never be an absolute definition for bugs, nor an absolute determination of their existence. The extent to which a program has bugs is measured by the extent to which it fails to be useful. This is a fundamentally human measure. (Beizer, 1984) 17

Rules for identifying a defect The software does not do something that the specification says it should do The software does something that the specification says it should not do The software does something that the specification does not mention The software does not do something that the specification does not mention but it should The software is difficult to understand, hard to use, slow, or will be viewed by the end user as just plain not right Suorce: Software Testing, Ron Patton 18

Test Oracles How do we know it s broken? An oracle is the principle or mechanism by which you recognize a problem Test oracle provides the expected result for a test, for example Specification document Formula Computer program Person In many cases it is very hard to find an oracle Even the customer and end user might not be able to tell which is the correct behaviour Oracle problem is one of the fundamental issues in test automation: How do we teach an automated test to recognize a defect or failure when it happens? This is not a trivial problem. 19

Oracle Is this correct? Font size test Arial 22pt Font size test Arial 20pt Font size test Arial 18pt Font size test Arial 16pt Font size test Arial 14pt Font size test Times 22pt Font size test Times 20pt Font size test Times 18pt Font size test Times 16pt Font size test Times 14pt 20

Severity and priority Severity of a software fault refers to the severity of the consequences of a failure caused by that fault A tester or customer is probably the best person to set the severity Priority is the fixing order of the found faults and a result of separate prioritisation activity A tester is probably not the best person to set the priority Prioritisation is typically a managerial decision business priorities customer priorities other faults and features quality policy release strategy The priority of a fault depends on other issues Prioritisation is usually based on severity 21

Re- vs. regression Re-tests New version of software with fixed fault Re-run the same test that revealed the defect must be exactly repeatable same environment, versions (except for the software which has been intentionally changed!) same inputs and preconditions If test now passes, fault has been fixed correctly or has it? Regression tests Running a set of tests that have been run before After software or environment changes For confidence that everything still works To reveal any unanticipated side effects An asset (regression test suite/pack) Standard set of tests - needs designing & maintaining Well worth automating 22

Regression Regression tests look for unexpected side-effects (but may not find all of them) Breadth tests Fault fix introduces or uncovers new faults x x Depth tests x Test finds fault x Re-test to check fix x 23

V-model, test levels and types 24

V-model of Requirements Acceptance Functional specification System Build Architecture design Module design Unit Integration Test Coding 25

V-model is easy to understand Simple generic model Easy to understand and explain Describes the test levels and phases Shows how activities are related to other development activities Matches to familiar waterfall model 26

V-model says It is good to have requirements laid out first. It is good to have plans and specifications done before implementation. It is good to complete one task before proceeding to the next that depends on the output of the first task. It is good to test each intermediate product. It is good to use each development specification as a basis for test process. It is much easier to find faults in small units than in large entities. Therefore, test small units first alone before putting them together. Testing of large units can be carried out more easily when the smaller parts are already tested. 27

Requirements Acceptance Functional specification System Build Architecture design Module design Unit Integration Test Test Levels Coding Test level a test level is a group of test activities that focus into certain level of the test target Test levels can be seen as levels of detail and abstraction How big part of the system are we? E.g. unit test, integration test, system test, acceptance test 28

Unit A unit = smallest testable software component Objects and methods Procedures / functions Reusable components Focus on programming errors Verifying that the code unit works as the specification says and the developer designed it Most thorough look at the details Testing units in isolation Usually done by a programmer (in practice) A pair tester can help Also known as component, module, or program Acceptance System Integration Unit 29

Integration Testing More than one (tested) unit work together Integration Focus on interfaces Unit Communication between units Helps assembling incrementally a whole system Integration strategy: big-bang vs. incremental (top-down, bottom-up, functional, ) Done by developers/designers or independent testers Preferably developers and testers in collaboration Modern development methods emphasize continuous integration, no separate integration phase Integration can be done on different levels Class level Component level Subsystem level Systems integration level Acceptance System 30

System Testing the system as a whole Focus Verifying that specifications are met Validating that the system can be used for the intended purpose By the development organization Functional as well as non-functional Non-functional requirements often poorly specified Independent group Collaborating developers and testers Acceptance System Integration Unit 31

Acceptance Final stage of validation Customer (user) should perform or be closely involved Customer should be able to perform any test they wish, usually based on their business processes Final customer sign-off Approach Should be performed in real operating environment Environment related problems Can the system be used for the intended purpose in the real operating environment Problems that the real users have with the system Acceptance System Integration Unit Project business Product business Contract acceptance Customer viewpoint Validates that the right system was build Final checks on releases, (alpha, beta) User viewpoint throughout the development; validation 32

Levels, types, and phases not a same thing Test level a test level is a group of test activities that focus into certain level of the test target. E.g. unit test, integration test, system test, acceptance test Test levels can be seen as levels of detail and abstraction Test type A test type is a group of test activities aimed at evaluating a system for a number of associated quality characteristics. E.g. functional test, performance test, stress test, usability test Test phase Test phases are used to describe temporal parts in process that follow sequentially each other, with or without overlapping 33

Common test types Functional Function Installation Smoke Configuration Compatibility Exception Interface Conversion See course book chapter 6.13 System Test: The Different Types Non-Functional Performance Load Stress Volume Reliability Security Usability Recoverability Maintainablity Localization Documentation Data quality Platform Concurrency 34

Software Quality 35

Which one describes high a quality software system? Defect free Popular in industry Fast to learn Nice graphics Easy to install and upgrade Robust Cheap Simple Small and compact Customizable Open-source Fit-for-purpose Maintainable Appeals majority Feature rich Award winning product Fast to use Low system requirements Reliable customer support Cool Expensive Big and complicated Large and scalable Standardized Reliable vendor Multipurpose Fast time-to-market Perfect for target segment 36

Definition of software quality Quality: (1) The degree to which a system, component or process meets specified requirements. (2) The degree to which a system, component, or process meets customer or user needs or expectations. (IEEE Standard Glossary of Software Engineering Terminology [IEEE610.12]) Quality is value to some person(s) (Gerald M. Weinberg, 1992, Quality Software Management ) 37

Users viewpoint differs from yours All stakeholders have different viewpoints to quality Customer End user Programmer Project manager Tester Whose opinion counts? A bug free product can be unacceptable to the users The goal of a software system is to solve customers problem A minor annoyance for one user can make the product useless for another 38

What does product quality mean? Product A general purpose text editor application What does quality mean for Developer of the application (technical view) Salesman (sales view) Product manager (product view) Tester (tester s view) Coder -user Note taker -user Report writer user Occasional -user 39

The McCall quality model Maintainability Flexibility Testability Product Revision Product Transition Portability Reusability Interoperability Product Operations Correctness Reliability Efficiency Integrity Usability 40

ISO 9126 Quality characteristics The capability to be transferred from one environment to another. The capability to be modified and make changes. The capability to provide functions that meet stated or implied needs. Portability Maintainability Functionality ISO/IEC 9126 Efficiency Reliability Usability The capability to maintain a specified level of performance, under stated conditions for a specified period of time. The capability to be understood, learned, used and attractive to user. The capability to provide appropriate performance, relative to amount of resources used, under stated conditions. 41

Good Enough Quality Defined by James Bach IEEE Computer, 1997, vol. 30, no. 8, pp. 96-98. To claim that any given thing is good enough is to agree with all of the following propositions: It has sufficient benefits It has no critical problems The benefits sufficiently outweigh the problems In the present situation, and all things considered, further improvement would be more harmful than helpful 42

Software quality In general, it is wise to strive for good quality and try to avoid making too many mistakes during the development project Bad quality leads to rework, bigger costs, delays, and problems in operation Quality is meeting the specifications is meeting the expectations of the customer or user is value to someone differs depending on who you ask is difficult to define and hard to measure General standards for software quality E.g. ISO 9126, McCall quality model, Gives a nice taxonomy, terminology, definitions and conceptual framework Cannot tell what are the most important quality attributes and how to achieve them in a particular context and situation 43