Authors: Nirav Desai, prof. hema gaikwad

Slides:



Advertisements
Similar presentations
Chapter 14 Software Testing Techniques - Testing fundamentals - White-box testing - Black-box testing - Object-oriented testing methods (Source: Pressman,
Advertisements

Software Testing Technique. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves.
Unit-V testing strategies and tactics.
SOFTWARE TESTING. Software Testing Principles Types of software tests Test planning Test Development Test Execution and Reporting Test tools and Methods.
White Box and Black Box Testing Tor Stålhane. What is White Box testing White box testing is testing where we use the info available from the code of.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Creator: ACSession No: 13 Slide No: 1Reviewer: SS CSE300Advanced Software EngineeringFebruary 2006 Testing - Techniques CSE300 Advanced Software Engineering.
1 Static Analysis Methods CSSE 376 Software Quality Assurance Rose-Hulman Institute of Technology March 20, 2007.
Testing an individual module
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
CMSC 345 Fall 2000 Unit Testing. The testing process.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
Software Testing The process of operating a system or component under specified conditions, observing and recording the results, and making an evaluation.
Bug Localization with Machine Learning Techniques Wujie Zheng
Scalable Statistical Bug Isolation Authors: B. Liblit, M. Naik, A.X. Zheng, A. Aiken, M. I. Jordan Presented by S. Li.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
1 Program Testing (Lecture 14) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.
1 Test Selection for Result Inspection via Mining Predicate Rules Wujie Zheng
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
“Isolating Failure Causes through Test Case Generation “ Jeremias Rößler Gordon Fraser Andreas Zeller Alessandro Orso Presented by John-Paul Ore.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
LOGO TESTING Team 8: 1.Nguyễn Hoàng Khánh 2.Dương Quốc Việt 3.Trang Thế Vinh.
Theory and Practice of Software Testing
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Software Quality Assurance and Testing Fazal Rehman Shamil.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
White Box Testing by : Andika Bayu H.
Testing JUnit Testing. Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
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.
Testing Integral part of the software development process.
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Subject Name: Software Testing Subject Code: 10CS842 Prepared By:
Software Testing.
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Software Testing.
Software Testing.
Testing and Debugging PPT By :Dr. R. Mall.
Cyclomatic complexity
Software Engineering (CSI 321)
Verification and Validation Overview
Verification & Validation
Software engineering – 1
Chapter 13 & 14 Software Testing Strategies and Techniques
Types of Testing Visit to more Learning Resources.
Software testing strategies 2
Software Testing (Lecture 11-a)
Lecture 09:Software Testing
Verification and Validation Unit Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Automated Fitness Guided Fault Localization
Software testing.
Informatics 43 – April 28, 2016.
Baisc Of 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.
Control Structure Testing
Software Testing “If you can’t test it, you can’t design it”
Software Testing.
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Unit III – Chapter 3 Path Testing.
Presentation transcript:

Authors: Nirav Desai, prof. hema gaikwad International Conference on Computing, Communication and Automation 2015 Galgotias University Gurgaon Paper ID: 707 Graph based verification and identification of defects by binary search on a graph Authors: Nirav Desai, prof. hema gaikwad Symbiosis institute of computer studies and research, PUNE, MAHARASHTRA

VERIFICATION AND VALIDATION Software testing is divided into 2 parts: Verification and Validation. Verification relates to the passive inspection of code by visualizations and walk-throughs. It helps to identify whether we are building the system right Validation is dynamic testing of the code using different test patterns which is used to identify if the system is functioning correctly It helps to identify if we built the right system. ISO 9126 and IEEE STANDARD 829 define the standard methodologies for software testing. Test plan strategies (model based, analytical risk based or requirements based, standards driven, etc) Test environment setup Work breakdown structure and resource breakdown structure Test Results Documentation

Software Defect Lifecycle Defect Open Troubleshoot Defer Reject Defect Close Test Defect Identification Defects are identified by testers during the verification and validation process If the test lead accepts the identified defects, a new defect is opened The software developers can either debug and fix the defect, defer the debugging to new development cycle or reject the defect as duplicated Software Tester verifies the software operation against a reference set The debugged program is tested again and if no defects are found, defect is closed, else the defect is re-opened

VERIFICATION Problems in the software are identified by code walkthroughs and passive inspection Helps to check the process of software coding by checking for errors at the time they are introduced Graph based verification helps in easier walk-throughs of the code. A visual inspection of the graph of the software control flow helps to identify the number of test cases. Cyclomatic complexity of graph = e – n + 2*g Where e = number of edges, n = number of nodes and g = no. of independent sub graphs

CYCLOMATIC GRAPH OF CODE No. of edges = 8 No. of nodes = 7 No. of test cases = 8 – 7 + 2 = 3 Test Case 1: A = 354 Test Case 2: A != 354 and B > C Test Case 3: A != 354 and B < C Reference: Foundations of Software Testing by Rex Black

DEPENDENCY GRAPH OF CODE DEPENDENCY GRAPH GENERATED USING ENSOFT ATLAS: HIGHLIGHTS ALL DEPENDENCIES FOR A GIVEN LINE OF CODE

SEARCH FOR DEFECTS: LIBLIT05 Liblit05 algorithm uses statistical techniques to search for defects in a code For each predicate P’ in program P, Liblit05 estimates two conditional probabilities respectively: Pr1 = Pr(P fails|P’ is ever observed) and Pr2 = Pr(P fails|P’ is ever observed as true). It then treats the probability difference Pr2−Pr1 as an indicator of how relevant P is to the bug. Therefore, Liblit05 essentially regards the predicates whose true evaluations correlate with program failures as bug-relevant. Because Liblit05 only considers whether a predicate has ever been evaluated as true in one run, it loses its discrimination power when a predicate P is observed as true at least once in every execution. This algorithm does not look at how many times a given predicate is evaluated so the algorithm fails when there are problems with loops.

SEARCH FOR DEFECTS: SOBER A has an extra chance to be true in incorrect runs. Program 1 was tested with 5,542 test cases that are available in the Siemens suite. The average probability of A being evaluated as true within one incorrect run is 0.9024 and it is 0.2261 in correct ones.

SEARCH FOR DEFECTS: BINARY SEARCH ON A GRAPH Set the break point in execution half way through the code and test if the output is correct. If output is as expected, the defect is in the latter half of the code or else in the previous half. If the defect is in the latter half of the code, set the break point at the half way mark of the remaining code. For a defect in the preceding part of the code, set the break point at the half way mark of the preceding section. Repeat this process of setting breakpoints till the defect has been localized to a specific line of code. Plot a dependency graph of this line of code using ENSOFT ATLAS. This will highlight all the nodes that we need to look at to identify where the problem lies. The binary search approach should identify the defective line of code in log(N) number of steps.

SEARCH FOR DEFECTS: BINARY SEARCH ON A GRAPH Difficulties: Programs have call back functions and return functions that make the graph a 2d tree and not a simple 1d tree (linked list) The search algorithm has to be optimized for binary search on a 2d tree Typically, set breakpoints at the ends (entry and exit points) of the loops before setting any break points inside the loops Set breakpoints at the branching conditions instead of return statements This would reduce the effort required since loops are executed multiple number of times and you can eliminate a large chunk of repetitive code using a single break point if it is at the entry or exit point Scope for automation of this algorithm with evaluation of all conditions and storing results in a buffer is available for future work.

BINARY SEARCH: TRIAL WALKTHROUGH First breakpoint Second breakpoint

REFERENCES 1. Dorothy Graham, Erik van Veenendaal, Isabel Evans, Rex Black, “Foundations of Software Testing (ISTQB Certification)” 2. Zimmermann, T.; Nagappan, N., "Predicting defects with program dependencies," Empirical Software Engineering and Measurement, 2009. ESEM 2009. 3rd International Symposium on , vol., no., pp.435,438, 15-16 Oct. 2009 3. Vijay D’Silva, Daniel Kroening, and Georg Weissenbacher, “A Survey of Automated Techniques for Formal Software Verification” IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, VOL. 27, NO. 7, JULY 2008 4. Eichinger, F. (2011). Data-mining techniques for call-graph-based software-defect localisation (Doctoral dissertation, Karlsruher Inst. für Technologie, Diss., 2011). 5. Deering, T., Kothari, S., Sauceda, J., & Mathews, J. (2014, May). Atlas: a new way to explore software, build analysis tools. In Companion Proceedings of the 36th International Conference on Software Engineering (pp. 588- 591). ACM. 6. Jon Jouis Benteley, Stanford University, “Multi-dimensional binary search trees, used for associative searching.” Communications of the ACM, September 1975, Volume 18, Number 9