Automating test automation

Mention “test case”, and it conjures up the 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 identifying segments, in identifying the action in a segment, as well as 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.

[1]  Rob Miller,et al.  Translating keyword commands into executable code , 2006, UIST.

[2]  Sumit Gulwani,et al.  From program verification to program synthesis , 2010, POPL '10.

[3]  Sumit Gulwani,et al.  Oracle-guided component-based program synthesis , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[4]  Caitlin Kelleher,et al.  Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers , 2005, CSUR.

[5]  Ellen Riloff,et al.  NaturalJava: a natural language interface for programming in Java , 2000, IUI '00.

[6]  최준호,et al.  Link Grammar를 이용한 도메인 온톨로지 확장 방안 , 2011 .

[7]  Eser Kandogan,et al.  Koala: capture, share, automate, personalize business processes on the web , 2007, CHI.

[8]  Wenhua Wang,et al.  A combinatorial approach to building navigation graphs for dynamic web applications , 2009, 2009 IEEE International Conference on Software Maintenance.

[9]  Christopher D. Manning,et al.  Generating Typed Dependency Parses from Phrase Structure Parses , 2006, LREC.

[10]  Walter F. Tichy,et al.  Text to software: developing tools to close the gaps in software engineering , 2010, FoSER '10.

[11]  Eben M. Haber,et al.  CoScripter: automating & sharing how-to knowledge in the enterprise , 2008, CHI.

[12]  Henry Lieberman,et al.  Programmatic semantics for natural language interfaces , 2005, CHI EA '05.

[13]  Branimir Boguraev,et al.  A linguistic analysis engine for natural language use case description and its application to dependability analysis in industrial use cases , 2009, 2009 IEEE/IFIP International Conference on Dependable Systems & Networks.

[14]  Stefania Gnesi,et al.  Applications of linguistic techniques for use case analysis , 2002, Proceedings IEEE Joint International Conference on Requirements Engineering.

[15]  Pedro M. Domingos,et al.  Learning programs from traces using version space algebra , 2003, K-CAP '03.

[16]  Arie van Deursen,et al.  Crawling AJAX by Inferring User Interface State Changes , 2008, 2008 Eighth International Conference on Web Engineering.

[17]  Stanley M. Sutton,et al.  Text2Test: Automated Inspection of Natural Language Use Cases , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[18]  Rastislav Bodík,et al.  Jungloid mining: helping to navigate the API jungle , 2005, PLDI '05.

[19]  Jeffrey Nichols,et al.  Interpreting Written How-To Instructions , 2009, IJCAI.

[20]  Jalal Mahmud,et al.  Lowering the barriers to website testing with CoTester , 2010, IUI '10.

[21]  Henry Lieberman,et al.  Watch what I do: programming by demonstration , 1993 .

[22]  Andrej Pietschker Automating test automation , 2008, International Journal on Software Tools for Technology Transfer.

[23]  Sumit Gulwani,et al.  Dimensions in program synthesis , 2010, Formal Methods in Computer Aided Design.