International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, ISSN SOFTWARE TESTING

Similar documents
International Journal of Computer Engineering and Applications, Volume XII, Special Issue, April- ICITDA 18,

Comparison Study of Software Testing Methods and Levels- A Review

Topics in Software Testing

Software Testing CS 408

Part 5. Verification and Validation

[IT6004-SOFTWARE TESTING] UNIT 2

Chapter 11, Testing. Using UML, Patterns, and Java. Object-Oriented Software Engineering

UNIT-4 Black Box & White Box Testing

MONIKA HEINER.

Examination Questions Time allowed: 1 hour 15 minutes

UNIT-4 Black Box & White Box Testing

An Innovative Approach to Investigate Various Software Testing Techniques and Strategies

CSE 403: Software Engineering, Fall courses.cs.washington.edu/courses/cse403/16au/ Unit Testing. Emina Torlak

Sample Exam Syllabus

INTRODUCTION TO SOFTWARE ENGINEERING

CS 424 Software Quality Assurance & Testing LECTURE 3 BASIC CONCEPTS OF SOFTWARE TESTING - I

Terminology. There are many different types of errors and different ways how we can deal with them.

Why testing and analysis. Software Testing. A framework for software testing. Outline. Software Qualities. Dependability Properties

Ingegneria del Software Corso di Laurea in Informatica per il Management

Finding Firmware Defects Class T-18 Sean M. Beatty

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

Bridge Course On Software Testing

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

Software Testing. Software Testing

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Aerospace Software Engineering

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.

Lecture 15 Software Testing

1 Visible deviation from the specification or expected behavior for end-user is called: a) an error b) a fault c) a failure d) a defect e) a mistake

XVIII. Software Testing. Laurea Triennale in Informatica Corso di Ingegneria del Software I A.A. 2006/2007 Andrea Polini

Chapter 9. Software Testing

Higher-order Testing. Stuart Anderson. Stuart Anderson Higher-order Testing c 2011

Verification and Validation

Verification and Validation

10. Software Testing Fundamental Concepts

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing.

Question 1: What is a code walk-through, and how is it performed?

Introduction to Dynamic Analysis

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Security Testing. John Slankas

Darshan Institute of Engineering & Technology Unit : 9

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process

Darshan Institute of Engineering & Technology for Diploma Studies

Digitized Engineering Notebook

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

USTGlobal INNOVATION INFORMATION TECHNOLOGY. Using a Test Design Tool to become a Digital Organization

Testing Process and Methods. CS 490MT/5555, Spring 2017, Yongjie Zheng

Three General Principles of QA. COMP 4004 Fall Notes Adapted from Dr. A. Williams

Chapter 10. Testing and Quality Assurance

Software Testing Interview Question and Answer

Certified Tester Foundation Level(CTFL)

Verification and Validation

Types of Software Testing: Different Testing Types with Details

Software Testing and Maintenance

Quality Assurance in Software Development

Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not.

In-Memory Fuzzing in JAVA

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1

Manual Testing. Software Development Life Cycle. Verification. Mobile Testing

Basic Concepts of Reliability

Verification and Validation. Verification and validation

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process

Object-Oriented Software Engineering Conquering Complex and Changing Systems. Chapter 9, Testing

Software Testing MANUAL TESTING. Introduction to Testing. Software Quality Software Testing Definition. Different Life Cycle Models Waterfall Model

Introduction to Software Testing

Software Testing Fundamentals. Software Testing Techniques. Information Flow in Testing. Testing Objectives

Topics. Software Testing Test Driven Development Black Box Testing Unit Testing White Box Testing Coverage Testing Software Debugging

Ontology Summit 2013: Ontology Evaluation Across the Ontology Lifecyle Track B: Extrinsic Aspects of Ontology Evaluation

Verification and Validation

ADVANCED DIGITAL IC DESIGN. Digital Verification Basic Concepts

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Software Engineering and Scientific Computing

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS SOFTWARE ENGINEERING

Verification Overview Testing Theory and Principles Testing in Practice. Verification. Miaoqing Huang University of Arkansas 1 / 80

Lecture 10: Introduction to Correctness

Sample Question Paper. Software Testing (ETIT 414)

Chapter 9 Quality and Change Management

Chapter 8 Software Testing. Chapter 8 Software testing

Pearson Education 2007 Chapter 9 (RASD 3/e)

QUIZ #5 - Solutions (5pts each)

Software Testing. Software Testing. in the textbook. Chapter 8. Verification and Validation. Verification and Validation: Goals

ΗΜΥ 317 Τεχνολογία Υπολογισμού

Fending Off Cyber Attacks Hardening ECUs by Fuzz Testing

Test Automation. 20 December 2017

People tell me that testing is

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 15 Testing

MACHINE LEARNING BASED METHODOLOGY FOR TESTING OBJECT ORIENTED APPLICATIONS

Software Design Models, Tools & Processes. Lecture 6: Transition Phase Cecilia Mascolo

