The feedback provided by current testing education tools about the deficiencies in a student's test suite either mimics industry code coverage tools or lists specific instructor test cases that are missing from the student's test suite. While useful in some sense, these types of feedback are akin to revealing the solution to the problem, which can inadvertently encourage students to pursue a trial-and-error approach to testing, rather than using a more systematic approach that encourages learning. In addition to not teaching students why their test suite is inadequate, this type of feedback may motivate students to become dependent on the feedback rather than thinking for themselves. To address this deficiency, there is an opportunity to investigate alternative feedback mechanisms that include a positive reinforcement of testing concepts. We argue that using an inquiry-based learning approach is better than simply providing the answers. To facilitate this type of learning, we present Testing Tutor, a web-based assignment submission platform that supports different levels of testing pedagogy via a customizable feedback engine. We evaluated the impact of the different types of feedback through an empirical study in two sophomore-level courses. We use Testing Tutor to provide students with different types of feedback, either traditional detailed code coverage feedback or inquiry-based learning conceptual feedback, and compare the effects. The results show that students that receive conceptual feedback had higher code coverage (by different measures), fewer redundant test cases, and higher programming grades than the students who receive traditional code coverage feedback.
翻译:目前测试教育工具提供的反馈,涉及学生测试套件缺陷的反馈,要么模仿行业代码覆盖工具,要么列出学生测试套件中缺失的具体教官测试案例。虽然从某种意义上讲,这些反馈类型有助于揭示问题的解决方案,这在某种意义上可以无意中鼓励学生在测试中采用试和试方法,而不是使用鼓励学习的更系统的方法。除了不教授学生为什么测试套件不够,这种反馈类型可能促使学生依赖反馈而不是为自己思考。为了解决这一缺陷,我们有机会调查替代反馈机制,其中包括积极强化测试概念。我们争辩说,使用基于调查的学习方法比简单地提供答案要好。为了便利这种类型的学习,我们介绍测试图,一个基于网络的任务提交平台,通过定制的反馈引擎支持不同程度的测试教学方法。我们通过两个软件级的实验研究,评估不同类型反馈的影响。我们使用测试塔托尔为学生提供不同类型的反馈机制,而不是对基于概念代码的反馈进行比较,或者对基于概念的测试案例进行不同程度的反馈。