Test migration for efficient large-scale assessment of mobile app coding assignments

In recent years, there has been a growing interest in making education widely accessible using Internet technologies. Whether it is Massive Open Online Courses (MOOCs) or simply college courses offered to a large student population using an online platform, both education-focused companies and universities, often in collaboration with one another, have been investing massively in online education. The fact that hundreds, and more often thousands, of students take these online courses raises scalability challenges in assessing student assignments. In this paper, in particular, we present a technique (GUITestMigrator) that addresses the challenge of assessing mobile app coding assignments. Given a set of apps that implement the same specification, but can have completely different user interfaces, instructors normally have to manually run and check each app to make sure it behaves correctly and according to the specification. GUITestMigrator, conversely, allows for developing tests for one of these apps and automatically migrating these tests to the other apps, thus dramatically reducing the burden on the instructor. We implemented GUITestMigrator for Android apps and evaluated it on three sets of apps developed over three different semesters by students of an online graduate-level software engineering course. Our initial results show that our approach is promising and motivates further research in this direction. The paper also discusses possible applications of this approach for test evolution and test migration for real-world apps.

[1]  Michael D. Ernst,et al.  Automatically repairing broken workflows for evolving GUI applications , 2013, ISSTA.

[2]  Mauro Pezzè,et al.  Automated GUI refactoring and test script repair , 2011, ETSE '11.

[3]  Eran Yahav,et al.  Synthesis of Forgiving Data Extractors , 2017, WSDM.

[4]  Shengqian Yang Static Analyses of GUI Behavior in Android Applications , 2015 .

[5]  Myra B. Cohen,et al.  Repairing GUI Test Suites Using a Genetic Algorithm , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[6]  Rachid Benabbou,et al.  Automatic program assessment using static and dynamic analysis , 2015, 2015 Third World Conference on Complex Systems (WCCS).

[7]  George C. Necula,et al.  Guided GUI testing of android apps with minimal restart and approximate learning , 2013, OOPSLA.

[8]  Alessandro Orso,et al.  Poster: Automated Test Migration for Mobile Apps , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[9]  Chun-Yen Chang,et al.  Assessing Creative Problem-solving with Automated Text Grading , 2008 .

[10]  Atif M. Memon,et al.  Automatically repairing event sequence-based GUI test suites for regression testing , 2008, TSEM.

[11]  Stephen H. Edwards,et al.  Web-CAT: automatically grading programming assignments , 2008, ITiCSE.

[12]  Fred Martin,et al.  Impact of auto-grading on an introductory computing course , 2013 .

[13]  Mani B. Srivastava,et al.  EmbedInsight: Automated Grading of Embedded Systems Assignments , 2017, ArXiv.

[14]  Garvit Juniwal,et al.  CPSGrader: Synthesizing temporal logic testers for auto-grading an embedded systems laboratory , 2014, 2014 International Conference on Embedded Software (EMSOFT).

[15]  Suman Nath,et al.  PUMA: programmable UI-automation for large-scale dynamic analysis of mobile apps , 2014, MobiSys.

[16]  Leonardo Mariani,et al.  Augusto: Exploiting Popular Functionalities for the Generation of Semantic GUI Tests with Oracles , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[17]  Porfirio Tramontana,et al.  Using GUI ripping for automated testing of Android applications , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[18]  Ewan D. Tempero,et al.  CodeWrite: supporting student-driven practice of java , 2011, SIGCSE.

[19]  Alessandro Orso,et al.  Automated test migration for mobile apps , 2018, ICSE.

[20]  Jack Hollingsworth,et al.  Automatic graders for programming classes , 1960, Commun. ACM.

[21]  Mark Harman,et al.  Crowd intelligence enhances automated mobile testing , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[22]  Stefan Staiger Static Analysis of Programs with Graphical User Interface , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[23]  Nikolai Tillmann,et al.  Measuring Code Behavioral Similarity for Programming and Software Engineering Education , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[24]  Andreas Zeller,et al.  Poster: Efficient GUI Test Generation by Learning from Tests of Other Apps , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[25]  Chen Fu,et al.  Inferring Types of References to GUI Objects in Test Scripts , 2009, 2009 International Conference on Software Testing Verification and Validation.

[26]  Mary Lou Soffa,et al.  Regression testing of GUIs , 2003, ESEC/FSE-11.

[27]  Chen Fu,et al.  Maintaining and evolving GUI-directed test scripts , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[28]  Tao Xie,et al.  A Grey-Box Approach for Automated GUI-Model Generation of Mobile Applications , 2013, FASE.

[29]  Ralph E. Johnson,et al.  Automated upgrading of component-based applications , 2006, OOPSLA '06.

[30]  Kirsti Ala-Mutka,et al.  A Survey of Automated Assessment Approaches for Programming Assignments , 2005, Comput. Sci. Educ..

[31]  Eran Yahav,et al.  Cross-Supervised Synthesis of Web-Crawlers , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[32]  Sumit Gulwani,et al.  Automated feedback generation for introductory programming assignments , 2012, PLDI.

[33]  Mayur Naik,et al.  Dynodroid: an input generation system for Android apps , 2013, ESEC/FSE 2013.

[34]  Peng Li,et al.  View-based maintenance of graphical user interfaces , 2008, AOSD.

[35]  Xiao Li,et al.  ATOM: Automatic Maintenance of GUI Test Scripts for Evolving Mobile Applications , 2017, 2017 IEEE International Conference on Software Testing, Verification and Validation (ICST).

[36]  Thabet Slimani,et al.  Description and Evaluation of Semantic Similarity Measures Approaches , 2013, ArXiv.

[37]  Richard G. Baraniuk,et al.  Mathematical Language Processing: Automatic Grading and Feedback for Open Response Mathematical Questions , 2015, L@S.

[38]  Katy Jordan,et al.  Initial trends in enrolment and completion of massive open online courses , 2014 .

[39]  Hongseok Yang,et al.  Automated concolic testing of smartphone apps , 2012, SIGSOFT FSE.

[40]  Sam Malek,et al.  EvoDroid: segmented evolutionary testing of Android apps , 2014, SIGSOFT FSE.

[41]  George A. Miller,et al.  WordNet: A Lexical Database for English , 1995, HLT.

[42]  Alessandro Orso,et al.  WATER: Web Application TEst Repair , 2011, ETSE '11.

[43]  Nicola Vitiello,et al.  A Strategy and an Eclipse Based Environment for the Migration of Legacy Systems to Multi-tier Web-based Architectures , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[44]  Beng Chin Ooi,et al.  Giving meanings to WWW images , 2000, ACM Multimedia.

[45]  Martha Palmer,et al.  Verb Semantics and Lexical Selection , 1994, ACL.

[46]  Zhenyu Chen,et al.  SITAR: GUI Test Script Repair , 2016, IEEE Transactions on Software Engineering.

[47]  Andrew Lim,et al.  On automated grading of programming assignments in an academic institution , 2003, Comput. Educ..

[48]  Petri Ihantola,et al.  Review of recent systems for automatic assessment of programming assignments , 2010, Koli Calling.