Software testing articles on concepts and issues

Page 1

https://www.eduzhai.net/ 2nd INTERNATIONAL CONFERENCE ON ADVANCED COMPUTING AND SOFTWARE ENGINEERING (ICACSE-2019)

Software Testing: Concepts and Issues Anshita Malviya1 Abstract—The utmost requirement of every individual is the Quality Product. To produce quality software we resort to the testing. About three decades ago, testing consumed more than 50% of the total time and cost expended in the development of the software which still exists today. The main reason behind the fact is that software development is mostly done by humans. We cannot develop software which needs not to be updated in its lifespan. As the software evolves the testing process should also evolve with it. This paper presents concept of Software Testing and also focuses on the burning research issues in Software Testing. Keywords: Quality, Error, Fault, Failure, Issues

Find your perfect share file on eduzhai.net.

 I.

INTRODUCTION 1

Software testing is a vital phase of software development process. Testing refers to the process of executing the software or the part of the software with the intent of finding the errors. Testing can depict that errors are present, it cannot show its absence [10]. Software testing is a very expensive process and it consumes about one third to one half of the cost of a typical development project. The importance of software testing increases as software evolves more and more into our day to day lives. Software testing is one of the important phase of software development life cycle (SDLC). We can classify software testing into two major groups: Defect testing and Statistical testing. Defect testing means to find the faults in the software whereas Statistical testing means to measure the reliability of the software. Defect testing can be classified in two groups which are Static testing and Dynamic testing. Some of the techniques of static testing are Walkthrough, Code inspections, Views, Formal proofs, etc. Whenever we use testing it always refers to Dynamic testing. Some of the techniques of Dynamic testing are Black box or Functional testing, White box or Structural testing, Heuristic Testing (Error guessing) and Interface Testing. The Black box testing is further classified as Boundary Value Analysis (BVA), Equivalence Class Partitioning, Decision Table Based Testing and Cause Effect Graphing. The White box testing consists of Basis Path Testing, DD Path Testing and Data Flow Testing. The remaining part of the paper consists of the following sections. Section 2 describes why we test. Error, Faults and Failures are explained in section 3. Section 4 presents the idea about the concept of Test, Test Case and Test Suite and also presents Test case identification approach. Section 5 discusses the debate on Functional and Structural testing. Boundary Value Testing Technique 1B.Tech

Student, Rajkiya Engineering College, Sonbhadra, Uttar Pradesh (India) E-mail: anshitamalviya2010@gmail.com

is described briefly in section 6. Section 7 tells about the current challenges and research issues in software testing. Section 8 concludes. II. WHY DO WE TEST? There are three main reasons of software testing. Firstly software testing is used to make the judgement about the quality and the acceptability of the software. Secondly it is used to discover the problems found in the software. And lastly we are fallible that is we all make mistakes, some of those mistakes are unimportant but some of them are dangerous and expensive. There is a need to check everything and anything we produce because things can go wrong—humans make mistake all the time. III. ERRORS, FAULTS AND FAILURES Software testing process involves confusing terminologies, errors, faults and failures are one of them. They are synonyms to each other. They all mean a state in which the software fails to perform its task but in technical terms they all have the unique meaning. Error: Humans make errors. It can also be said as mistakes. The mistakes can be made by people in their actions or the products that result from their actions. It can occur almost everywhere. When determined about the errors in ones thought, actions and the products generated, we should resort to the process of testing. The mistakes done at the time of coding is referred to as bugs. Fault: A fault is the consequence of an error. It is the depiction of an error, where depiction is the means of expression such as narrative text, DFD, source code, etc. It can also be said as defect. It can be evasive. It is the illustration of one or more errors. Failure: Failure is the impotence of a system to carry out required function according to its specification. When fault executes then the failure is said to occur. The departure from system’s required behaviour is said to be failure. It arises when a faulty piece of code is accomplished leading to an imprecise state that propagates to the program’s output.

Electronic copy available at: https://www.eduzhai.net/ ?


2nd International Conference on Advanced Computing and Software Engineering (ICACSE-2019)

658

Fault is an interior view of the system, as perceived by the eyes of the developers whereas the Failure is an exterior view of the system: a difficulty that user sees. It is not compulsory that every fault corresponds to a failure [10, 11]. IV. TEST, TEST CASE AND TEST SUITE The fundamental quality of software testing is to stimulate a set of test cases for the object being tested. In practice both Test and Test cases are same and treated as synonyms because they are used interchangeably. In software development Test suite is a collection of Test cases or can say is a container that has a set of tests that are considered to be used to test a software program to show that it has some designated set of behaviours. In a simple basic form a Test case has a collection of inputs and a list of presumed outputs [12]. There are two types of inputs: pre-conditions and actual inputs which are identified by some testing methods. The presumed outputs are also of two types: post-conditions and actual outputs. Figure 1 depicts the standard test case structure. 1.

