Using Runtime Traces to Improve Documentation and Unit Test Authoring for Dynamic Languages

Documentation and unit tests increase software maintainability, but real world software projects rarely have adequate coverage. We hypothesize that, in part, this is because existing authoring tools require developers to adjust their workflows significantly. To study whether improved interaction design could affect unit testing and documentation practice, we created an authoring support tool called Vesta. The main insight guiding Vesta's interaction design is that developers frequently manually test the software they are building. We propose leveraging runtime information from these manual executions. Because developers naturally exercise the part of the code on which they are currently working, this information will be highly relevant to appropriate documentation and testing tasks. In a complex coding task, nearly all documentation created using Vesta was accurate, compared to only 60% of documentation created without Vesta, and Vesta was able to generate significant portions of all tests, even those written manually by developers without Vesta.

[1]  Jeffrey Kotula Source Code Documentation: An Engineering Deliverable , 2000, TOOLS.

[2]  Gregg Rothermel,et al.  WYSIWYT testing in the spreadsheet paradigm: an empirical evaluation , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[3]  Mira Kajko-Mattsson,et al.  The state of documentation practice within corrective maintenance , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[4]  Mark John Taylor,et al.  Methodologies and website development: a survey of practice , 2002, Inf. Softw. Technol..

[5]  Víctor M. González,et al.  "Constant, constant, multi-tasking craziness": managing multiple working spheres , 2004, CHI.

[6]  David Notkin,et al.  Tool-assisted unit-test generation and selection based on operational abstractions , 2006, Automated Software Engineering.

[7]  Brad A. Myers,et al.  Barista: An implementation framework for enabling new tools, interaction techniques and views in code editors , 2006, CHI.

[8]  Martin P. Robillard,et al.  A Comparative Study of Three Program Exploration Tools , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[9]  Stephen McCamant,et al.  The Daikon system for dynamic detection of likely invariants , 2007, Sci. Comput. Program..

[10]  Linda Dailey Paulson Developers shift to dynamic programming languages , 2007, Computer.

[11]  Westley Weimer,et al.  Automatic documentation inference for exceptions , 2008, ISSTA '08.

[12]  Arie van Deursen,et al.  Invariant-based automatic testing of AJAX user interfaces , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[13]  Brad A. Myers,et al.  Finding causes of program output with the Java Whyline , 2009, CHI.

[14]  Philip J. Guo,et al.  Writing Code to Prototype, Ideate, and Discover , 2009, IEEE Software.

[15]  Philip J. Guo,et al.  Opportunistic Programming: Writing Code to Prototype, Ideate, and Discover end-us e r soft war e e ngine e ring , 2009 .

[16]  Westley Weimer,et al.  Automatically documenting program changes , 2010, ASE.

[17]  Jan Vitek,et al.  An analysis of the dynamic behavior of JavaScript programs , 2010, PLDI '10.

[18]  Steve Vinoski,et al.  Node.js: Using JavaScript to Build High-Performance Network Programs , 2010, IEEE Internet Comput..

[19]  Emily Hill,et al.  Towards automatically generating summary comments for Java methods , 2010, ASE.

[20]  Frank Tip,et al.  A framework for automated testing of javascript web applications , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[21]  Alberto Zolezzi F [In brackets]. , 2011, Revista de gastroenterologia del Peru : organo oficial de la Sociedad de Gastroenterologia del Peru.

[22]  Michael D. Ernst,et al.  Interactive record/replay for web application debugging , 2013, UIST.

[23]  Rob Miller,et al.  Addressing misconceptions about code with always-on programming visualizations , 2014, CHI.

[24]  Peter Müller,et al.  Envision: A fast and flexible visual code editor with fluid interactions (Overview) , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).