您的位置: turnitin查重官网> 计算机 >> 计算机应用 >基于测试驱动开发C语言教学

基于测试驱动开发C语言教学

收藏本文 2024-02-07 点赞:13037 浏览:56389 作者:网友投稿原创标记本站原创

摘 要:本文结合C语言课程的教学实践,提出了将测试驱动开发引入C语言教学的方法,并通过实例说明该方法能给学生提供一种全新的思维模式,帮助学生解决实际问题,提高程序编写的质量。该研究成果取得了良好的教学效果,受到学生的普遍欢迎。
关键词:测试驱动开发; C语言;软件测试
:ADoI: 10.3969/j.issn.1003-6970.201

2.05.040

【Abstract】this paper combines c language teaching practice, presents a method of introducing test-Driven Development into c language teaching, and the example shows that this method can provide a new mode of thinking ,help students to solve practical problems and improve the quality of programming. the research has obtained the good teaching effect and is widely welcomed by students.
【Key words】test-Driven Development; c Language; Software te

源于:论文 范文www.udooo.com

st.
测试驱动开发是一种新的快速软件开发方法,它的基本思想是用测试推动整个软件开发的进行,即在系统开发之前,先编写“测试代码”,列举典型的测试用例,然后再编写“功能代码”,实现部分或全部系统的功能,确保所有事先准备的测试用例全部通过。
C语言是信息类专业一门重要的专业基础课,在整个课程体系中占有举足轻重的地位。学好C语言,可以为后续的数据结构、数据库、操作系统等课程的学习打下坚实的基础。教学工作者对C语言教学作了很多研究,提出了不少实用的方法。在本文中,我们提出将测试驱动开发理念引入C语言教学中。这种方法在近几年的教学实践中推广使用,获得了良好的教学效果。
在多年的C语言教学中,我们发现,初学者在学习C语言的障碍来自于多个方面,其中主要有2个方面的原因:(1)缺乏计算机的程序化思维模式。作为大学生的第一门计算机语言,很多学生刚开始学习编程时,往往不知从何处入手。出现这个问题的原因是学生不能正确认识计算机能做什么工作,以及实际问题的解决步骤和算法。(2)不能深入理解程序的执行过程。要想学好C语言,必须理解C语言语句的执行顺序和执行效果。有了这方面的知识,就会领悟计算机解决问题的方法和实质。同时,也就会解决(1)中所提到的问题。怎样才能深入理解程序的执行过程呢?要借助于调试工具。通过调试,我们可以单步运行程序,能清晰地查看程序运行的流程以及相关变量值的变化过程。由此可见,调试在C语言学习和实践中起着至关重要的作用。
调试与测试有着极大的内在联系。一般来说,调试是指在软件开发过程中,定位并排除程序中的错误,而软件测试是通过验证一些测试用例,找出软件中存在的错误。因此可以说,调试中要进行大量的测试,测试中(特别是白盒测试)要借鉴调试的方法。将测试驱动开发引入到C语言教学中,可以让学生熟悉调试与测试的过程,提供了一种解决实际问题的思维模式,让学生养成测试的习惯,确保程序开发的质量。
为了更好地理解测试驱动开发方法的优越性以及在C语言教学中的应用,下面以一个实例来进行说明。
例如,要求用户从键盘输入一个年份,接着判断该年份是否为闰年。这个问题是参考文献中的一个例题,学习过C语言的同学几乎都做过。对于初次遇见这个题目的学生来说,还是感觉有一定难度的。然而,当看完教材的解释以后,思路就会变得很清晰。由此可见,问题的结症在于闰年判定规则的建立。
怎样才能快速总结出规则并解决问题呢?一种很自然的想法就是列举一些实例,再总结出规则。比如,闰年的情况有2000、2012、1996,非闰年的情况有2011、1998、1900。这两组年份符合一些什么规则呢?最容易找出的一个规则是,不能被4整除的一定不是闰年,如2011、1998。再来分析一下1900,为什么它也不是闰年呢?因为它能被100整除,则要求能被400整除才算是闰年,否则就不是闰年。由于不满足这个条件,1900年就不是闰年。于是判断不是闰年的第二条规则也找出来了。其实,考虑到这个程度,我们已经把不是闰年的情况全部列出来了,其它情况当然就是闰年。完成了“列举实例”、“总结规则”这两个步骤后,接下来就是编程实现了。我们按照“自顶向下,逐步细化”的思想,首先编写出程序的最初框架:
添加了isLeap函数的定义以后,程序顺利通过了编译。到此为止,只能说程序已经没有语法错误了,它在逻辑上是不是完全正确呢?这就需要第2步测试:编写测试用例,逐一验证其正确性。根据前面列举的实例,制作以下表格进行测试:
从测试结果可以看出,前面5个测试用例都是正确的,然而最后一个实际结果与期望结果不符,出现问题了。1900是能被4整除的,在我们编写的程序中,1900满足if后面的条件,所以就认为是闰年了。但是实际情况是,由于1900还能被100整除,所以还要测试它是否被400整除。很显然,不是闰年的第二条规则我们在程序中没有考虑到,因此出现了错误。
表1 “判断年份是否为闰年”的测试集
可以发现,到目前isLeap函数内部结构非常清晰,if语句的条件正好就是非闰年的两条规则。用或运算连接起来,条件成立就返回0,表示非闰年,否则就返回1,表示是闰年。
本文针对C语言教学中出现的问题,将测试驱动开发方法引入到C语言教学中,不仅提供了一种新的解决问题的思维模式,更重要的是,通过列举一些典型的测试用例,让学生重视调试和测试,深入理解程序运行过程,确保程序的正确性与质量。实践证明,通过对测试驱动开发方法在C语言教学中的推广使用,可以大幅度提高教学效果,受到学生的普遍欢迎。

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号