NAME OF TEST CASE

2.

TEST CASE SCENARIO

3.

TEST STEPS

4.

PURPOSE OF TEST CASE

5.

PREREQUISITE

6.

INPUT DATA

7.

STEP NAME

8.

STEP DESCRIPTION

9.

EXPECTED OUTPUTS

10. EXECUTION HISTORY Figure 1: Structure of test case

Identifying Test Cases There are two fundamental approaches of testing known as Functional and Structural Testing. They are used for the identification of test cases. Both of these approaches has many different testing methods. 1) Functional Testing Functional testing is based on the perspective that any program which can be considered as a function maps the values from its input domain to values on its output range. This testing leads to the term BLACK BOX TESTING. In this approach the only information which is used is the specification of the software. It is independent of the implementation of the software. The development of the test cases occurs in parallel with the implementation. It has a disadvantage of the existence of significant redundancies among the test cases which are compounded by the possibility of the presence of gaps of untested software.

2) Structural Testing Structural Testing is also known as white box (clear box) testing. Its implementation is known and it is used for the identification of the test cases. The ability of this approach to “see inside” the black box permits the tester to identify the test cases which is based on how the function is implemented. V. DEBATE ON FUNCTIONAL AND STRUCTURAL TESTING According to Robert Poston, ” Structural tool has been wasting tester’s time since 1970s...it does not support good software testing practice and should not be in the tester’s toolkit.” As said by Edward Miller, “Branch coverage [a Structural test coverage metric], if attained at 85% or better level, tends to identify twice the number of defects that would have been found by ‘intuitive’ (Functional) testing.”[10] For the testing of software we need both of these approach because alone they are not sufficient. Let us take an example suppose there are 10 behaviours and only 9 are implemented, the testing approach based on structural testing doesn’t recognise the missing behaviour. And in the same way if we implement 12 behaviours instead of the 10 specified behaviours the testing approach based on functional testing doesn’t recognise the 2 additional implemented behaviour of the software. VI. BOUNDARY VALUE TESTING TECHNIQUE It is a Functional approach of test case generation. It is found that the test cases that are near to boundary conditions have greater chances of detecting an error. The boundary conditions means an input variable value can be on the boundary, below it or just above the boundary. The Boundary Value Testing Technique is based on the assumption of the Theory of Reliability which is known as “single fault” assumption. According to this assumption failures are hardly the outcome of the simultaneous occurrence of two or more faults. The number of test cases given by the boundary value testing technique for a function consisting of x variables is 4x+1. The aim of the boundary value testing technique is to use the input values at their minimum, just above the minimum, a nominal value, just below their maximum and at their maximum. Now let us take a program with 3 input values (a, b, c). The number of test cases will be 4*3+1 =13. The test cases of the boundary value testing technique for our program of 3 input variables are: {(amin, bnom, cnom), (amin+, bnom, cnom ), (anom, bnom, cnom), (amax-, bnom, cnom), (amax, bnom, cnom), (anom, bmin, cnom), (anom, bmin+, cnom), (anom, bnom, cnom), (anom, bmax-, cnom), (anom, bmax, cnom), (anom, bnom, cmin), (anom, bnom, cmin+), (anom, bnom, cnom), (anom, bnom, cmax-), (anom, bnom, cmax)} Let us consider a program for the determination of the nature of roots of a quadrilateral equation. Its input is a triple of positive integers (say a, b, c) and values may be from interval [0,100]. The program output may have one

Electronic copy available at: https://www.eduzhai.net/ ?


Software Testing: Concepts and Issues

659

of the following words: [Not a quadratic equation; Real roots; Imaginary roots, Equal roots].Quadratic equation will be of type: ax2+bx+c=0Roots are real if (b2-4ac)>0: Roots are imaginary if (b2-4ac) <0, Roots are equal if (b2-4ac) =0 and the equation is not quadratic if a=0. Table 1 shows boundary value test cases.

4.

Table 1: Boundary Value Test Cases

5.

Test Case No.

Input Values Expected Output

1 2 3 4 5 6 7 8 9 10 11 12 13 14

a 0 1 50 99 100 50 50 50 50 50 50 50 50 50

