Learners are often introduced to programming via dedicated languages such as Scratch, where block-based commands are assembled visually in order to control the interactions of graphical sprites. Automated testing of such programs is an important prerequisite for supporting debugging, providing hints, or assessing learning outcomes. However, writing tests for Scratch programs can be challenging: The game-like and randomised nature of typical Scratch programs makes it difficult to identify specific timed input sequences used to control the programs. Furthermore, precise test assertions to check the resulting program states are incompatible with the fundamental principle of creative freedom in programming in Scratch, where correct program behaviour may be implemented with deviations in the graphical appearance or timing of the program. The event-driven and actor-oriented nature of Scratch programs, however, makes them a natural fit for describing program behaviour using finite state machines. In this paper, we introduce a model-based testing approach by extending Whisker, an automated testing framework for Scratch programs. The model-based extension describes expected program behaviour in terms of state machines, which makes it feasible to check the abstract behaviour of a program independent of exact timing and pixel-precise graphical details, and to automatically derive test inputs testing even challenging programs. A video demonstrating model-based testing with Whisker is available at the following URL: https://youtu.be/edgCNbGSGEY
翻译:通过Scratch等专门语言的编程中常常引入学习者,例如Scratch, 以直观方式收集基于块状命令,以控制图形图示的相互作用。 自动测试这类程序是支持调试、 提供提示或评估学习结果的重要先决条件。 但是, Scratch 程序的写作测试可能具有挑战性: 典型 Scratch 程序的游戏相似和随机化性质使得难以确定用于控制程序的具体的时间输入序列。 此外, 用于检查由此产生的程序状态的精确测试参数不符合Scratch 中创造性自由的基本原则, 在Scratch 的编程中, 执行正确的程序行为可能与程序的图形外观或时间偏差相执行。 然而, Scratch 程序以事件为驱动和面向行为体的性质使得它们自然适合使用有限的状态机器描述程序的行为。 在本文中,我们采用基于模型的测试方法, 扩展Whisker, 用于控制程序的一个自动测试框架。 基于模型的扩展描述基于国家机器的预期程序行为, 从而可以检查一个程序的抽象行为, 独立地检查一个带有挑战性的时间和演示的图像测试程序。