Realizing the systematic reuse of automated acceptance tests in practice

Abstract: Context: Automated acceptance testing has become a relevant practice of agile software development (e.g., Extreme Programming). Automated acceptance tests (AATs) are closely tied to requirements and provide a mechanism for continuous validation of requirements as system-level tests. Studies have shown that these tests are costly to develop, maintain, and reuse.Objectives: This thesis examines and supports the systematic reuse of automated acceptance tests by providing approaches to search, identity, adapt reusable test cases while considering the reuse costs. Additionally, the maintainability and usage of automated acceptance tests in largescale software projects are studied.Method: We used various research methods to investigate development, reuse, and maintaining the automated acceptance tests. Workshops and interviews of practitioners were used to identify the benefits and challenges of automated acceptance tests. Next, method engineering was used to construct a systematic reuse process for automated acceptance tests. Qualitative feedback collected using a survey, and industrial demonstration examined the reuse process’s performance expectancy, effort expectancy, and necessary facilitating conditions. Two systematic literature reviews are used to identify techniques to adapt tests for future reuse opportunities and calculate the reuse costs of automated acceptance tests. Later, we developed and evaluated an approach for refactoring behavior-driven development-based automated acceptance tests using action research.Results: A cost-aware systematic reuse process was constructed to support the reuse of automated acceptance tests containing eleven activities. For each activity, guidelines on expected input, expected output, the actors performing the activity, and techniques (automated using scripts) are suggested and evaluated. The techniques involve approaches to support development for reuse and methods to calculate the costs of reusing automated acceptance tests. The industrial evaluation of the reuse process and the techniques showed its usefulness and relevance for the industry. Furthermore, seven challenges (i.e., the scale of the software projects, ownership, lack of competence, cost benefits, specification of behaviors in large-scale projects, difficulty writing system-level test-cases, and versioning control of behaviors) and five benefits (i.e., understanding of a business aspect of requirements, improved quality of requirements, a guide to system-level use-cases, reuse of artifacts in large-scale projects, and help for test organization.) of using automated acceptance tests in large-scale projects are identified with software practitioners’ help. Later, we proposed a semiautomated four-step approach for pre-processing, measuring, ranking, and identifying refactoring candidates. The approach and the two proposed measures were successfully evaluated using two industrial projects. It was noted that similarity measures could support the maintenance of the specification base using refactoring.Conclusions: The studies show that automated acceptance tests are reusable and can be refactored using our proposed approach. The evaluation shows that the results apply to the software industry in the evaluated context. However, further work is required to evaluate the reuse process in different contexts.

  CLICK HERE TO DOWNLOAD THE WHOLE DISSERTATION. (in PDF format)