Authors:
Sunil Kamalakar
;
Stephen H. Edwards
and
Tung M. Dao
Affiliation:
Virginia Tech, United States
Keyword(s):
Behavior-Driven Development, Test-Driven Development, Agile Methods, Software Testing, Feature Description, Natural Language Processing, Probabilistic Analysis, Automated Testing, Automated Code Generation.
Related
Ontology
Subjects/Areas/Topics:
Agile Methodologies
;
Applications
;
Business and Software Modeling Languages
;
Service-Oriented Software Engineering and Management
;
Software and Systems Development Methodologies
;
Software Engineering
;
Software Project Management
Abstract:
Behavior-Driven Development (BDD) is an emerging agile development approach where all stakeholders (including developers and customers) work together to write user stories in structured natural language to capture a software application’s functionality in terms of required `behaviors.' Developers can then manually write `glue' code so that these scenarios can be translated into executable software tests. This glue code represents individual steps within unit and acceptance test cases, and tools exist that automate the mapping from scenario descriptions to manually written code steps (typically using regular expressions). This paper takes the position that, instead of requiring programmers to write manual glue code, it is practical to convert natural language scenario descriptions into executable software tests %{\it fully automatically}%. To show feasibility, this paper presents preliminary results from a tool called Kirby that uses natural language processing techniques to automatic
ally generate executable software tests from structured English scenario descriptions. Kirby relieves the developer from the laborious work of writing code for the individual steps described in scenarios, so that both developers and customers can both focus on the scenarios as pure behavior descriptions (understandable to all, not just programmers). Preliminary results from assessing the per-formance and accuracy of this technique are presented.
(More)