Session 1 Software Testing an Introduction V1

Embed Size (px)

Citation preview

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    1/30

    2007, Cognizant Technology Solutions. All Rights Reserved.The information contained herein is subject to change without notice. C3: ProtectedC3: Protected

    Fundamentals of

    Software Testing

    Session 1: Software TestingAnIntroduction

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    2/30

    About the Author

    Created By: Vijayan Kanagaraj (223562) ; Ramesh Kumar, Moses

    (125587)CredentialInformation:

    Vijayan holds a B.Tech degree and has 8 years ofExperience in Software Testing

    Moses has an MCA degree and has 11 years ofExperience in Software Testing

    Version and

    Date:

    ST/PPT/2010/1.0

    2

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    3/30

    Icons Used

    3

    Questions

    Contacts

    Reference

    Try it Out

    Hands-onExercise

    CodingStandards

    Test YourUnderstanding

    Tools

    AWelcomeBreak

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    4/30

    4

    Software TestingAn Introduction:Overview

    Introduction: This session gives an overview on Software Quality

    and Software Testing. It helps the audience

    understand the necessity and the key aspects of

    Software Testing.

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    5/30

    Software TestingAn Introduction:Objectives

    After completing this session, you will be ableto:

    Define Software Quality

    List the Software Quality Attributes

    Describe Verification and Validation

    Define Software Testing

    Recognize the significance of Software Testing

    Recognize how testing improves Software Quality

    Discuss the history and evolution of Software Testing

    Describe Software Testing Principles Define Software Defect

    Recognize the significance of Software Defect

    Describe the Software Testing Model

    5

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    6/30

    6

    Software Quality measures how well the software is designed

    (quality of design), and how well it conforms to that design

    (quality of conformance).

    Two Dimensions of Software Quality are:

    Producers view (by Phil Crosby) Meeting therequirements specification

    Consumers view (by Deming & Juran) Fit for use

    The major premise of Software quality is to focus on continuous

    improvement best illustrated by the Demings wheel or the

    PDCA cycle.

    Software Quality

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    7/307

    Software Quality attribute is a property of a software product that are

    and should bequantifiable in specifications by appropriate and

    practical scales of measure.

    The ISO software-quality model [ISO 2001] defines six quality-

    attribute categories:

    Functionality Meeting the requirements

    Reliability Trustworthiness of the Software

    Usability User friendliness

    Efficiency Amount of computing resources and code required by a

    program to perform a function

    Maintainability How easy it is to modify the existing code and reuse for

    future changes

    Portability How easy it is for the software to adapt itself to various

    operating environments

    Software Quality Attributes

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    8/30

    Key Processes to Improve SoftwareQuality

    Verification:

    Process of confirming that anysoftware developmentconforms to its standards andmeets the specification

    Refers to the review process,which includes reviews,inspections and Walk through

    Helps to verify if the applicationis built to meet therequirement/design

    specifications - Are we buildingthe product right?

    Process of reviewing the designdocuments created during eachphase and linked to Testingactivities like creation of TestPlan, Test Design

    Validation:

    Process of confirming thatevery software meets theuser's requirements

    Validation is the TestingProcess and it includes fewtechniques like Black BoxTesting & White Box Testing

    Helps to validate if theapplication will meet userneeds - Are we building the

    right product?

    Process of executing the Testsat the various levels

    Both Functional and Nonfunctional requirements aretested using Validation

    8

    Verification and Validation are key Processes to improve SoftwareQuality.

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    9/309

    Verification Vs. Validation

    Verification Validation

    This process focuses upon theprocess of developing and testing asoftware in an Organization.

    This process focuses on the productafter the development phase orduring the development

    Verification begins in the initialphase and will be always associated

    with all the phases of SDLC

    Validation appears after codingphase

    Primarily, Quality Assurance (QA )engineers will be involved in theprocess of verification

    Primarily, test engineers will beinvolved in the phase of validation.

    Are we building the Product Right? Are we building Right Product?

    Testing is a validation process to improve the quality of the software.

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    10/30

    Computer System Failures Causedby Software Defects

    Reliability and performance of Software systems is of crucial

    importance for the effective and efficient management of oursocial systems, be it business or otherwise.

    10

    Photo of what is possibly thefirst real bug found in acomputer.

    Two adjacent roads both get thegreen light at this T-intersection.This is a classic example of aSoftware failure which mightresult in loss of life.

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    11/30

    What is Software Testing

    Introduction: Software Testing is an activity that helps inidentifying bugs/defects/errors in a software systemunder development, in order to provide a defect-freeand reliable system/solution to the customer.

    Software Testing is the process of questioning aproduct in order to evaluate it, where the"questions" are things the tester tries to do with theproduct, and the product answers with its behaviorin reaction to the probing of the tester.

    Software Testing helps to identify the correctness,completeness, and quality of developed computersoftware.

    11

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    12/30

    Why is Software Testing Necessary?

    Significance of Software Testing:

    To produce a quality product, which is defect free. To make sure all the requirements are satisfied and

    the best design system architecture is used.

    To ensure Customers/user satisfaction.

    To reduce the possible risks associated with the

    software, thereby reducing the loss.

    12

    A clever person solves a problem. A wise personavoids it.- Albert Einstein

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    13/30

    How Testing Improves the SoftwareQuality

    Testing helps to measure the quality of software interms of the number of defects found, the tests run,and the system requirements covered by the tests.

    Testing helps to find defects and the quality of thesoftware increases when those defects are fixed therebyreducing the overall level of risk in a system.

    Testing helps to improve the quality by ensuring theproduct:

    meets the user requirements

    meets the conformance standards & Guidelines,

    meets the performance standards

    provides stability to the system

    13

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    14/30

    How Testing Improves SoftwareQuality (Contd.)

    What is a Software Defect? Software Defect can be defined as nonconformance to

    requirements or functional specification.

    Software defect is a common term used to describe error, fault,

    failure, bug, defect, etc.

    Software defects are classified based on severity and priority.

    Common reasons for a defect in a software:

    Misinterpretation/Misunderstanding of Business Requirements

    Changing requirements Software Complexity

    Poor Design/Coding logic

    Human errors

    14

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    15/30

    Significance and Cost of SoftwareDefect

    The presence of defects in a

    Software system has anegative impact on thequality of the Software andshows the deviations in thedesign practice andprinciples.

    The cost of defect is directlyimpacted by when thosedefects are found.

    The cost of finding andfixing defects rises

    considerably across the lifecycle.

    15

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    16/30

    History and Evolution of SoftwareTesting

    Software has been tested as

    early as software has beenwritten. The concept oftesting itself evolved withtime.

    Debugging oriented

    Demonstration oriented Destruction oriented

    Evaluation oriented

    Prevention oriented

    16

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    17/30

    Basics of Software Testing

    What to test?

    To test that the Product has been developedaccording to specification

    To test that the functionality is working well

    To test that the product satisfies user requirements

    How to test? Manually

    Using tools

    Both manually and by using tools

    17

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    18/30

    Basics of Software Testing (Contd.)

    When to stop testing?

    Critical or Key Test cases successfully completed.Certain test cases, even if they fail, may not be showstoppers.

    Testing budget of the project or when the cost of

    continued testing, does not justify the project cost. Functional coverage, code coverage, meeting the

    client requirements as per the target benchmark.

    Defect detection rates fall below certain specifiedlevel & High priority bugs are resolved.

    18

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    19/30

    General Testing Principles

    A number of testing principles have beensuggested over the past 40 years and offergeneral guidelines common for all testing.

    Principle 1 Testing shows presence of defects

    Principle 2 Exhaustive Testing is impossible

    Principle 3 Testing can start as early in theSDLC

    Principle 4 Defect clustering

    Principle 5 Same Tests repeated over a period oftime reduces Test Effectiveness

    Principle 6 Testing is context dependant

    Principle 7 Absence-of-errors fallacy

    19

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    20/30

    Alignment of Testing Model to VariousDevelopment Methodologies

    Various generic software development life cyclemethodologies are available for executingsoftware development projects.

    Each process model follows a particular lifecycle in order to ensure success in process ofsoftware development.

    Basic popular methodologies that are adoptedfor software development:

    Waterfall

    Iterative

    Spiral

    Agile

    20

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    21/30

    Testing Process for A WaterfallDevelopment Methodology

    21

    RequirementsStudy &Analysis

    Design, Code,& Unit Test

    TestingSystemTesting

    ComponentIntegration

    Testing

    TestDesign

    TestRequirementAnalysis &

    Test Planning

    SDLC STLC

    SystemIntegration

    Testing

    d l d l f f ll

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    22/30

    V ModelTesting Model for WaterfallMethodology

    The V-Model is the Testing model adopted while the

    development methodology is Waterfall. Instead of goingdown in a linear way the process steps are bentdownwards to UAT, to form the typical V -Shape.

    V-model illustrates how testing activities (Verificationand Validation) can be integrated into each phase of thesoftware development life cycle.

    22

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    23/30

    T i P i A il D l

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    24/30

    Testing Process in Agile Development(Contd.)

    Agile Development Testing Process

    24

    Feature ADesign Develop Test

    Rework

    Feature BDesign Develop Test

    Rework

    Feature CDesign Develop Test

    Rework

    Feature DDesign Develop Test

    Rework

    Feature EDesign Develop Test

    Rework

    Cross-Functional Team (Designers, Developers, Testers)

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    25/30

    Allow time for questions from participants

    25

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    26/30

    Test Your Understanding

    1. What is the primary objective of testing?

    A. To show that the program works

    B. To provide a detailed indication of quality

    C. To find errors

    D. To protect the enduser

    2. Pick the best option for quality

    A. Quality is job done

    B. Zero defects

    C. Conformance to requirements

    D. Work as designed

    26

    S ft T ti A I t d ti

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    27/30

    Software TestingAn Introduction:Summary

    Heres a brief recap of this session:

    Each Software has various quality attributes.

    The quality of a software program can be improvedusing Verification and Validation processes.

    Verification refers to reviews, checklist, and similar

    process related activities. Validation is primarily testing of a developed

    software against the requirements specifications.

    Validation helps in identifying whether the rightproduct is built based on the specification.

    Software Testing is an activity that helps in locatingbugs/defects/errors in a software system.

    27

    S ft T ti A I t d ti

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    28/30

    Software TestingAn Introduction:Summary (Contd.)

    Software defect is a common term used to describe

    error, fault, failure, bug, defect, etc. and there aredifferent stages of software defect life cycle.

    Software testing reduces the likelihood of failure andensures that the probability of the Software meetingthe standards specified by the user is high.

    Complete testing is not possible for almost allprojects and a determination needs to be made earlyon when to stop testing.

    The V-Model demonstrates the relationships betweeneach phase of the development life cycle and itsassociated phase of testing.

    The testing methodology may vary depending on thedevelopment methodology.

    28

    S ft T ti A I t d ti

  • 8/2/2019 Session 1 Software Testing an Introduction V1

    29/30

    Software TestingAn Introduction:Source

    Reference Websites:

    www.onestoptesting.com

    www2.sas.com

    www.softwaretestinggenius.com

    http://en.wikipedia.org/wiki/Software_bug

    Reference Books: Software Testing FundamentalsConcepts, Roles, and

    Terminology by John E. Bentley, Wachovia Bank, CharlotteNC

    Basics of Software Testing by Divya Saxena

    ISTQB

    29

    Disclaimer: Parts of the content of this course is based on the materials available from the Websites and

    books listed above. The materials that can be accessed from linked sites are not maintained by Cognizant

    Academy and we are not responsible for the contents thereof. All trademarks, service marks, and trade

    names in this course are the marks of the respective owner(s).

    http://www.onestoptesting.com/http://www.onestoptesting.com/http://www.softwaretestinggenius.com/http://en.wikipedia.org/wiki/Software_bughttp://en.wikipedia.org/wiki/Software_bughttp://en.wikipedia.org/wiki/Software_bughttp://www.softwaretestinggenius.com/http://www.onestoptesting.com/http://www.onestoptesting.com/
  • 8/2/2019 Session 1 Software Testing an Introduction V1

    30/30

    2007, Cognizant Technology Solutions. All Rights Reserved.The information contained herein is subject to change without notice.

    You have completed Session 1

    of Fundamentals of SoftwareTesting.