b 50 50 50 50 50 0 1 99 50 100 50 50 50 50

c 50 50 50 50 50 50 50 50 50 50 0 1 50 99

Not quadratic Real roots Imaginary roots Imaginary roots Imaginary roots Imaginary roots Imaginary roots Imaginary roots Imaginary roots Equal roots Real roots Real roots Imaginary roots Imaginary roots

15

50

50

100

Imaginary roots

In the above table total number of test cases is 15, in which 3 test cases are similar that is 3, 9, 13. Therefore, any two of them are redundant and will be removed, resulting in 13 test cases. VII. RESEARCH ISSUES IN SOFTWARE TESTING Research issues in software testing faces major challenges which are discussed below. 1. One of the challenging issues of Software Testing is when to migrate it to the cloud [1]. There is no specific guideline available in literature to guide the tester to migrate the software testing to the cloud. It requires more and further study and research to provide a framework on this issue. 2. The designing of new software testing technique and checking its effectiveness is a major issue for large scale software system [2]. 3. There are two ways for the generation of test cases, one is the manual and the other is the automatic test case generation. Manual is time consuming whereas automatic is faster. Nowadays the automatic test case generation technique is becoming popular which overcome many of the weakness in manual testing technique. So, the designing of efficient Automatic test case generation technique is the key issue of software testing [3]. In literature numerous test case generation technique have been proposed like Random Test case generator, Structural or path oriented test case generators, Goal oriented test data generators, Intelligent test data generators and Genetic algorithms, etc. [4,5,6,7].

Automated test case generation algorithm generates automatically test cases. The generated test cases contain redundant test cases too. There is a problem of removing the redundant test cases. There is a need to design and develop efficient test case minimization technique [8]. Some more challenging issues of Software Testing are weakness of testing to identify uncover errors, untrained testers, few testing models, maintenance of testing as a service, poor design, poor documentation and poor planning and coordination[9]. The software developer should keep in mind while developing software that it should be properly designed and documented to overcome the several issues of Software Testing. There is a scope of developing new software testing models and framework that can help the tester to refer as a guideline. VIII. CONCLUSION

This paper provided an overview of Software Testing concepts and discussed various challenging research issues. We have seen that issues are tackled but there is a need of efficient techniques and tools. It is found that for most of the testing activities several tools exist to automate the testing activities but still there is a room to develop new and advanced tools for the purpose of testing. REFERENCES [1]

Parveen T. and Tilley S. (2010 IEEE). “When to Migrate Software Testing to the Cloud?”, Third International Conference on Software Testing, Verification and Validation Workshops. [2] Kassab M., DeFranco J.F. and Laplante P.A. (Sept./Oct., 2017). “SOFTWARE TESTING The State of the Practice”, IEEE Software. [3] Sharma A.K. (Sept., 2013). “Optimized Test Case Generation Using Genetic Algorithm”, International Journal of Computing and Business Research (IJCBR), Vol. 4, Issue 3. [4] Pargas R.P., Harrold M.J. and Peck R.R., “Test-Data Generation Using Genetic Algorithms”, Journal of Software Testing, Verification and Reliability, 1999, to appear, Wiley copyright. [5] Mateen A., Nazir M., and Awan S.A. (Oct., 2016). “Optimization of Test Case Generation using Genetic Algorithm (GA)”, International Journal of Computer Applications (0975-8887), Vol. 151(7). [6] Khan R., and Dr. Amjad M. (Dec., 2014). “A Review on Automated Test Case Generation using Genetic Algorithms”, International Journal of Advanced Research in Computer Science and Software Engineering, Vol. 4, Issue 12. [7] Liu D., Wang X., and Wang J. (10 Feb., 2013). “Automatic Test Case Generation Based on Genetic Algorithm”, Journal of Theoretical and Applied Information Technology, Vol. 48, No. 1. [8] Saifan A.A. (July, 2016). “Test Case Reduction Using Data Mining Classifier Techniques”, Journal of Software, Vol. 11, November 7. [9] Mansor Z. and Ndudi E.E., “Issues, Challenges and Best Practices of Software Testing Activity”, Recent Advances on Computer Engineering. [10] Jorgensen Paul C., “Software Testing A Craftsman’s Approach Second Edition”, CRC Press. [11] Mathur A.P., “Foundations of Software Testing”, Pearson Education. [12] Naik K., and Tripathy P., “Software Testing and Quality Assurance”, John Wiley and Sons.

Electronic copy available at: https://www.eduzhai.net/ ?


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.