作者简介作者简介:司晓梅(1979-),女,硕士,武汉理工大学华夏学院信息工程系讲师,研究方向为软件工程。0引言
随着我国软件产业的蓬勃发展以及对软件质量的日益重视,软件测试也越来越被软件企业所重视,软件测试正在逐步成为一个新兴的产业。软件测试人才需求量加大,目前,国内软件测试人才缺口高达20万,已成为我国软件产业发展的瓶颈之一。为了配合高校应用型人才培养目标,很多高校都设置了软件测试课程。作为一名教师,如何上好这门课程,培养出具备一定理论和实践技能的应用型人才,是教师们应该深入思考的问题。本文将对黑盒与白盒测试两个方面的教学方案设计展开探讨。
1软件测试课程的地位
软件测试课程是软件工程及计算机科学与技术等相关专业的专业必修课。其教学目的是通过本课程的学习,使学生系统地学习软件测试的基本概念和基本理论,深刻理解和掌握软件测试过程的基本方法和基本技术,了解和掌握软件测试技术和主要发展方向,为学生将来从事实际软件测试工作和进一步深入研究打下坚实的理论基础和实践基础。
2教学过程中存在的问题
很多学生持有这样的观点:软件测试就是对软件进行测试,测试软件能否正常使用就行了,根本不需要什么技术,更不需要什么理论指导。由此可见,学生首先从思想上对这门课程有敌对思想,认为学这门课程无用。另外,长时间以来,国内很多软件公司都是重视开发,而对测试重视不够,导致学生认为学习测试没有学开发有前途。种种原因导致的后果便是学生学习的积极性不高。因此,调动学生学习积极性成了教师的当务之急。
3重点问题教学方案设计
软件测试是指使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。为了达到这个目的,要求学生必须要熟悉软件测试的基础理论,理解和掌握软件测试的基本方法、过程和技术,掌握黑盒测试、白盒测试的测试用例的设计方法,了解测试文档的编写方法,熟悉主流的软件测试工具。可以说,这是一门枯燥的课程,如何让这个看似枯燥的课程变得有趣起来,让学生更愿意主动去学习,值得考虑。
3.1上好第一节课
良好的开端是成功的一半。在第一节课中让学生产生学习的主动性,会达到事半功倍的效果。目前的大学生普遍缺乏学习主动性,所谓的“学习无用论”经常在学生间传播。因此,调动学生学习的主动性并非易事。而学生最关心的事情之一就是就业。目前,软件测试的人才需求量相当大,待遇也较其它行业略高,发展前景可观。因此,可以把软件测试行业人才短缺的现状首先展现在学生面前,让他们知道学习这门课程会有很大的用武之地,从而愿意去学。
其次,让学生明白软件测试课程的主要内容,激发其学习兴趣。兴趣是成功的关键起点,教师要想办法让学生产生兴趣。当学生得知人才短缺的信息时,往往会更加专心听讲,这时候教师可以用提问的方式提出一些问题,当学生无法回答时,教师便自然地引出软件测试的主要教学内容,从而让学生明白今后要学习的重点是什么。
最后,向学生提出具体要求。让学生明白今后应该如何学好这门课程,按照什么样的步骤和方法去学习,才能达到课程目标。
3.2黑盒测试方案设计
首先要让学生明白黑盒测试的基本概念和功能以及黑盒测试与白盒测试的区别是什么。黑盒测试主要包括:等价类划分法、边界值分析法、判定表法、错误推测法等基本测试方法[1] 。
(1)等价类划分法。在讲这种方法时,首先要讲明白引入等价类划分法的动机是什么,也就是要避免冗余但又要进行完备的测试。因此,仅挑选出某一类中那些有代表性的数据来测试,这些代表性的数据在测试中的作用等价于这一类中的其它数据。让学生明白了这个问题后,便可以很自然地引入等价类的概念以及等价类测试的步骤。在讲等价类的步骤时,可以先给学生讲一个最简单的例子,比如对于平方根函数的测试,通过这个例子让学生明白等价类划分的目的和意义。当学生对等价类划分法有了深刻理解后,再举一个略有难度的例子供学生深入学习。
(2)边界值分析法。相对于等价类划分法而言,边界值分析法的概念要简单些。在讲这种测试方法时,可以从自身的思维和编程习惯入手,大多数人在设计算法和编写程序时,往往会
多地考虑多数情况下问题的处理方法,而往往对于特殊情况(包括边界情况)却忽视了。比如把“≥”写成了“>”,这些都是编程人员经常犯的错误,以此例来引入边界值分析法,学生往往会深有体会,从而对这种测试方法产生认同。接着,可以举一些实践经验的例子,比如实际中通过边界值分析法找到的错误所占的百分比等。边界值分析法中,要讲解的重点是如何寻找边界,以及边界值分析法设计测试用例的原则。针对每条原则进行讲解时,教师要尽量去寻找那些学生平时应用较多的例子。比如,可以测试用户名的长度是否符合规则为例,因为学生在上网时,很多网站都要用到用户名,以此为例可以达到吸引学生注意力的目的。
(3)判定表法。在讲这种方法时,首先向学生展示一个判定表的形式,很多教材中都用到读书指南决策表这个例子(见表1),让学生了解判定表的外观。
表1读书指南决策表
12345678你觉得疲倦吗?yyyynnnn问题你对内容感兴趣吗?yynnyynn书中内容使你胡涂吗?ynynynyn请回到本章开头重读√
建议继续读下去√跳到下一章去读√√停止阅读,请休息√√√√然后再根据这个例子,对每一列的情况进行分别讨论,讨论的同时把各列的具体情况分别在黑板上列出来,可以用这样的形式来列:如果怎么样,那么就采取什么样的动作。以第5列为例,描述结果如下:“如果你对书中内容感兴趣,书中内容使你糊涂,那么请回到本章开头重读”。当描述完部分列之后,可以让学生思考是否这些就是所需要的测试用例。接下来再引出判定表法的主要作用及应用场合:判定表是分析和表达多逻辑条件下执行不同操作的工具,能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏,设计出完整的测试用例集合。最后,可以通过一个具体的例子来讲解判定表法的步骤,例如nextdate函数的测试。
3.3白盒测试方案设计
与黑盒测试一样,首先要让学生了解白盒测试的基本概念与功能。白盒测试又可分为静态测试和动态测试。这里只讨论动态测试技术的主要方法:程序插桩、逻辑覆盖、基本路径测试等[2]。
(1)程序插桩。程序插桩方法是指往被测程序中插入操作来实现测试目的的方法,即向源程序中添加一些语句,实现对程序语句执行、变量变化等情况的检查。实际上,就是向程序中插入一些语句,从而获得所关心的信息。这也是在调试程序中经常用到的一种方法。在讲解时,可以引入一个包含有循环的程序段,教师可以提出多个问题,比如循环体实际被执行了多少次?某一时刻某个变量的值是多少?从而引导学往程序中插入相关语句,并将这些所关心的信息打印出来。通过这种方法,不仅能够让学生比较轻松地理解程序插桩的方法,而且还能够活跃课堂气氛。
(2)逻辑覆盖。逻辑覆盖是白盒测试中动态测试的主要方法之一,在这一部分的讲解中,应该把重点放在各种覆盖标准的概念上,教师在讲解时,要多重复几遍,以易于学生加强记忆。在具体讲解每种覆盖标准的过程中,可以举一实例,分别用不同的覆盖标准来覆盖。
(3)基本路径测试法。对于这一方法,教材上一般分4个步骤来讲解。在教学过程中,不能一开始就讲解这4个步骤,而要首先告诉学生基本路径测试法的最终目的是设计测试用例,使得基本路径集中的每一条路径得以执行。那么,如何得到基本路径集?接下来讲解具体的求解步骤。步骤讲清楚之后,再列举具体实例,在实例求解过程中,可以适当设计教学互动环节,以提高学生的课堂参与度。
4结语
随着软件开发规模的逐步扩大,软件测试的重要性变得更加突出,越来越多的高校纷纷开设了软件测试课程。本文对软件测试中常用测试用例设计方法的教学过程进行了描述。教学实践证明,软件测试课程教学效果良好。对相关专业毕业生流向调查统计发现,许多学生毕业后在国内知名it企业从事软件测试工作,就业前景大好。
参考文献参考文献:
\[1\]佟伟光.软件测试[m].北京:人民邮电出版社,2008.
[2]邓武.软件测试技术与实践[m].