Robustness testing for software components

  • Authors:
  • Bin Lei;Xuandong Li;Zhiming Liu;Charles Morisset;Volker Stolz

  • Affiliations:
  • Department of Computer Science and Technology, Nanjing University, China and International Institute for Software Technology, United Nations University, Macao;Department of Computer Science and Technology, Nanjing University, China;International Institute for Software Technology, United Nations University, Macao;International Institute for Software Technology, United Nations University, Macao;International Institute for Software Technology, United Nations University, Macao

  • Venue:
  • Science of Computer Programming
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Component-based development allows one to build software from existing components and promises to improve software reuse and reduce costs. For critical applications, the user of a component must ensure that it fits the requirements of the application. To achieve this, testing is a well-suited means when the source code of the components is not available. Robustness testing is a testing methodology to detect the vulnerabilities of a component under unexpected inputs or in a stressful environment. As components may fail differently in different states, we use a state machine based approach to robustness testing. First, a set of paths is generated to cover transitions of the state machine, and it is used by the test cases to bring the component into a specific control state. Second, method calls with invalid inputs are fed to the component in different states to test the robustness. By traversing the paths, the test cases cover more states and transitions compared to stateless API testing. We apply our approach to several components, including open source software, and compare our results with existing approaches.