Product Quality?.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Test process essentials Riitta Viitamäki,
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Quality Management. What is a software product? Software product = computer programs (sources and executable) + associated documentation Software products.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Software testing.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Recall The Team Skills Analyzing the Problem
Software Testing & Strategies
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Software Testing.
Test Design Techniques
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
System/Software Testing
Extreme Programming Software Development Written by Sanjay Kumar.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
Introduction Telerik Software Academy Software Quality Assurance.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Testing phases. Test data Inputs which have been devised to test the system Test cases Inputs to test the system and the predicted outputs from these.
Chapter 12: Software Testing Omar Meqdadi SE 273 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software testing techniques 3. Software testing
CSC 480 Software Engineering Lecture 14 Oct 16, 2002.
Overview of Software Testing 07/12/2013 WISTPC 2013 Peter Clarke.
Course Outline Traditional Static Program Analysis –Theory –Classic analysis and applications Points-to analysis, CHA, RTA –The Soot analysis framework.
Lecture 11 Testing and Debugging SFDV Principles of Information Systems.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
From Use Cases to Test Cases 1. A Tester’s Perspective  Without use cases testers will approach the system to be tested as a “black box”. “What, exactly,
Software Testing The process of operating a system or component under specified conditions, observing and recording the results, and making an evaluation.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
Software Testing Yonsei University 2 nd Semester, 2014 Woo-Cheol Kim.
Black-box Testing.
INTRUDUCTION TO SOFTWARE TESTING TECHNIQUES BY PRADEEP I.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Construction Lecture 18 Software Testing.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
Software Testing Process By: M. Muzaffar Hameed.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Testing and Quality Assurance 1. What is the objectives of Software Testing?
CS451 Lecture 10: Software Testing Yugi Lee STB #555 (816)
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Chapter 12: Software Testing Omar Meqdadi SE 273 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
Software Test Plan Why do you need a test plan? –Provides a road map –Provides a feasibility check of: Resources/Cost Schedule Goal What is a test plan?
SOFTWARE TESTING SOFTWARE TESTING Presented By, C.Jackulin Sugirtha-10mx15 R.Jeyaramar-10mx17K.Kanagalakshmi-10mx20J.A.Linda-10mx25P.B.Vahedha-10mx53.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
ANOOP GANGWAR 5 TH SEM SOFTWARE TESTING MASTER OF COMPUTER APPLICATION-V Sem.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
Defect testing Testing programs to establish the presence of system defects.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
Software Testing.
Software Testing.
Software Engineering (CSI 321)
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Lecture 09:Software Testing
Software testing.
Chapter 10 – Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Presentation transcript:

Product Quality?

What is product quality? Quality, simplistically, means that a product should meet its specification The software product should deliver the required functionality (functional requirements) with the required quality attributes (non–functional requirements)

Problematic for software systems Some quality requirements are difficult to specify in an unambiguous way Software specifications are usually incomplete and often inconsistent Quality attributes are frequently conflicting and increase development costs, so there is a need for weighting and balancing. Different users may have different opinions about what constitutes software quality.

Quality attributes Correctness : the degree to which the software product performs the required functions accurately. Reliability is the degree to which the software behaves well and in the way the users expect. Robustness implies that the software is unlike to fail or break. performance relates to the response time of the software system. Usability relates to the user friendness of the software.

Quality attributes Maintainbility :Correcting software errors and deficiencies Scalibility : Ease with which the software can be scaled up or evolved in response to the growth in demand for its functionality. Reusability : Defines the level to which the software components can be used for construction of other products. Portability : Can software run on various hardware/software platforms without any modifications or after undergoing minor customization or parameterization ?

Quality control Quality control is mostly about testing the quality of a product ( to eliminate problems ) Quality assurance is about building quality into the product.

Testing – V model

“V” Model Each phase has corresponding test or validation counterpart Requirements Analysis Acceptance Test Integration Test System Design Program Design Unit Test Implementation

Sawtooth Model (Brugge) Requirements Analysis Demo Prototype 1 Demo Prototype 2 Acceptance Test Integration Test System Design Program Design Unit Test Implementation Quality is guaranteed at each project stage.

Unit testing The most ‘micro’ scale of Testing A unit = smallest testable software component Objects and methods Procedures / functions Performed by Programmer A tester can help. Requires detailed knowledge of the internal program design and code. The units are tested in isolation. Ensures the component is working according to the detailed design/build specifications of the module. Also known as component, module, or program testing.

Sometime called structural testing Unit Test ( white box) White-box testing Sometime called structural testing Tester studies the code and decide on data inputs to exercise all program statements (not all path combinations). Test coverage measures ensure that all statements have been executed at least once Derivation of test cases according to program structure. Knowledge of the program is used to identify additional test cases. Also suitable for design models and specification documents (walkthrough and inspections)

Integration Testing Testing of more than one (tested) unit together to determine if they function correctly. Focus on interfaces Communication between units It is done using the integration test design prepared during the architecture design phase. Helps assembling incrementally a whole system, ensuring the correct ‘flow’ of data from the first through the final component. Done by developers/designers and testers in collaboration Also called Interface Testing or Assembly Testing.

System testing Testing the system as a whole - Black-box type testing that is based on overall requirements specifications; covers all combined parts of a system. Ensures that system meets all functional and business requirements. Focus Verifying that specifications are met Validating that the system can be used for the intended purpose The system test design is derived from the system design documents and is used in this phase. It can involve a number of specialized types of tests to check performance, stress, documentation etc. Sometimes testing is automated using testing tools. Done by Independent testing group

System testing Black-box testing (testing to specifications) An approach to testing where the program is considered as a ‘black-box’ , taking some inputs and produces some outputs. Tester does not know or choose to ignore the internal workings of the program. The program test cases are based on the system specification Test planning can begin early in the software process Testing is done by feeding the test unit with data inputs and verifying that the expected output is produced. Also applicable to constraint testing ( performance and security ) and missing functionalities.

Acceptance testing To determine whether a system satisfies its acceptance criteria and business requirements or not. Similar to System testing in that the whole system is checked, but the important difference is the change in focus. Done by real business users. It enables the customer to determine whether to accept the system or not. Also called as Beta Testing, Application Testing or End User Testing. Approach Should be performed in real operating environment . Customer should be able to perform any test based on their business processes. Final Customer sign-off.

Testing techniques It is never possible to test for all possible data inputs or code execution paths. Testing techniques can be classified according to 5 criteria : Visibility Automation partitioning Coverage scripting

Testing techniques Visibility Automation

Partitioning -Equivalence partitioning Groups data inputs (and implicitly , data outputs)into partitions constituing homogenoues test targets ( testing with one member implies test with other member in the same partition ) Supported by Black box testing

Boundary value Additional data analysis technique Bounadary values are extreme cases withing equivalence partitions. Ex: Partition of integer from 1 to 100. Bounadry value analysis recommends tests to be done on the values on the edges that is : -1 , 0 , +1 as well as for 99,100, 101

Coverage Path coverage Determine how much code is going to be exercised by a white box test Operation coverage Ensure that each operation in the code is exercised at least once by the white box test Path coverage Numbering possible execution paths ( infinite in large program ) in the program Exercising them one by one. For large program , choose the most critical and frequently used ones. Testing can be manual or automatic

Manual testing Human tester interracts with the application under test conducts , according to a predefined test script and observe the results. Test script defines step-by-step testing actions and expected outcomes. Use cases are used to write test scripts. Problems: Freuqently output is not presented to the creen Live data are not predefined Expensive

Automated testing Use software testing tools to execute large volumes of test without human participation Tools can produce post test reports Automated testing can be divided into : Regression testing Exercising testing

Regression testing Repetitive execution of the same test scripts on the same data to be sure that the system has not been broken by successive changes to the code (changes not related to the tested functionality) . Execution of the script at scheduled test times.

Exercising testing Tool generates automatically and randomly various possible actions instead of the user. Mad user hitting any possible key on keyboard , selecting any possible menu item , ….etc.

Test planning Part of the quality management plan. Defines testing schedule, budget , tasks (test cases) and resources. Test Plan include code and other project artifacts testings. Specify which test cases should be conducted Human and material ressources should be allocated. Test database created and test software tools installed

Testing Approaches We will look at a small sample of approaches for testing White-box testing Control-flow-based testing Loop testing Data-flow-based testing Black-box testing Equivalence partitioning

Control-flow-based Testing A traditional form of white-box testing Step 1: From the source, create a graph describing the flow of control Called the control flow graph The graph is created (extracted from the source code) manually or automatically Step 2: Design test cases to cover certain elements of this graph Nodes, edges, paths

Example of a Control Flow Graph (CFG) 1 s:=0; d:=0; if (x+y < 100) s:=s+x+y; else d:=d+x-y; } 2 while (x<y) { x:=x+3; y:=y+2; 3 4 5 6 7 8

Statement Coverage Basic idea: given the control flow graph define a “coverage target” and write test cases to achieve it Traditional target: statement coverage Need to write test cases that cover all nodes in the control flow graph Intuition: code that has never been executed during testing may contain errors Often this is the “low-probability” code

Example Suppose that we write and execute two test cases Test case #1: follows path 1-2-exit (e.g., we never take the loop) Test case #2: 1-2-3-4-5-7-8-2-3-4-5-7-8-2-exit (loop twice, and both times take the true branch) Do we have 100% statement coverage? 1 2 3 T F 4 5 6 7 8

Branch Coverage Target: write test cases that cover all branches of predicate nodes True and false branches of each IF The two branches corresponding to the condition of a loop All alternatives in a SWITCH statement In modern languages, branch coverage implies statement coverage

Branch Coverage Statement coverage does not imply branch coverage Can you think of an example? Motivation for branch coverage: experience shows that many errors occur in “decision making” (i.e., branching) Plus, it subsumes statement coverage.

Example Same example as before Test case #1: follows path 1-2-exit Test case #2: 1-2-3-4-5-7-8-2-3-4-5-7-8-2-exit What is the branch coverage? 1 2 3 T F 4 5 6 7 8

Black-box Testing Unlike white-box testing, here we don’t use any knowledge about the internals of the code Test cases are designed based on specifications Example: search for a value in an array Postcondition: return value is the index of some occurrence of the value, or -1 if the value does not occur in the array We design test cases based on this spec

Test cases Design Project Name: Test Case Template   Test Case ID: Fun_10 Test Designed by: <Name> Test Priority (Low/Medium/High): Med Test Designed date: <Date> Module Name: Google login screen Test Executed by: <Name> Test Title: Verify login with valid username and password Test Execution date: <Date> Description: Test the Google login page Pre-conditions: User has valid username and password Dependencies: Post-conditions: Step Test Steps Test Data Expected Result Actual Result Status (Pass/Fail) Notes 1 Navigate to login page User= example@gmail.com   User should be able to login User is navigated to Pass 2 Provide valid username Password: 1234 dashboard with successful 3 Provide valid password login 4 Click on Login button