Essay, Pages 6 (1264 words)
The purpose of this paper is to summarize the work of many researchers and present to the reader their findings about the whole process of automated white-box testing. Topics like advantages and disadvantages, planning, and different techniques will be examined. This paper addresses.This document seeks to provide information about the testing process in the software development lifecycle. It will investigate the significance of testing process, and more specifically what a white-box testing is, what part of it could be automated.
Some automated white-box techniques will be examined along with their advantages and disadvantage.
In the past few years our world experienced a huge technological jump. New cutting-edge technologies arise every day. Along with the new technologies the need of new software products increases accordingly. Nowadays the software is an inseparable part of our lives. It controls our cars, phones, even washing machines. Along with the need of it, the complexity increases too. Software development process includes multiple activities: planning, implementation, testing, documentation, deployment and maintenance.
Software testing is a vital part of the software development lifecycle. Some researches have estimated that more than 50 percent of the overall software effort is dedicated to the testing phase . The purpose of it is to ensure the quality and the productivity of the software products. Software testing is the process to uncover requirements, design and coding errors in the program. Based on the initial information that we have before we start the actual testing process, there are two main testing techniques: Black-box and White-box testing.
We will talk about hem in the next chapter.
White Box Testing technique is defined as an in-depth investigation of the structure of the code and the software product internal logic. It is also known as clear, glass box or structural testing as it designs test cases based on the information derived from source code. Unlike the Black Box Testing, where the tester doesn’t need to know anything about the internal structure of the code, in this type of testing the tester needs to have a complete access and full knowledge of the source code.[x]
White box testing is based on exhausting all possible test cases based on the structure of the procedural design. It is suitable for testing at all integration, unit and system levels. The white box tester (in most cases this is the developer of the code) knows the code and executes different case scenarios with different test case parameters. For the white box testing all of the code has to be written before we can determine any of the test cases. Main concern of the white box testing is the internal mechanism of the system, it concentrates on the data flow or control flow of the programs.One of the most common white box testing techniques are listed below:
Control Flow Testing/Coverage Testing: It is a structural testing approach which is focused on execution order of statements. In this technique the tester selects a specific path from the program for testing. This strategy uses the program control flow as it executes multiple short paths instead of fewer complex paths. It is usually used in unit testing.
Control Flow Testing/Coverage Testing limitations:
- Some of the initialization mistakes can not be caught.
- Specification mistakes are not caught by this testing.
- It is difficult for external testers to fine mistakes, in most cases it is performed by the program developers.
- Branch Testing: It is considered as the easiest testing strategy. This technique is used to test every option for every control statement from the control flow graph. In case of having a compound condition, true or false both conditions are expected to be executed. Branch Testing ensures that none of the branches will lead to abnormal behavior or anomaly in the application.
Statement coverage It measures the percentage of statements that have been executed by test cases. Statement coverage less than 100% means not all lines of code have been executed. Goal of white-box testing is to execute each and every path in the program but it becomes unfeasible if the path contains a loop
Basis Path Testing. A testing mechanism proposed by McCabe. It is a structure testing technique which is used to design multiple test cases in order to track all possible paths of program execution at lease once. The main objective is to test all possible paths. The technique ensures that all predetermined paths are taken at least once, which will ensure 100% branch coverage and 100% statement coverage.
Path 1: 1 – 2 – 5 – 7
Path 2: 1 – 2 – 5 – 6 – 7
Path 3: 1 – 2 – 3 – 2 – 5 – 6 – 7
Path 4: 1 – 2 – 3 – 4 – 2 – 5 – 6 – 7
Data Flow Testing: It is related to the program execution and how different data values are allocated to the corresponding variables. It is not only part of tracking program control flows but it explores variables definitions and use. Data Flow Testing tracks multiple sub-paths from the point where variables are defined to the point where they are referenced. These sub-paths are termed as du-pairs. Common errors spotted during the testing:
- Variable is declared but never used within the program.
- A variable deallocated before it has been used.
- A variable has been declared multiple times.
- Incorrect variable assignments, input statements, or data types.
- Wrong path is taken, which leads to an incorrect definition.
Loop Testing: With increasing the software complexity, statement and branch coverage are not enough. Thus many software products undergo loop testing as an integral part of the whole testing process. Usually, loop testing is not complex unless there are multiple dependencies in our program.
Single Loop Strategy
Nested Loop Strategy
Reveals Initialization Issues – It gives a chance to the tester to spot any issues which occur at the beginning of the loop. Finding problems which prevent the algorithm from running through its course is a great test starting point. Loop Testing is a good approach to fix such starting hiccups.
Uninitialized Variables Come To Light – While the loop is running, all untouched or uninitialized variables come to the forefront. That allows correction actions to be taken in order to sort the problem.
Loop Repetition Issues Are Revealed – If the loop is running repeatedly, with no end in sight and as such causing trouble, then such critical performance issues are revealed timely. Moreover, the exact point of trouble gets pinpointed in a timely manner and that prevents other related issues from arising in the future.
Reveals Performance Bottlenecks If all tasks are getting jammed or lined up at any given point in the loop, then such significant performance problems are also exposed. Such bottlenecks reduce the efficiency and reliability of the software by increasing its execution time considerably.
Automated Tools Supporting White-Box Testing
Selecting the right white box automated technique is am important decision which the developers have to take into consideration.
White-Box Test Techniques Automated Test Tools:
- Fault Insertion Coding Tools
- String Testing GUI and Server Test Tools
- Error Handling Error Handling Tools
- Statement Coverage Static and Dynamic Analyzers
- Decision Coverage Static and Dynamic Analyzers, Coverage Analysis Tools
- Condition Coverage Static and Dynamic Analyzers, Coverage Analysis Tools
- Path Coverage Static and Dynamic Analyzers, Coverage Analysis Tools
- Test Data Flow Coverage Data Modeling Tools, Flow Diagram Editors
- Memory Usage Memory Usage Tools
- General Resource Usage General Resource Usage Tools
- Code Complexity Static and Dynamic Analyzers, Source Code Analyzers
- Cyclomatic Complexity Cyclomatic Complexity Analyzers, other Software Metrics Tools