2.49k likes | 4.76k Views
Introduction to Software Testing. Definition of Software Testing. Previous Testing is a part of coding work Make sure that a system does what it is supposed to do Present
E N D
Introduction to Software Testing
Definition of Software Testing • Previous • Testing is a part of coding work • Make sure that a system does what it is supposed to do • Present • Testing is the process of analyzing a software item to detect the differences between existing and required conditions and to evaluate the features of the software items. [IEEE/ANSI, Std 829-1998] • Testing is a concurrent lifecycle process of engineering, using and maintaining testware in order to measure and improve the quality of the software being tested. [Rick D Craig, 2002, “Systematic Software Testing”]
Software Testing • To find and prevent defect • To have confidence that the system performs adequately • To provide information about quality • To provide the insight of product risk and quality • To ensure a program corresponds to its specification • Defect Detection Mechanism
Software Test Process • Test Strategy • Test Plan • Test Design • Setup Test Environment • Test Execution • Defect Tracking • Testing Tools • Evaluate Test Exit Criteria • Reporting • Improve Test Process
Some terminologies Related to human=Mistake Related to product Bug= slang / dialect Error Related to event Accident Defect, Fault, Bug Incident, Issue Risk = likelihood of failure x impact Failure Risk
Some terminologies Test Design Test Case : a set of input values and expected results, developed for a particular objective or test condition Test Suite Test Case 1 to be executed Test Case 2 to be executed Test Procedure = Test script Test Case 3 to be executed Order, story included Test Case n to be executed Test Scenario
Test Objectives (Why) • Primary • To find defects • To gain confidence of software • To prevent defects • To see software matching its requirement specifications • To reduce the business risk • To provide well-informed advice (quantitative metric) • Others • To check development process • To detect issues • To check logical design • To confirm that the system and software work properly
Characteristic in Software Testing • Exhausting testing is impossible • There would be infinity path in a program • There would be infinity combination of all inputs values • There would be infinity timing or moment of occurring the GUI event • Testing cannot prove that there are no defects • It is hard to find defects if you produced the product • Practical Goal of Testing • “To maximize possibility of finding defects at the high risk area within the given resource (time, people) -> to minimize risk”
General Testing Principles • Testing Shows presence of defects • Exhaustive testing is impossible (why? – 2 on/off button ,tab option, calculator) • Early Testing • Defect Clustering • Pesticide paradox • Testing s context dependent • Absence-of-error fallacy
The V Model Req. analysis Acceptance test Requirements Customer Developer Logical spec. Architectural Design System test Run tests Physical spec. Integration test Write tests Detailed Design Functional (BB) Program source Structural (WB) Unit test Module implementation
Test Levels Goal Performer Env Test Basis Difficulty levels Acceptance Req. User Real SRS User System Non-functional Prof. Tester Testing SDD + SRS Integration Functional Developer Dev. SDD Unit Find Defect Developer-peer Dev. Functions Technical V model matrix
Classification of Testing • Dynamic Testing • Black box testing • Risk Based Testing • Spec-based testing • Exploratory based testing • Experience based testing • Structure based testing (white box) • Statistical testing • CTM (Classification Tree Method) • Use Case Testing • State Transition Testing • Boundary Analysis & Equivalent Partitioning • Control Flow Testing • Basis Path Testing • Pairwise • Elementary Comparison Test • Structure Testing • Acceptance Testing • System Testing • Integration Testing • Componen (Unit) Testing • Structure Testing • Regression / Confirm Testing • Functional / Non-Functional Testing • Static Testing • Technical Review • Inspection • Requirement Testing • Design Testing • Static Analysis Testing Approach Testing Design Testing Levels Testing Types
Effective and Efficient Testing • What is effective testing ? • To make test result which is decided or desired • Effective tester decide what test result to be drawn from the testing effort • What is efficient testing? • Desired test result can be achieved as soon as possible (performance) • Efficient tester allocate time, cost and resource properly • Effective testing vs. efficient testing? • When to stop? • Where to test more? • The best way for effective and efficient = Risk based testing
Effective and Efficient Testing • Effective testing vs. efficient testing? • The best way for effective and efficient testing => Risk based testing Efficient Effective
Hi Chances of Failure Low Business Impact Hi Chances of Failure Hi Business Impact Low Chances of Failure Low Business Impact Low Chances of Failure Hi Business Impact Risk Matrix Chances of Failure (likelihood) Business Impact
Standards • ISO/IEC29119 – Standard for Software Testing Process • IEEE829 – Standard for Software Testing Document
Testing Architecture Organization Test Policy Master Test Plan Stakeholders End User management Test Basis Test organization Test Strategy Test Tech. Test Items Test Environment Test Level Lifecycle Plan/ Control Plan/ Control Plan/ Control Analysis Design Analysis Design Analysis Design Imple. Exec. Imple. Exec. Imple. Exec. Exit / Reporting Exit / Reporting Exit / Reporting Closure Closure Closure Defects Reporting Test Reporting Test Plan Test Spec. Test Procedure Release Test Process evaluation and advice Test Case Test Result Final Report Testware Status Report Result Report Test Process Improvement Plan Test Process Improvement
Test Organization 6. Outsourcing Business Steering Committee 4. Business Organization User Community Independent IT org. Project Management 5. Independent Test specialist Usability / Security/ Certificate Project Staff & QA Testing Analysis / Design Coding Testing (permanent / project base) Install 1. Tested by Developer 3. Project Testing Group in organization 2. Independent Tester inside Project Team Test Management • Support • Strategy, tech, training • Infra & Tools • Subject Matter Testing A Testing B Testing C