PESIT Bangalore South Campus

Software Quality Assurance. David Janzen

Taking White Hats to the Laundry: How to Strengthen Testing in Common Criteria

Software Testing. Massimo Felici IF

QMS ISO 9001:2015 CERTIFIED COMPANY Software Testing TRAINING.

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt

Testing. Outline. What is this? Terminology. Erroneous State ( Error ) Algorithmic Fault

Transcription:

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, www.ijcea.com ISSN 2321-3469 SOFTWARE TESTING Rajat Galav 1, Shivank Lavania 2, Brijesh Kumar Singh 3 1, 2, 3 Department of Information Technology ABSTRACT- Testing plays an important role to assure the quality of software. Testing is a process of detecting errors that can be highly effective if performed rigorously. The use of formal specifications provides significant opportunity to develop effective testing techniques. There are three different methods that can be used for software testing. First one is Black- Box Technique, in this technique tester test without having any knowledge of the interior workings of the application. Second is White-Box technique, in this technique the tester needs to have a look inside the source code and find out which unit/chunk of the code is behaving inappropriately. And third is Grey-Box technique, in this technique tester test the application with having a limited knowledge of the internal workings of an application. Our motive to write this research paper first is to research on software testing techniques and their different types which are already developed and can be developed in future. Keywords Black box, formal technique, Grey box, Motive, Software testing, White box I. INTRODUCTION Software testing is important activity in Software Development Life Cycle. Software testing is the process of checking the product correctness and finding errors to confirm correct execution. The testing of software is an important means of assessing the software to determine its quality. Since testing typically consumes 30 to 40%of development efforts, and consumes more effort for systems that require higher levels of reliability, it is a significant part of the software engineering. With the development of Fourth generation languages (4GL), which speeds up the implementation process, the proportion of time devoted to testing increased. Rajat Galav, Shivank Lavania, Brijesh Kumar Singh 1

SOFTWARE TESTING Software testing is not a silver bullet that can guarantee the production of high quality software systems. While a correct correctness proof demonstrates that a software system (which exactly meets its specification) will always operate in a given manner, software testing that is not fully exhaustive can only suggest the presence of flaws and cannot prove their absence. Moreover it is impossible to completely test an application because (1) the domain of program inputs is too large, (2) there are too many possible input paths, and (3) design and specification issues are difficult test. The first and second points present obvious complications and the final point highlights the difficulty of determining if the specification of a problem solution and the design of its implementation are also correct. As the amount of maintenance and upgrade of existing systems grow, significant amount of testing will also be needed to verify systems after changes are made. Despite advances in formal methods and verification techniques, a system still needs to be tested before it is used. Testing remains the truly effective means to assure the quality of a software system of non-trivial complexity, as well as one of the most intricate and least understood areas in software engineering. Testing, an important research area within computer science is likely to become even more important in the future. II. OBJECTIVE OF TESTING The objective of testing is to find problems and fix them to improve quality. Software testing typically represents 40% of a software development budget. There are four main objectives of software testing: 1) Detection: It discovers defects, errors and deficiencies. It determines system capabilities and limitations, quality of components, work products and the system. 2) Prevention: It provides information to prevent or reduce the number of errors clarify system specifications and performance. Identify ways to avoid risk and problems in the future. 3) Improving Quality: By doing effective testing, we can minimize errors and hence improve the quality of software. 4)Satisfies Requirements: To ensure that it satisfy the BRS (Business Requirement Specification ) and SRS (System Requirement Specification ). Test Configuration Predicted Reliability Test Results Errors Error Rate Data Rajat Galav, Shivank Lavania, Brijesh Kumar Singh 2

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, www.ijcea.com ISSN 2321-3469 Corrections Debug Reliability Model Testing Software Configuration Expected results Evaluation III. DIFFERENT TESTING TECHNIQUES A. Black Box Testing Black Box Testing is based on the requirements specifications and there is no need to examining the code in black box testing. This is purely done based on customers view point only tester knows the set of inputs and predictable outputs. 1) Equivalence Partitioning: This technique divides the input domain of a program into equivalence classes from which test cases can be derived, so it can reduce the number of test cases. 2) Boundary Value Analysis: It focuses on testing at boundaries, or where the extreme boundary values are chosen. It includes minimum, maximum, just inside/outside boundaries, error values and typical values. 3) Fuzzing: This technique feeds random input to application. It is used for finding implementation bugs, using malformed/semi-malformed data injection in an automated or semi automated session.. Fuzz testing was developed at the University of Wisconsin Madison in 1989. It's mainly oriented towards command-line and UI fuzzing, and shows that modern operating systems are vulnerable to even simple fuzzing. A fuzzer is implemented in this technique. Fuzzer is a program which feeds data automatically in a semi-random fashion into the program/stack and detect bugs. Fuzzing technique is an attempt to crash the program. 4) Cause-Effect Graph: In this technique, testing begins by creating a graph and establishing the relation between effect and its causes5) Orthogonal Array Testing: It can be applied where input domain is very small, but too large to accommodate exhaustive testing. 6) All Pair Testing: In this technique, test cases are designed to execute all possible discrete combinations of each pair of input parameters. Its main objective is to have a set of test cases that covers all the pairs. 7) State Transition Testing: This type of testing is useful for testing state machine and also for navigation of graphical user interface. Rajat Galav, Shivank Lavania, Brijesh Kumar Singh 3

