Cloud-Enabled Software Testing Based on Program Understanding

Cloud-Enabled Software Testing Based on Program Understanding

Chia-Chu Chiang (University of Arkansas at Little Rock, USA) and Shucheng Yu (University of Arkansas at Little Rock, USA)
DOI: 10.4018/978-1-4666-2536-5.ch003


Cloud computing provides an innovative technology that enables Software as a Service (SaaS) to its customers. With cloud computing technologies, a suite of program understanding tools is suggested to be deployed in a cloud to aid the generation of test cases for software testing. This cloud-enabled service allows customers to use these tools through an on-demand, flexible, and pay-per-use model. Lastly, the issues and challenges of cloud computing are presented.
Chapter Preview

Background On Program Comprehension

Software testing serves to discover defects in the software where the outputs do not meet the expected results or fail to meet the user requirements. One essential activity of software testing is creating test cases. Two major software testing techniques that include white-box and black-box testing are used to generate test cases. The white-box testing generates the test cases from the programs. The black-box testing generates the test cases from the specifications and designs. Test cases are not created from the source code. For both software testing techniques, program (specification) understanding is a key activity in the testing process. Programmers can understand a program by reading its documentation (such as specification and design documents), reading the source code, or just executing the program. Reading the documents can either be effective or misleading. Unfortunately, one of the major problems of documentation is keeping the documents current to reflect the changes of the code. If the documents are outdated, reading the documentation for program understanding is not a good idea. Executing a program to understand the program’s dynamic behavior can dramatically improve understanding which cannot be assimilated from reading the source code alone. However, the knowledge of the program mainly lies in the source code. Currently, programmers still count on reading the source code to gain knowledge about a program. Several reverse engineering techniques and tools have been developed to help automate knowledge extraction from the programs used for program understanding (Bellay & Gall, 1997; Chikofsky & Cross, 1990; Gannod & Cheng, 1999; Zvegintzov, 1997). The techniques of reverse engineering are applied to automate program understanding by analyzing a system (1) to identify the system’s components, their interrelationships, and (2) to create representations of the system in another form or at a higher level of abstraction (Chikofsky & Cross, 1990). The outputs of reverse engineering include structure chart, module calling hierarchy, data dictionary, data flow dependence, and control flow dependence. The knowledge about the programs is embedded in these artifacts. Programmers gain the understanding of programs by reading these artifacts.

Complete Chapter List

Search this Book: