• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 教育教学 > 正文

    软件静态测试实验教学方案设计

    时间:2020-11-06 07:58:35 来源:达达文档网 本文已影响 达达文档网手机站

    摘  要: 静态测试是软件测试的一种重要方法,利用静态测试工具可以方便测试人员和程序员较早的发现并消除代码缺陷。但是高校在设置软件测试实践课程时对静态测试并不重视,缺少有效的实践环节。本文选择Jupiter作为静态测试工具,设计了静态测试实验的内容,对传统实验教学方法进行的改革,经过实际教学运用,收到了良好的教学效果。

    关键词: 静态测试;实践教学;Jupiter

    中图分类号: G642    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.06.016

    本文著录格式:赵卫东,王聪. 软件静态测试实验教学方案设计[J]. 软件,2019,40(6):7477

    【Abstract】: Static testing is an important method of software testing, using static testing tools makes it easy for testers and programmers to detect and eliminate code defects earlier. However, colleges do not pay much attention to static testing when setting up software testing practice courses, and lack effective practice links. This paper chooses Jupiter as a static testing tool, designs the content of static testing experiment, and reforms the traditional experimental teaching method. After the actual teaching and application, it has received good teaching results.

    【Key words】: Static test; Practical teaching; Jupiter

    0  引言

    隨着当今社会对计算机系统需求和依赖的与日俱增,软件失效导致的计算机故障越来越多,软件质量成为贯穿软件生命周期的一个极为重要的问题,作为软件质量保证手段之一的软件测试在软件质量保证中发挥的作用越来越明显[1],而静态测试又是软件测试的重要组成部分,在软件测试领域占有无法替代的地位。

    静态测试可以手工进行,也可以借助静态测试工具自动进行。人工代码审查方式工作量大、对测试人员的要求高。经验表明,当代码行数超过百行时,发现软件问题的难度和代价也会随之大幅增加。静态测试工具根据程序结构、编程规范或文档来评价软件系统,而不需要执行程序,可以较早地发现程序代码中的缺陷,有效节约测试时间,降低测试成本。

    高校为本科学生开设软件测试课程,目的是使学生系统的掌握软件测试的基本概念,培养学生的软件质量意识,提高学生在软件开发中的综合能力,进一步帮助学生在软件开发中减少缺陷的产生。但是高校对静态测试的重要性不够了解,很多情况下让学生使用过时的工具对一些小型的例子程序进行测试,缺乏有效的实践环节,学生收获不大。

    1  静态测试传统教学问题分析

    1.1  静态测试的基本概念

    静态测试包括代码检查、静态结构分析、代码质量度量等,它无须执行被测代码,可以人工进行,也可以借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容[2]。

    1.2  静态测试教学存在的问题

    由于重理论、轻实践的传统教学模式使得高校在开设软件测试课程时,对静态测试不够重视,分配给静态测试的教学时间太少,尤其是实践这一方面,教学内容创新度不够,教学方法达不到预期的效果,学生对静态测试的了解还只是浮于表面,不仅对理论知识的认识不够深刻,对静态测试工具的应用更是不熟练,无法掌握如今主流的静态测试工具。具体存在的问题主要有以下几个方面:

    (1)师资队伍缺乏项目测试经验,教学内容缺乏针对性和连贯性[3]。静态测试课程在高校中分配给学生的动手操作时间很有限,而且老师全部讲完才会让学生去实践[4],这样的教学模式使得学生还没有掌握前面所讲的内容,马上就要进行后面内容的学习,对学生实践能力的提高帮助不大。而且教师大多教学经验丰富、理论功底深厚,但是缺乏软件项目测试的实战经验,无法针对实际案例进行深入分析和研究,面对一个完整的测试思路时,无法形成一个完整的测试思路。

    (2)学生不够重视。大多数的学生只注重编码能力的提高,对软件测试有一种错误的认识,认为编码能力不够的人才会去做测试,其中又因为静态测试不需要运行代码,对静态测试更是不重视。这就导致很多学生排斥这门课程,不会熟练运用静态测试工具,更不了解主流的测试工具有哪些[5]。

    (3)教学案例太过于简单,多以基础性实验为主。实践课所用到的教学案例过于简单,这些简单的案例虽然有助于学生对单个方法或知识点的掌握,但没有贯穿整个测试过程的案例,学生难以形成一个完整的测试思路[6]。这种比较单一的实验设计方式使得学生在企业工作中真正需要的知识和能力反而没学到。

    (4)内容比较陈旧,测试工具跟不上形势[7]。软件测试是不断发展的,但是现在很多高校要求学生完成的实验题目都是几年前的,被测系统的复杂性不够,对学生能力的提高帮助不大,并且测试工具的覆盖面也不够,实用性不强。

    2  静态测试工具选择

    由于静态测试工作量相对比较大,通常我们辅助一些静态测试工具。静态测试工具是直接对代码进行检查,代码检查包括代码走查、桌面检查、代码审查等,并不需要运行代码,也不需要对代码进行编译链接,生成可执行的文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,再进行修改[8]。

    静态测试工具分为很多种,下面我们就对比较主流的几款静态测试工具进行比较:

    (1)Jupiter:进行代码审查的辅助管理,它是检查整个的Java程序代码;

    (2)CheckStyle:帮助Java开发人员遵守某些编码规范,自动化代码规范检查过程,主要检查Javadoc注释、命名约定、标题、Import语句、体积大小、空白、修饰符、块、代码问题、类设计和混合检查(包括一些有用的比如非必须的System.out和printstackTrace);

    (3)PMD:静态解析Java代码错误,在不运行Java程序的情况下对Java代码进行分析并报告错误,主要检查空try/catch/finally/switch语句块,未使用的局部变量、参数和private方法等;

    (4)FindBugs:用来查找javabytecode(.class文件)中的潜在bug,包括NullPoint空指针检查,没有合理关闭资源等。

    为了使学生能够更深入地学习静态测试,经过比较,我们决定选择Jupiter作为学生在实践课程中学习使用的工具。Jupiter是一款开源并且可以提供给个人或者开发小组代码审查的Eclipse插件,它将review数据存储在XML格式文件中,通过SVN/CVS将review结果在团队内共享。一个很方便的功能是其建立了review问题跟具体源代码的对应关系(通过点击review问题列表中的问题可以跳转到对应的代码段,然后点击代码段上的review问题标记可对应到具体的问题描述),review问题列表支持各种filter规则(根据review问题状态、责任人等,通过这个filter可以列出具体阶段需关注的问题)。

    3  静态测试内容设计与教学方法改革

    3.1  实验的目的

    静态测试工具不是完美的,但是静态测试工具对于检测代码缺陷还是很有帮助的,它能辅助测试人员较早、较快的发现一些特殊的缺陷,这些缺陷是大多数编译器不能发现的,通过静态测试来评审软件文档或程序,可以提高软件质量。对静态测试进行实验,就是要增强学生对静态测试的学习,理解静态测试的重要性,使用静态测试工具进行代码分析并且理解分析结果。

    3.2  实验内容与步骤

    3.2.1  实验一:Jupiter的安装及Review ID的创建及发布

    任务一:安装Jupiter

    (1)在Eclipse 中选择“Help” → “Install New Software...”;

    (2)在弹出的对话框中单击“Add...”按钮,在“Name”中输入Jupiter, 在URL中找到:C:\jupiter- eclipse-plugin-master\site这一路径,单击“OK”;

    (3)在红色字体“第二步:选中”处选中,并单击“Next”,如图1所示。

    (4)之后一直“Next”并单击“Finish”,完成安装。

    任务二:Review ID的创建与发布

    (1)在“Project Explorer”列表中右击需要审查的项目,依次选择“Properties”,“Review”;

    (2)单击“New…”,在弹出的对话框中编辑“Review ID”及其“Description”;

    (3)  选择要审查的文件(可以同时选择多个文件);

    (4)  在已添加的人员中选择评审负责人(Author of this review session),再根据项目的需要或要求对“Type”,“Severity”,“Resolution”,“Status”的类型进行设置;

    (5)  设置.review文件将要存储的目录(文件夹)名称(Storage directory),设置完成后进入下一步。

    (6)设置三个阶段(个人审查、团队评审、问题修复)过滤器。前两个阶段使用默认过滤器即可(在“Rework Phase”下,如果希望开发人员能够看到所有类型的bug(Open、Resolved、Closed、Reopened),需要将“Where status is:”前的复选框置于未选状态),之后点击“Finish”完成Review ID的创建。

    (7)创建之后,在该项目的文件目录下创建了一个“.jupiter”文件,将该文件发布到SVN或CVS等版本控制系统中,或通过邮件等方式发布Review ID。

    3.2.2  实验二:进行Individual Phase(个人审查阶段)、Team Phase(团队审查阶段)及Rework Phase(修改Bug阶段)三个阶段的审查工作。

    任务一:Individual Phase

    (1)从SVN中获取“.jupiter”文件并将其放在待审查项目的文件路径(与src文件夹同级目录)下;

    (2)點击Jupiter插件图标的下拉箭头,选择“1 Individual Phase”选项,进入个人审查阶段;

    (3)在弹出的对话框中,选择“Project Name”、“Review ID”及“Reviewer ID”,再点击“Finish”,此时会发现在“Project Explorer”列表中待审查项目下生成一个文件夹,该文件夹用来存储“xxx.review”文件;

    (4)在完成了第(3)步之后,开始正式的个人代码审查,当发现bug时,选中存在bug的代码(所在行)并右击选择“Add Review Issue…”;

    (5) 在“Review Editor”的“Individual Phase”选项卡中描述bug,并保存,在该代码所在行的左边有一个蓝色标志,如图2所示;

    (6)提交“.review”文件到版本控制系统SVN中,并回复审核发起者你的任务已完成,并将“.review”文件一并发给审核发起者,个人审查阶段到此结束。

    任务二:Team Phase

    (1)进入“Team Phase”;

    (2)在弹出的对话框中选择“Project Name”、“Review ID”及“Reviewer ID”,确定讨论哪个审查者审查出来的问题后,点击“Finish”,进入bug的浏览界面;

    (3)通过双击每条记录,可以直接导航到存在bug的代码语句,在“Review Editor”中则显示该条bug的具体描述,填写“Assigned To”(指派给)、“Resolution”(解决方案)及 “Annotation”(对解决方案的具体描述),然后保存;

    (4)将“.review”文件提交到版本控制系统,并通知代码修改人员进行修改。

    任务三:Rework Phase

    (1)进入“Rework Phase”;

    (2)在弹出的对话框中选择“Project Name”、“Review ID”及“Reviewer ID”,其中此处的“Reviewer ID”代表代码修改人员,点击“Finish”,进入bug的浏览界面;

    (3)双击bug记录,可以导航到bug所在代码处,并且在“Review Editor”中存在代码描述及修改意见,修改完代码后,调整“Review Editor”中的   信息;

    (4)将“.review”文件发布到版本控制系统,并通知代码审查人员已经修改完成bug修复。

    3.3  实验教学思路

    实验教学要从有利于调动学生实验的积极性、主动性,有助于学生自主学习、合作学习和研究性学习,有利于学生实践能力和创新能力的培养的角度出发。在进行实验教学时,应主要考虑如下4个因素:

    (1)覆盖面。对教学内容进行重新组织,实现理论与实践教学高度融合,并且教师所讲的知识  点不一定大而全,但要覆盖重点需要掌握的一些知识点。

    (2)实用性。以企业软件测试岗位需求为导向、以企业真实项目为驱动,加强校企合作,使得学生用的静态测试工具是业界或接近业界所用的工具,让学生感受到企业级的软件测试[9]。

    (3)综合性。在有限的几个实验中,改变实验过程中以教师为中心的教学方法和实验步骤,还要综合课程的多个知识点,采用随讲随练的教学模式,让学生及时的将所学的内容转化成自己的东西。

    (4)工作量。实验基本内容设计应难度适中和循序渐进,另外还可设计一些加分内容,难度原则是使学生“跳起来够得着”[10]。

    4  总结

    4.1  静态测试工具的局限性

    静态测试工具根据特定的规则去检测程序中的缺陷,如果没有相应的规则,就无法发现相应的程序缺陷,另外,静态测试工具只能给出“可能”的程序缺陷,需要经过测试人员和开发人员的进一步分析,才能给出最终结论。每一种静态测试工具要在“发现尽可能多的程序缺陷”和“减少缺陷误报率”之间做出平衡[11]。

    4.2  实验总结

    实验教学的目的,就是希望学生可以针对项目实践中所面对的问题,通过分析,补强所需要的相关理论知识,从而为解决问题提供方案,使学生真正从面对真实问题入手,实现到实践中学习理论知识,并将所学的理论知识又运用到实践中,真正实现项目实践与理论知识学习的高度融合、在实践中提升自身的职业能力和素养的目的[12]。

    参考文献

    [1] 李玉蓉, 贾美丽. 软件测试课程实践教学改革与探索[J]. 计算机教育, 2014(21): 105-107.

    [2] 胡成杰, 宫云战, 金大海. Java语言基于函数摘要的全局分析静态测试方法[J]. 计算机研究与发展, 2010, 47(S1): 64-68.

    [3] 刘小飞, 李美满. 基于工作过程的软件测试课程实践教学改革[J]. 计算机教育, 2018(6): 68-71+75.

    [4] 曹征. 软件测试课程教学改革的探索与实践[J]. 计算机产品与流通, 2018(11): 184.

    [5] 谢玲, 陆坤, 韩瑜. 软件测试课程教学改革的探索与实践[J]. 实验室科学, 2018, 21(3): 115-118.

    [6] 杜刚. 高职院校《软件测试》课程教学改革探索与实践[J]. 亚太教育, 2016(7): 136.

    [7] 周元哲, 舒新峰. 《软件测试》课程教学模式探索与实践[J]. 电脑知识与技术, 2018, 14(22): 97-98.

    [8] 张旭. 浅谈软件测试用工具的设计与实现[J]. 科技创新与应用, 2012(6): 32-33.

    [9] 吴金秀. 软件测试课程改革探索与实践[J]. 南方农机, 2018, 49(22): 202.

    [10] 杨秋辉, 洪玫, 郭兵, 何丹, 黄武. 软件测试课程实践教学改革研究[J]. 计算机教育, 2016(2): 106-109.

    [11] 李华莹. 基于静态测试工具的软件测试方法研究[A]. 中国电子学会可靠性分会. 中国电子学会可靠性分会第十四届学术年会论文选[C]. 中国电子学会可靠性分会: 中国电子学会电子制造与封装技术分会, 2008: 6.

    [12] 于海英, 武狄, 王希斌. 軟件质量保证与测试课程教学改革探索[J]. 信息系统工程, 2016(2): 155-156.

    相关热词搜索: 方案设计 静态 实验教学 测试 软件

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网