Sei sulla pagina 1di 30

Fundamentals of Software Testing

Session 1: Software TestingAn Introduction


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

C3: Protected

About the Author


Created By: Credential Information: Vijayan Kanagaraj (223562) ; Ramesh Kumar, Moses (125587) Vijayan holds a B.Tech degree and has 8 years of Experience in Software Testing Moses has an MCA degree and has 11 years of Experience in Software Testing ST/PPT/2010/1.0

Version and Date:

Icons Used
Hands-on Exercise

Questions

Tools

Coding Standards

Test Your Understandin g

Reference

Try it Out

A Welcome Break

Contacts

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.

Software TestingAn Introduction: Objectives


After completing this session, you will be able to:
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

Software Quality
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 the requirements 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 Attributes


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 qualityattribute 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

Key Processes to Improve Software Quality


Verification and Validation are key Processes to improve Software Quality.
Verification:
Process of confirming that any software development conforms to its standards and meets the specification Refers to the review process, which includes reviews, inspections and Walk through Helps to verify if the application is built to meet the requirement/design specifications - Are we building the product right? Process of reviewing the design documents created during each phase and linked to Testing activities like creation of Test Plan, Test Design

Validation:
Process of confirming that every software meets the user's requirements Validation is the Testing Process and it includes few techniques like Black Box Testing & White Box Testing Helps to validate if the application will meet user needs - Are we building the right product? Process of executing the Tests at the various levels Both Functional and Non functional requirements are tested using Validation

Verification Vs. Validation


Verification
This process focuses upon the process of developing and testing a software in an Organization. Verification begins in the initial phase and will be always associated with all the phases of SDLC Primarily, Quality Assurance (QA ) engineers will be involved in the process of verification Are we building the Product Right?

Validation
This process focuses on the product after the development phase or during the development Validation appears after coding phase

Primarily, test engineers will be involved in the phase of validation.

Are we building Right Product?

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

Computer System Failures Caused by Software Defects


Reliability and performance of Software systems is of crucial importance for the effective and efficient management of our social systems, be it business or otherwise.

Photo of what is possibly the first real bug found in a computer.

Two adjacent roads both get the green light at this T-intersection. This is a classic example of a Software failure which might result in loss of life.
10

What is Software Testing


Introduction:
Software Testing is an activity that helps in identifying bugs/defects/errors in a software system under development, in order to provide a defect-free and reliable system/solution to the customer. Software Testing is the process of questioning a product in order to evaluate it, where the "questions" are things the tester tries to do with the product, and the product answers with its behavior in reaction to the probing of the tester. Software Testing helps to identify the correctness, completeness, and quality of developed computer software.

11

Why is Software Testing Necessary?


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

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

How Testing Improves the Software Quality


Testing helps to measure the quality of software in terms 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 the software increases when those defects are fixed thereby reducing the overall level of risk in a system. Testing helps to improve the quality by ensuring the product:
meets the user requirements meets the conformance standards & Guidelines, meets the performance standards provides stability to the system

13

How Testing Improves Software Quality (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

Significance and Cost of Software Defect


The presence of defects in a Software system has a negative impact on the quality of the Software and shows the deviations in the design practice and principles. The cost of defect is directly impacted by when those defects are found. The cost of finding and fixing defects rises considerably across the life cycle.

15

History and Evolution of Software Testing


Software has been tested as early as software has been written. The concept of testing itself evolved with time. Debugging oriented Demonstration oriented Destruction oriented Evaluation oriented Prevention oriented

16

Basics of Software Testing


What to test?
To test that the Product has been developed according 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

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 show stoppers. 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 specified level & High priority bugs are resolved.

18

General Testing Principles


A number of testing principles have been suggested over the past 40 years and offer general guidelines common for all testing.
Principle 1 Principle 2 Principle 3 Principle 4 Principle 5 Principle 6 Principle 7 Testing shows presence of defects Exhaustive Testing is impossible Testing can start as early in the SDLC Defect clustering Same Tests repeated over a period of time reduces Test Effectiveness Testing is context dependant Absence-of-errors fallacy

19

Alignment of Testing Model to Various Development Methodologies


Various generic software development life cycle methodologies are available for executing software development projects. Each process model follows a particular life cycle in order to ensure success in process of software development. Basic popular methodologies that are adopted for software development:
Waterfall Iterative Spiral Agile

20

Testing Process for A Waterfall Development Methodology


SDLC STLC
Test Requirement Analysis & Test Planning Requirements Study & Analysis

Test Design Design, Code, & Unit Test Component Integration Testing

Testing

System Testing

System Integration Testing

21

V ModelTesting Model for Waterfall Methodology


The V-Model is the Testing model adopted while the development methodology is Waterfall. Instead of going down in a linear way the process steps are bent downwards to UAT, to form the typical V -Shape. V-model illustrates how testing activities (Verification and Validation) can be integrated into each phase of the software development life cycle.

22

Testing Process in Agile Development


The Testing Strategy and Approach in Agile Testing is different from traditional methods. Agile Testing is a mix of Iterative and Incremental approach, along with focus on customer involvement and interaction and supports early delivery of value to the customer. Testing focuses on Unit /Component Testing and Regression Testing to maintain the stability even when there is high level of change. Agile Testing focuses on Test Coverage and Automation of Test Cases due to short turn around time.

23

Testing Process in Agile Development (Contd.)


Agile Development Testing Process

Cross-Functional Team (Designers, Developers, Testers)

Feature A
Design Develop Test Rework

Feature B
Design Develop Test Rework

Feature C
Design Develop Test Rework

Feature D
Design Develop Test Rework

Feature E
Design Develop Test Rework

24

Allow time for questions from participants

25

Test Your Understanding


1. What is the primary objective of testing?
A. B. C. D. To To To To show that the program works provide a detailed indication of quality find errors protect the enduser

2. Pick the best option for quality


A. B. C. D. Quality is job done Zero defects Conformance to requirements Work as designed

26

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 improved using 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 right product is built based on the specification. Software Testing is an activity that helps in locating bugs/defects/errors in a software system.

27

Software TestingAn Introduction: Summary (Contd.)


Software defect is a common term used to describe error, fault, failure, bug, defect, etc. and there are different stages of software defect life cycle. Software testing reduces the likelihood of failure and ensures that the probability of the Software meeting the standards specified by the user is high. Complete testing is not possible for almost all projects and a determination needs to be made early on when to stop testing. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The testing methodology may vary depending on the development methodology.

28

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, Charlotte NC Basics of Software Testing by Divya Saxena ISTQB
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).

29

You have completed Session 1 of Fundamentals of Software Testing.

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

Potrebbero piacerti anche