Fundamentals of Software Testing

Session 1: Software Testing—An 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:

2

Icons Used
Hands-on Exercise

Questions

Tools

Coding Standards

Test Your Understandin g

Reference

Try it Out

A Welcome Break

Contacts

3

It helps the audience understand the necessity and the key aspects of Software Testing. 4 .Software Testing—An Introduction: Overview  Introduction: » This session gives an overview on Software Quality and Software Testing.

Software Testing—An 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 .

6 .  Two Dimensions of Software Quality are: » Producer’s view (by Phil Crosby)– Meeting the requirements specification » Consumer’s view (by Deming & Juran) – Fit for use  The major premise of Software quality is to focus on continuous improvement best illustrated by the Deming’s wheel or the PDCA cycle.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).

Software Quality Attributes  Software Quality attribute is a property of a software product that are —and should be—quantifiable 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 7 .

“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 8 . inspections and Walk through » Helps to verify if the application is built to meet the requirement/design specifications . which includes reviews. 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 . Verification: » Process of confirming that any software development conforms to its standards and meets the specification » Refers to the review process.“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.Key Processes to Improve Software Quality  Verification and Validation are key Processes to improve Software Quality.

Verification Vs. Validation Verification This process focuses upon the process of developing and testing a software in an Organization. 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. Are we building Right Product?  Testing is a validation process to improve the quality of the software. Verification begins in the initial phase and will be always associated with all the phases of SDLC Primarily. 9 . test engineers will be involved in the phase of validation.

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.  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. 10 . This is a classic example of a Software failure which might result in loss of life. be it business or otherwise.

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

A wise person avoids it. thereby reducing the loss. which is defect free.Why is Software Testing Necessary? “A clever person solves a problem. » To reduce the possible risks associated with the software.Albert Einstein  Significance of Software Testing: » To produce a quality product. » To make sure all the requirements are satisfied and the best design system architecture is used.” . » To ensure Customers/user satisfaction. 12 .

and the system requirements covered by the tests. meets the performance standards provides stability to the system 13 .  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. the tests run.How Testing Improves the Software Quality  Testing helps to measure the quality of software in terms of the number of defects found.

» 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 . etc. defect. fault.)  What is a Software Defect? » Software Defect can be defined as nonconformance to requirements or functional specification. bug. failure. » Software defect is a common term used to describe error.How Testing Improves Software Quality (Contd.

The cost of defect is directly impacted by when those defects are found.   15 . The cost of finding and fixing defects rises considerably across the life cycle.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.

» Debugging oriented » Demonstration oriented » Destruction oriented » Evaluation oriented » Prevention oriented 16 . The concept of testing itself evolved with time.History and Evolution of Software Testing  Software has been tested as early as software has been written.

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 .

meeting the client requirements as per the target benchmark. does not justify the project cost. code coverage.Basics of Software Testing (Contd. 18 . » Testing budget of the project or when the cost of continued testing. even if they fail.)  When to stop testing? » Critical or Key Test cases successfully completed. Certain test cases. » Defect detection rates fall below certain specified level & High priority bugs are resolved. » Functional coverage. may not be show stoppers.

» 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 .General Testing Principles  A number of testing principles have been suggested over the past 40 years and offer general guidelines common for all testing.

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

& Unit Test Component Integration Testing Testing System Testing System Integration Testing 21 .Testing Process for A Waterfall Development Methodology SDLC STLC Test Requirement Analysis & Test Planning Requirements Study & Analysis Test Design Design. Code.

22 .V Model—Testing 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.  V-model illustrates how testing activities (Verification and Validation) can be integrated into each phase of the software development life cycle. to form the typical V -Shape.

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

)  Agile Development Testing Process Cross-Functional Team (Designers. 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 .Testing Process in Agile Development (Contd. Developers.

 Allow time for questions from participants 25 .

Test Your Understanding 1. B. What is the primary objective of testing? A. Quality is job done Zero defects Conformance to requirements Work as designed 26 . To To To To show that the program works provide a detailed indication of quality find errors protect the end–user 2. C. C. D. Pick the best option for quality A. B. D.

checklist.Software Testing—An Introduction: Summary  Here’s a brief recap of this session: » Each Software has various quality attributes. » Verification refers to reviews. » Software Testing is an activity that helps in locating bugs/defects/errors in a software system. 27 . and similar process related activities. » The quality of a software program can be improved using Verification and Validation processes. » Validation helps in identifying whether the right product is built based on the specification. » Validation is primarily testing of a developed software against the requirements specifications.

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

29 .softwaretestinggenius. 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. Roles.sas.com www2. All trademarks. Wachovia Bank. Bentley.onestoptesting.wikipedia.Software Testing—An Introduction: Source  Reference Websites: » » » » www. and Terminology by John E. The materials that can be accessed from linked sites are not maintained by Cognizant Academy and we are not responsible for the contents thereof. service marks.com www.com http://en.org/wiki/Software_bug  Reference Books: » Software Testing Fundamentals—Concepts. and trade names in this course are the marks of the respective owner(s).

The information contained herein is subject to change without notice.You have completed Session 1 of Fundamentals of Software Testing. © 2007. . Cognizant Technology Solutions. All Rights Reserved.

Sign up to vote on this title
UsefulNot useful