Test Support for End User Programming
Partner:
- Ranorex GmbH
- Ximes GmbH
- Institut für Informationssysteme, Technische Universität Wien
- Institut für Softwaretechnologie, Technische Universität Graz
Das Ziel dieses Projektes ist es Unterstützung zum Testen von vom End-User programmierter Software anzubieten. Dies macht es notwendig die Spezifika der End-User Programmierung für die Testunterstützung aufzuarbeiten. Das Projekt adressiert die Schnittstelle von zwei wichtigen Bereichen in der modernen Softwareentwicklung:
End-User Programmierung wird zu einem zunehmend wichtigen Bereich der Softwareentwicklung. Während Microsoft Excel im Moment das meistgebrauchte Werkzeug für End-User Programmierung ist, gibt es weitere weniger bekannte Techniken wie z.B. Mash-Ups, Buiding Blocks, Scripting oder auch domänenspezifische Sprachen (DSL) die dafür eingesetzt werden können. Derzeit gibt es weltweit mehr End-User Programmierer als professionelle Softwareentwickler.
Automatisiertes Testen (Testausführung und Testfallgenerierung) ist eine der „High-Impact“ Innovationen der letzten Jahre. Durch die neuen Möglichkeiten der Automatisierung des Testens hat sich die Softwareentwicklung nachhaltig verändert. Heute ist Testen die dominante, evidenzbasierte Technik zur Software Qualitätssicherung.
End-User Programmierung unterscheidet sich maßgeblich von der professionellen Programmierung:
Bei End-Usern ist das Programmierwissen sehr unterschiedlich, daher muß es verschiedene Einstiegsstufen in die Programmierung geben und das Erlernen der Programmiermöglichkeiten muß unterstützt werden.
End-User sind keine komplexen Programmierumgebungen gewohnt und sind oft auch nicht Willens (z.B. durch Zeitdruck Ihrer eigentlichen Tätigkeit) sich in die Infrastruktur und die Konzepte (z.B. Design und Testing) für die Programmierung einzuarbeiten.
Um die Qualität der vom End-User entwickelten Software zu verbessern, gilt es – in Hinblick auf die Infrastruktur – folgende Punkte zu adressieren:
Es benötigt eine Infrastruktur, die es End-Usern ermöglicht Ihre Aufgaben durchzuführen. Diesbezüglich sind vor allem DSLs und Interface Generatoren von hohem Interesse.
Eine Infrastruktur für web-basierte, kooperative End-User Entwicklung von Anwendungen ist wünschenswert.
Eine Infrastruktur für Versions- und Change Management wird benötigt.
Konkret wird in diesem Projekt die Infrastruktur für Testunterstützung aufgebaut, d.h. die Entwicklung einer Infrastruktur welche den End-User bei der Spezifikation, dem Management und der Ausführung von Tests unterstützt. Idealerweise wären dies automatisierte Test, doch ist die technische Machbarkeit noch nicht nachgewiesen.
In der Literatur werden verschiedene Ansätze zur Testunterstützung vom End-User entwickelter Software vorgeschlagen. Der Großteil der Forschung konzentriert sich auf Tabellenkalkulationsanwendungen. [Rothermel et al. 1998] and [Burnett et al. 2002] schlagen die “What You See Is What You Test” (WYSIWYT) Methode zum Testen von End-User Programmen in Spreadsheets vor. Automatische Testfallgenerierung im Bereich der Spreadsheets wurde von [Fisher et al. 2006] and [Abraham and Erwig 2005] untersucht. Weiter wurden Visualisierungswerkzeuge benutzt um das Testen vom End-User entwickelter Software zu unterstützen (siehe [Ko et al. 2008] für weitere Referenzen). Testen von web-basierten Anwendungen wurde in [Ricca and Tonella 2001], [di Lucca et al. 2002] und [Elbaum et al. 2005] untersucht. [Lucca and Fasolino 2006] der Entwicklungen der letzten Jahre im Bereich Web Testing.
Im Rahmen des K-net Softnet Austria wurde eine DSL für Planungsprobleme entwickelt (TEMPLE) [Beer et al. 2009a, Schafhauser et al. 2009] und Werkzeuge die das Unit Testen für diese DSL unterstützen [Beer et al. 2009b]. In diesem Projekt werden neue Methoden zum Testing für die spezifischen Anforderungen von End-User Software im Bereich der Planungsprobleme auf Basis der TIS (Time-Intelligence Solutions) Technologie entwickelt. TIS unterstützt ein Script-basiertes Interface und eine auf Building-Blocks basierenden Zugang zur End-User Programmierung.





