Watch what I do: programming by demonstration
Watch what I do: programming by demonstration
NaturalJava: a natural language interface for programming in Java
Proceedings of the 5th international conference on Intelligent user interfaces
Application of Linguistic Techniques for Use Case Analysis
RE '02 Proceedings of the 10th Anniversary IEEE Joint International Conference on Requirements Engineering
Learning programs from traces using version space algebra
Proceedings of the 2nd international conference on Knowledge capture
Programmatic semantics for natural language interfaces
CHI '05 Extended Abstracts on Human Factors in Computing Systems
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
ACM Computing Surveys (CSUR)
Translating keyword commands into executable code
UIST '06 Proceedings of the 19th annual ACM symposium on User interface software and technology
Koala: capture, share, automate, personalize business processes on the web
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
CoScripter: automating & sharing how-to knowledge in the enterprise
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Crawling AJAX by Inferring User Interface State Changes
ICWE '08 Proceedings of the 2008 Eighth International Conference on Web Engineering
Interpreting written how-to instructions
IJCAI'09 Proceedings of the 21st international jont conference on Artifical intelligence
From program verification to program synthesis
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lowering the barriers to website testing with CoTester
Proceedings of the 15th international conference on Intelligent user interfaces
Oracle-guided component-based program synthesis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Text2Test: Automated Inspection of Natural Language Use Cases
ICST '10 Proceedings of the 2010 Third International Conference on Software Testing, Verification and Validation
Dimensions in program synthesis
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Text to software: developing tools to close the gaps in software engineering
Proceedings of the FSE/SDP workshop on Future of software engineering research
Efficiently scripting change-resilient tests
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Efficient and change-resilient test automation: an industrial case study
Proceedings of the 2013 International Conference on Software Engineering
Report on the international symposium on high confidence software (ISHCS 2011/2012)
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.00 |
Mention test case, and it conjures up image of a script or a program that exercises a system under test. In industrial practice, however, test cases often start out as steps described in natural language. These are essentially directions a human tester needs to follow to interact with an application, exercising a given scenario. Since tests need to be executed repeatedly, such manual tests then have to go through test automation to create scripts or programs out of them. Test automation can be expensive in programmer time. We describe a technique to automate test automation. The input to our technique is a sequence of steps written in natural language, and the output is a sequence of procedure calls with accompanying parameters that can drive the application without human intervention. The technique is based on looking at the natural language test steps as consisting of segments that describe actions on targets, except that there can be ambiguity in the action itself, in the order in which segments occur, and in the specification of the target of the action. The technique resolves this ambiguity by backtracking, until it can synthesize a successful sequence of calls. We present an evaluation of our technique on professionally created manual test cases for two open-source web applications as well as a proprietary enterprise application. Our technique could automate over 82% of the steps contained in these test cases with no human intervention, indicating that the technique can reduce the cost of test automation quite effectively.