Software Testing Techniques: a Comprehensive Analysis

Total Page:16

File Type:pdf, Size:1020Kb

Software Testing Techniques: a Comprehensive Analysis SOFTWARE TESTING TECHNIQUES: A COMPREHENSIVE ANALYSIS 1SHLOAK CHOPRA, 2KSHITIJ MUNDRA, 3SWARNALATHA P. 1,2,3School of Computer Science Engineering, Vellore Institute of Technology, Vellore Abstract - As our dependence on the software systems is increasing at a breakneck speed- it has become paramount to develop a threshold amount of reliability and trust between us and the software systems. Software Testing is becoming paramount to ensure the promised and expected functional and non-functional requirements are fulfilled by every software system. Software testing has become an inherent part of the Software Development Lifecycle, and has become sacrosanct to test and maintain the sanctity of software. The testing methodologies and techniques should be enhanced and implemented in a proper manner, to ensure that quality is embedded in the software from its conception to deployment. This paper aims to elaborate on existing testing methodologies and discuss upon their application and relations between one another for incorporating better quality assurance. It also elaborates upon some improvements in certain testing methods and techniques. Keywords - Black-box testing, Grey-box testing, Testing Methodologies, White Box Testing I. INTRODUCTION third phase of testing is Test Execution where the test cases previously generated are put to use, and the In recent times, our dependence on software system bugs that are relevant are reported in the following has been growing exponentially and with this phase, which is called the Test Reporting Phase. The growing dependence, the concern for reliability and final stage of testing cycle is Test Result Analysis security in using these software systems is evolving. where the developer does the defect analysis for the Software Engineering is of great use in the fields of software, and this process can be handled along with management systems, system dynamics and computer the software clients if he has a proper understanding science [1]. It has become necessary to embed testing of the development techniques used for development techniques at each level in the Software Development and his requirements [4]. The following terms are Lifecycle i.e. Requirement Specification, Analysis, usually used in the testing procedures and have been Design Development, Code Development, explained in the simplest of means below: Deployment of Software and Maintenance phase. The Verification: It is a concept in which it is guaranteed incorporation of testing methodologies at each phase that the software system that has been designed is guarantees the authenticity and quality at that level. working in a manner that is acceptable and suitable to The flaws at any particular level can cause serious the user base. implications at the cascading levels [2]. The testing process can be divided into various types. When the classification is done based on the stage it is opted for, then it can be divided into- Unit Testing, Integration Testing, Functional Testing, System Testing and Acceptance Testing. While the first four are covered by the software developer or by an engineer who is responsible for quality assurance known as software tester [3], the client or the target users of the software generally do the last. The whole process of testing can also be categorized upon the knowledge of the system undergoing the test; it can be broadly divided into Black Box, Grey Box and White Box Testing. There are various types of testing strategies that are applied with different aim and objective to test a software application. The Testing Cycle can be broadly categorized into several phases, ranging from the preliminary Test Planning to the final Test Results. The foremost phase is Test Planning and is the review and documentation of all the processes that need to be carried on during the entire testing process. Test Case Development is the next phase in the testing cycle, in which the main aim is the development of test cases, which would be used for testing the software. The Figure 1: Testing Techniques-Classification Proceedings of ASAR International Conference, 24th December, 2017, Chennai, India 60 2016 6th International Conference on Information and Communication Technology for The Muslim World Software Testing Techniques: A Comprehensive Analysis Validation: This is a concept in which it is C. Loop Testing: The loops are generally avoided determined that the software system is developed as it while evaluating and testing CFGs, because the loop was expected. testing methodology is intricately delicate and drastically different. Each time when the loop is II. EXISTING TESTING TECHNIQUES traversed, it is counted as a distinct path, but when two or more loops are concatenated, the number of There are a plethora of existing techniques applied in distinct path multiplies, and as the loop is repeated, the domain of Software Testing, but they can be the combinational complexity exponentially increases broadly be categorized under the masthead of- White [8]. Using the concept of cyclomatic complexity, an Box Testing, Black Box Testing and Grey Box often-used software metric we can gauge the logical Testing [5]. The first step is to design proper test complexity of a module or modules. cases for each type of testing technique. D. Conditional Testing: This type of testing aims at White Box Testing Techniques: testing all the possible outputs pertaining to any relational or Boolean operator used in any of the The most trivial process of testing the most basic unit modules of the software system. This can be applied of the software- its functionality and the internal in the code development phase of the SDLC, in order architecture of the software system. This to promote quality and reduce the testing time [9]. methodology of testing requires a certain degree of E. Branch/Decision Testing: Branch testing is closely programming expertise and experience in this domain related to decision testing methodology, and for test to design specific test cases. White box testing is also items with only one entry point the branch test called Security Testing technique and help to certify coverage is equivalent to the decision test coverage. It whether the information system secure the data and aims at testing the data flow between modules and perform the corresponding functionality [6]. White produces better results for finite state machines. This box testing techniques are efficient for solving applied technique finds a set of paths minimally problems as the errors can be detected before they which contain all primary and internal gate-level cause any serious implications. input and output lines. It presents a more viable design and test approach. A criteria is used for branch A. Control Flow Testing: The structural or selection, which is called the fitness-function. The implementation view contains many components, two major heuristics used for this fitness function are modules or sub-systems that interact with one the approach level and branch level distance. The another. The complex interactions can be subdivided approach level distance is a more important heuristic into- interactions that occur along an execution path, in this regard, and helps in increasing the efficiency in such paths there is a concurrent flow of errors of branch testing [for details see 10]. which flows down the entire execution path. The second type are the ones that are specifically related F. Basis Path Testing: Every program contains a to some data items in execution, here the ones defined number of execution paths. This technique aims to latter depend on the earlier ones for values and analyse only one of those which is the basis or at- definitions. Control Flow Graphs (CFGs) are least covers most of the intrinsic concepts of considered a specific case of Finite-State Machines execution throughout a program. A basis set is a finite (FSMs) which are used to check the entry, exit, set of linearly independent execution paths, each of processing and branching nodes for control flow which have to be tested at least once. Each errors. independent path has at least one node different from each of all other paths [11]. When tested based on B. Data Flow Testing: It is one of the oldest testing only the logical structure of the program, many techniques that has been applied in software testing infeasible paths are also tested decreasing the for more than thirty years now. The data objects are efficiency of the testing technique, but when this the most basic unit of any software model, and technique is applied with the control flow graph sharing data objects is considered the weakest form of generated from the code of the software module being coupling and the strongest form of cohesion in a tested the efficiency can be improved. On the basis of software system. The primary objective of this dependence relationships of the predicates involved a method is to derive a set of test cases which execute baseline path can be selected instead of the longest the paths between the definition and the path which has many branch nodes, thus increasing corresponding use of those data items. The data flow the overall efficiency [12]. can be tested through Data Flow Graphs (DFGs) which are similar to the CFGs mentioned earlier. The Black Box Testing Techniques: criterion of Data Flow Testing in general requires that definition use associations (duas)should be covered. The testing approach applied in this type of testing It aims to achieve that each of the duas should be does not include the implementation level detail, as it clearly defined and executed at least once [7]. focuses on the various functionalities that were Proceedings of ASAR International Conference, 24th December, 2017, Chennai, India 61 2016 6th International Conference on Information and Communication Technology for The Muslim World Software Testing Techniques: A Comprehensive Analysis expected from the software by the clients, this is collaborated with the help of the requirement specification document.
Recommended publications
  • Types of Software Testing
    Types of Software Testing We would be glad to have feedback from you. Drop us a line, whether it is a comment, a question, a work proposition or just a hello. You can use either the form below or the contact details on the rightt. Contact details [email protected] +91 811 386 5000 1 Software testing is the way of assessing a software product to distinguish contrasts between given information and expected result. Additionally, to evaluate the characteristic of a product. The testing process evaluates the quality of the software. You know what testing does. No need to explain further. But, are you aware of types of testing. It’s indeed a sea. But before we get to the types, let’s have a look at the standards that needs to be maintained. Standards of Testing The entire test should meet the user prerequisites. Exhaustive testing isn’t conceivable. As we require the ideal quantity of testing in view of the risk evaluation of the application. The entire test to be directed ought to be arranged before executing it. It follows 80/20 rule which expresses that 80% of defects originates from 20% of program parts. Start testing with little parts and extend it to broad components. Software testers know about the different sorts of Software Testing. In this article, we have incorporated majorly all types of software testing which testers, developers, and QA reams more often use in their everyday testing life. Let’s understand them!!! Black box Testing The black box testing is a category of strategy that disregards the interior component of the framework and spotlights on the output created against any input and performance of the system.
    [Show full text]
  • Acceptance Testing Tools - a Different Perspective on Managing Requirements
    Acceptance Testing Tools - A different perspective on managing requirements Wolfgang Emmerich Professor of Distributed Computing University College London http://sse.cs.ucl.ac.uk Learning Objectives • Introduce the V-Model of quality assurance • Stress the importance of testing in terms of software engineering economics • Understand that acceptance tests are requirements specifications • Introduce acceptance and integration testing tools for Test Driven Development • Appreciate that automated acceptance tests are executable requirements specifications 2 V-Model in Distributed System Development Requirements Acceptance Test Software Integration Architecture Test Detailed System Design Test See: B. Boehm Guidelines for Verifying and Validating Software Unit Requirements and Design Code Specifications. Euro IFIP, P. A. Test Samet (editor), North-Holland Publishing Company, IFIP, 1979. 3 1 Traditional Software Development Requirements Acceptance Test Software Integration Architecture Test Detailed System Design Test Unit Code Test 4 Test Driven Development of Distributed Systems Use Cases/ User Stories Acceptance QoS Requirements Test Software Integration & Architecture System Test Detailed Unit Design Test These tests Code should be automated 5 Advantages of Test Driven Development • Early definition of acceptance tests reveals incomplete requirements • Early formalization of requirements into automated acceptance tests unearths ambiguities • Flaws in distributed software architectures (there often are many!) are discovered early • Unit tests become precise specifications • Early resolution improves productivity (see next slide) 6 2 Software Engineering Economics See: B. Boehm: Software Engineering Economics. Prentice Hall. 1981 7 An Example Consider an on-line car dealership User Story: • I first select a locale to determine the language shown at the user interface. I then select the SUV I want to buy.
    [Show full text]
  • Model-Based Fuzzing Using Symbolic Transition Systems
    Model-Based Fuzzing Using Symbolic Transition Systems Wouter Bohlken [email protected] January 31, 2021, 48 pages Academic supervisor: Dr. Ana-Maria Oprescu, [email protected] Daily supervisor: Dr. Machiel van der Bijl, [email protected] Host organisation: Axini, https://www.axini.com Universiteit van Amsterdam Faculteit der Natuurwetenschappen, Wiskunde en Informatica Master Software Engineering http://www.software-engineering-amsterdam.nl Abstract As software is getting more complex, the need for thorough testing increases at the same rate. Model- Based Testing (MBT) is a technique for thorough functional testing. Model-Based Testing uses a formal definition of a program and automatically extracts test cases. While MBT is useful for functional testing, non-functional security testing is not covered in this approach. Software vulnerabilities, when exploited, can lead to serious damage in industry. Finding flaws in software is a complicated, laborious, and ex- pensive task, therefore, automated security testing is of high relevance. Fuzzing is one of the most popular and effective techniques for automatically detecting vulnerabilities in software. Many differ- ent fuzzing approaches have been developed in recent years. Research has shown that there is no single fuzzer that works best on all types of software, and different fuzzers should be used for different purposes. In this research, we conducted a systematic review of state-of-the-art fuzzers and composed a list of candidate fuzzers that can be combined with MBT. We present two approaches on how to combine these two techniques: offline and online. An offline approach fully utilizes an existing fuzzer and automatically extracts relevant information from a model, which is then used for fuzzing.
    [Show full text]
  • An Analysis of Current Guidance in the Certification of Airborne Software
    An Analysis of Current Guidance in the Certification of Airborne Software by Ryan Erwin Berk B.S., Mathematics I Massachusetts Institute of Technology, 2002 B.S., Management Science I Massachusetts Institute of Technology, 2002 Submitted to the System Design and Management Program In Partial Fulfillment of the Requirements for the Degree of Master of Science in Engineering and Management at the ARCHIVES MASSACHUSETrS INS E. MASSACHUSETTS INSTITUTE OF TECHNOLOGY OF TECHNOLOGY June 2009 SEP 2 3 2009 © 2009 Ryan Erwin Berk LIBRARIES All Rights Reserved The author hereby grants to MIT permission to reproduce and to distribute publicly paper and electronic copies of this thesis document in whole or in part in any medium now known or hereafter created. Signature of Author Ryan Erwin Berk / System Design & Management Program May 8, 2009 Certified by _ Nancy Leveson Thesis Supervisor Professor of Aeronautics and Astronautics pm-m A 11A Professor of Engineering Systems Accepted by _ Patrick Hale Director System Design and Management Program This page is intentionally left blank. An Analysis of Current Guidance in the Certification of Airborne Software by Ryan Erwin Berk Submitted to the System Design and Management Program on May 8, 2009 in Partial Fulfillment of the Requirements for the Degree of Master of Science in Engineering and Management ABSTRACT The use of software in commercial aviation has expanded over the last two decades, moving from commercial passenger transport down into single-engine piston aircraft. The most comprehensive and recent official guidance on software certification guidelines was approved in 1992 as DO-178B, before the widespread use of object-oriented design and complex aircraft systems integration in general aviation (GA).
    [Show full text]
  • Acceptance Testing How Cslim and Fitnesse Can Help You Test Your Embedded System
    Acceptance Testing How CSlim and FitNesse Can Help You Test Your Embedded System Doug Bradbury Software Craftsman, 8th Light Tutorial Environment git clone git://github.com/dougbradbury/c_learning.git cd c_learning ./bootstrap.sh or with a live CD: cp -R cslim_agile_package c_clearning cd c_learning git pull ./bootstrap.sh Overview Talk w/ exercises: Acceptance Tests Tutorial: Writing Acceptance tests Tutorial: Fitnesse Tutorial: CSlim Talk: Embedded Systems Integration Bonus Topics Introductions Who are you? Where do you work? What experience do you have with ... embedded systems? acceptance testing? FitNesse and Slim? Objectives As a result of this course you will be able to: Understand the purposes of acceptance testing; Use acceptance tests to define and negotiate scope on embedded systems projects; Integrate a CSlim Server into your embedded systems; Objectives (cont) As a result of this course you will be able to: Add CSlim fixtures to your embedded system; Write Fitnesse tests to drive the execution of CSlim fixtures; Write and maintain suites of tests in a responsible manner. Points on a star How many points does this star have? Star Point Specification Points on a star are counted by the number of exterior points. Points on a star How many points does this star have? By Example 3 5 9 Points on a star Now, how many points does this star have? Robo-draw Pick a partner ... Acceptance Testing Collaboratively producing examples of what a piece of software is supposed to do Unit Tests help you build the code right. Acceptance Tests
    [Show full text]
  • Evaluation Approaches in Software Testing Ayaz Farooq, Reiner R
    Nr.: FIN-05-2008 Evaluation Approaches in Software Testing Ayaz Farooq, Reiner R. Dumke Arbeitsgruppe Softwaretechnik Fakultät für Informatik Otto-von-Guericke-Universität Magdeburg Impressum (§ 10 MDStV): Herausgeber: Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Der Dekan Verantwortlich für diese Ausgabe: Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Reiner Dumke Postfach 4120 39016 Magdeburg E-Mail: [email protected] http://www.cs.uni-magdeburg.de/Preprints.html Auflage: 81 Redaktionsschluss: Juli 2008 Herstellung: Dezernat Allgemeine Angelegenheiten, Sachgebiet Reproduktion Bezug: Universitätsbibliothek/Hochschulschriften- und Tauschstelle Otto-von-Guericke-University of Magdeburg Faculty of Computer Science Institute for Distributed Systems Software Engineering Group Evaluation Approaches in Software Testing Authors: Ayaz Farooq Reiner R. Dumke University of Magdeburg Faculty of Computer Science P.O. Box 4120, 39016 Magdeburg Germany Farooq, Ayaz Dumke, Reiner R. Evaluation Approaches in Software Testing Technical Report Otto-von-Guericke-University of Magdeburg 2008. Contents i Contents 1 Introduction 1 1.1 Evaluation Defined . 2 1.2 Evaluation in Software Engineering . 2 1.3 Evaluation in Software Testing . 3 1.4 Structure of the Report . 5 2 Test Processes: Basics & Maturities 7 2.1 Test Process Fundamentals . 7 2.1.1 Test Process Contexts . 9 2.1.2 Research over Test Process . 10 2.2 Test Process Definition & Modeling . 11 2.2.1 Generic Test Process Descriptions . 11 2.2.1.1 Test Management Approach-TMap . 13 2.2.1.2 Drabick’s Formal Testing Process . 13 2.2.1.3 Test Driven Development . 15 2.2.1.4 Independent Verification & Validation . 17 2.2.2 Domain Specific Test Processes .
    [Show full text]
  • Software Testing: Essential Phase of SDLC and a Comparative Study Of
    International Journal of System and Software Engineering Volume 5 Issue 2, December 2017 ISSN.: 2321-6107 Software Testing: Essential Phase of SDLC and a Comparative Study of Software Testing Techniques Sushma Malik Assistant Professor, Institute of Innovation in Technology and Management, Janak Puri, New Delhi, India. Email: [email protected] Abstract: Software Development Life-Cycle (SDLC) follows In the software development process, the problem (Software) the different activities that are used in the development of a can be dividing in the following activities [3]: software product. SDLC is also called the software process ∑ Understanding the problem and it is the lifeline of any Software Development Model. ∑ Decide a plan for the solution Software Processes decide the survival of a particular software development model in the market as well as in ∑ Coding for the designed solution software organization and Software testing is a process of ∑ Testing the definite program finding software bugs while executing a program so that we get the zero defect software. The main objective of software These activities may be very complex for large systems. So, testing is to evaluating the competence and usability of a each of the activity has to be broken into smaller sub-activities software. Software testing is an important part of the SDLC or steps. These steps are then handled effectively to produce a because through software testing getting the quality of the software project or system. The basic steps involved in software software. Lots of advancements have been done through project development are: various verification techniques, but still we need software to 1) Requirement Analysis and Specification: The goal of be fully tested before handed to the customer.
    [Show full text]
  • Continuous Quality and Testing to Accelerate Application Development
    Continuous Quality and Testing to Accelerate Application Development How to assess your current testing maturity level and practice continuous testing for DevOps Continuous Quality and Testing to Accelerate Application Development // 1 Table of Contents 03 Introduction 04 Why Is Continuous Quality and Testing Maturity Important to DevOps? 05 Continuous Testing Engineers Quality into DevOps 07 Best Practices for Well- Engineered Continuous Testing 08 Continuous Testing Maturity Levels Level 1: Chaos Level 2: Continuous Integration Level 3: Continuous Flow Level 4: Continuous Feedback Level 5: Continuous Improvement 12 Continuous Testing Maturity Assessment 13 How to Get Started with DevOps Testing? 14 Continuous Testing in the Cloud Choosing the right tools for Continuous Testing On-demand Development and Testing Environments with Infrastructure as Code The Right Tests at the Right Time 20 Get Started 20 Conclusion 21 About AWS Marketplace and DevOps Institute 21 Contributors Introduction A successful DevOps implementation reduces the bottlenecks related to testing. These bottlenecks include finding and setting up test environments, test configurations, and test results implementation. These issues are not industry specific. They can be experienced in manufacturing, service businesses, and governments alike. They can be reduced by having a thorough understanding and a disciplined, mature implementation of Continuous Testing and related recommended engineering practices. The best place to start addressing these challenges is having a good understanding of what Continuous Testing is. Marc Hornbeek, the author of Engineering DevOps, describes it as: “A quality assessment strategy in which most tests are automated and integrated as a core and essential part of DevOps. Continuous Testing is much more than simply ‘automating tests.’” In this whitepaper, we’ll address the best practices you can adopt for implementing Continuous Quality and Testing on the AWS Cloud environment in the context of the DevOps model.
    [Show full text]
  • Testing Guidelines
    Guidance Testing Guidelines Purpose This document provides guidelines for testing changes to the BSC Software, Systems and Processes. It also provides a high level view of test procedures that are followed by various parties involved in testing. The management of testing and test deliverables is detailed in the Test Management procedure (Reference 1). The scope of testing for each software release is detailed in the relevant Release Test Strategy document, which is developed by ELEXON and the relevant Service Providers. The scope is agreed by all test participants and captured in the Test Strategy. This document is specifically written as a guideline for testing the BSC Systems. However, the principles described may be used when planning for testing of other software systems. Contents 1. Testing Process Overview ...................................................................................................... 2 2. Application Manager and Developer Testing Overview ........................................................ 4 3. Business Process Operator Testing Overview ....................................................................... 9 4. Terms Used ............................................................................................................................ 13 5. References ............................................................................................................................. 13 6. Appendix A – Test Results ...................................................................................................
    [Show full text]
  • Orthogonal Array Application for Optimized Software Testing
    WSEAS TRANSACTIONS on COMPUTERS Ljubomir Lazic and Nikos Mastorakis Orthogonal Array application for optimal combination of software defect detection techniques choices LJUBOMIR LAZICa, NIKOS MASTORAKISb aTechnical Faculty, University of Novi Pazar Vuka Karadžića bb, 36300 Novi Pazar, SERBIA [email protected] http://www.np.ac.yu bMilitary Institutions of University Education, Hellenic Naval Academy Terma Hatzikyriakou, 18539, Piraeu, Greece [email protected] Abstract: - In this paper, we consider a problem that arises in black box testing: generating small test suites (i.e., sets of test cases) where the combinations that have to be covered are specified by input-output parameter relationships of a software system. That is, we only consider combinations of input parameters that affect an output parameter, and we do not assume that the input parameters have the same number of values. To solve this problem, we propose interaction testing, particularly an Orthogonal Array Testing Strategy (OATS) as a systematic, statistical way of testing pair-wise interactions. In software testing process (STP), it provides a natural mechanism for testing systems to be deployed on a variety of hardware and software configurations. The combinatorial approach to software testing uses models to generate a minimal number of test inputs so that selected combinations of input values are covered. The most common coverage criteria are two-way or pairwise coverage of value combinations, though for higher confidence three-way or higher coverage may be required. This paper presents some examples of software-system test requirements and corresponding models for applying the combinatorial approach to those test requirements. The method bridges contributions from mathematics, design of experiments, software test, and algorithms for application to usability testing.
    [Show full text]
  • Acceptance Testing: What It Is and How to Do It Better - in Context
    BIO PRESENTATION T15 Thursday, May 18, 2006 3:00PM ACCEPTANCE TESTING: WHAT IT IS AND HOW TO DO IT BETTER - IN CONTEXT Michael Bolton DevelopSense International Conference On Software Testing Analysis and Review May 15-19, 2006 Orlando, Florida USA Michael Bolton Michael is a tester, testing trainer, consultant, and writer now living in Toronto after six years in Los Angeles. He spent eight years with Quarterdeck Corporation, née Quarterdeck Office Systems, four years in Toronto and four at the company's head offices in Marina del Rey, California. For the last five years, he has been providing training and consulting services in testing and quality to organizations in Canada, the United States, and around the world. User Acceptance Testing Michael Bolton DevelopSense Toronto, Ontario, Canada [email protected] http://www.developsense.com +1 (416) 656-5160 Acknowledgements • For this talk in particular, I’m deeply indebted to James Bach • For all the talks that I do, I’m indebted to – James Bach –Cem Kaner – Jerry Weinberg – George Carlin – Richard Feynman Question What is User Acceptance Testing to you? What Is UAT? • the last stage of testing • prescribed tests that • compliance with absolutely must pass as a requirements based on stipulation in a contract specific examples • tests not done by a • tests run for a customer, to developer demonstrate functionality • tests done by real users • tests run by a customer to • tests done by proxies for demonstrate functionality real users • not tests but a slam-dunk • Fitnesse-based tests; demo examples of intended • beta testing functionality • tests that must pass for the • tests that mark a code- user to be happy complete milestone The Seven Principles of the Context-Driven School • The value of any practice depends on its context.
    [Show full text]
  • 1 Analyzed Software Testing Techniques ~ Black-Box
    1 ANALYZED SOFTWARE TESTING TECHNIQUES ~ BLACK-BOX TESTING, WHITE-BOX TESTING, GRAYBOX-TESTING COSC 5370 - ADVANCED SOFTWARE ENGINEERING TEXAS A&M UNIVERSITY – CORPUS CHRISTI SPRING 2014 BY MERT EVREN 2 Abstract ~ Testing is an important phase in software engineering Software testing methods are used for examination, verification and validation of the source code of a program. These methods are applied to software applications and their components to uncover hidden errors. Software testing includes experimentally and scientifically inspecting the correctness of the application. Software testing determines the applications quality by evaluating the capability of the application. The entire testing procedure should be well-structured. In this paper, three testing methodologies; black-box testing, white- box testing, and gray-box testing, are analyzed in detail. The remainder of this paper is structured as follows; section 2 describes black-box testing, white-box testing, and gray-box testing. Different testing techniques of each method has shown. These testing methods are analyzed by providing pros and cons of each. Section 3 presents possible improvement on testing methods. Lastly, section 4 concludes the paper. 3 1. INTRODUCTION Testing is an important phase in software engineering. “To develop high-quality software, it is essential to use software testing methods.” [1] Software testing is defined “as a process of accessing the functionality and correctness of a software through analysis.” [4] Software testing methods are used for examination, verification and validation of the source code of a program. These methods are applied to software applications and their components to uncover hidden errors. Software testing includes experimentally and scientifically inspecting the correctness of the application.
    [Show full text]