SOFTWARE TESTING Advantages: 1. Testers need not to have knowledge on specific programming language. 2. Testing is done from user s point of view. 3. It helps to expose any ambiguities or inconsistencies in the requirement specifications. 4. Programmer and tester both are independent of each other. Disadvantages: 1. Test cases are hard to design without clear specifications. 2. Chances of having repetition of tests that are already done by programmer. 3. Some parts of back end are not tested at all. B. White Box Testing White box testing mainly focuses on internal logic and structure of the code. White-box is done when the programmer has techniques full knowledge on the program structure. With this technique it is possible to test every branch and decision in the program. 1) Desk Checking: Desk checking is the primary testing done on the code. The authors who have knowledge in the programming language very well will be involved in desk checking testing. 2) Code Walkthrough: In this testing process a group of technical people go through the code. This is one type of semi-formal review technique. 3) Formal Inspections: Inspection is a formal, efficient and economical method of finding errors in design and code. It s a formal review and aimed at detecting all faults, violations and other side effects. 4) Control Flow Testing: It is a structural testing strategy that uses the program control flow as a model control flow and favors more but simpler paths over fewer but complicated path. 5) Basis Path Testing: Basis path testing allows the test case designer to produce a logical complexity measure of procedural design and then uses this measure as an approach for outlining a basic set of execution paths. 6) Data Flow testing: In this type of testing the control flow graph is annotated with the information about how the program variables are define and used. Rajat Galav, Shivank Lavania, Brijesh Kumar Singh 4

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, www.ijcea.com ISSN 2321-3469 7) Loop Testing: It exclusively focuses on the validity of loop construct. Advantages: 1. It reveals error in hidden code by removing extra lines of code. 2. Maximum coverage is attained during test scenario writing. 3. Developer carefully gives reasons about implementation. Disadvantages: 1. A skilled tester is needed to carry out this testing because knowledge of internal structure is required. 2. Many paths will remain untested as it is very difficult to look into every nook and corner to find out hidden errors. C. Grey Box Testing: Gray-box testing attempts, and generally succeeds, to combine the benefits of both black-box and white-box testing. Gray-box testing takes the straight-forward approach of black-box testing, but also employs some limited knowledge of the inner workings of the application. White box + Black box = Grey box, it is a technique to test the application with limited knowledge of the internal working of an application and also has the knowledge of fundamental aspects of the system. Therefore, a tester can verify both the output of the user interface and also the process that leads to that user interface output. Gray-box testing can be applied to most testing phases; however it is mostly used in integration testing. 2) Orthogonal Array Testing: This type of testing use as subset of all possible combinations.matrix Testing: In matrix testing the status report of the project is stated. 3) Regression Testing: If new changes are made in software, regression testing implies running of test cases. 4) Pattern Testing: Pattern testing verifies the good application for its architecture and design. Advantages: 1. It provides combined benefit of black box and white box testing techniques. Rajat Galav, Shivank Lavania, Brijesh Kumar Singh 5

SOFTWARE TESTING 2. In grey box testing, tester can design excellent test scenarios. 3. Unbiased testing 4. Create an intelligent test authoring. Disadvantages: 1. Test coverage is limited as the access to source code is not available. 2. Many program paths remain untested. 3. The test cases can be redundant. TABLE 1 COMPARISON Black Box Testing White Box Testing Grey Box Testing BETWEEN THREE FORMS OF TESTING TECHNIQUES Sr. No. 1. Analyses Full knowledge of Partial knowledge of fundamental aspects internal working. internal working. only i.e.no knowledge of internal working. 2. It is least exhaustive Potentially most It is somewhere in and time consuming. exhaustive and between the two. time consuming REFERENCES: [1] P. Ron, Software testing, Indianapolis:Sam's, vol. 2, 2001. [2] S. Amland, "Risk-based testing", Journal of Systems and Software, vol. 53, no. 3, pp. 287-295, Sep. 2000. [3] Redmill Felix, "Theory and Practice of Risk-based Testing", Software Testing Verification and Reliability, vol. 15, no. 1, March 2005. [4] B. Agarwal et al., "Software engineering and testing", Jones & Bartlett Learning, 2010. [5] K. Bogdan, "Automated software test data generation", Software Engineering IEEE Transactions on, vol. 16.8, pp. 870-879, 1990. Rajat Galav, Shivank Lavania, Brijesh Kumar Singh 6