在这周的软件测试课上,第一次了解了软件测试框架的概念。软件测试框架包含的范围非常广,从自动化测试框架到单元测试框架以及性能测试框架。在上个寒假中,在学习Coursera的在线课程时发现普林斯顿的单元测试做得非常强大,从程序正确性到Time consuming甚至Memory consuming,几乎能发现程序中的每一处错误或者缺陷。因此,在上完了这周的课程后,我查阅了一些资料,做了这篇随笔记录了解到的单元测试的知识。
一、什么是测试框架
要认识测试框架,首先要对所谓框架有概念。框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面、而后者是从目的方面给出的定义。测试框架也是如此,测试框架出现的最终目的是花少量的资源来完成尽可能多的测试任务,所以测试框架的建立以及框架的重用性方面是最值得测试人员深入探究的地方。
上面给出的是比较专业的定义,我理解的测试框架就是一个可以帮助软件测试人员测试软件的工具,可以帮助测试人员节省大量的时间去编写重复的测试用例。
二、自动化测试工具
通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较通常的测试过程。为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
自动化测试是使用机器帮助测试人员自动化地测试软件。
因此,自动化测试的本质是:用程序测试程序。 也就是说学习“编程语言”是学习自动化测试的基础。
当然,并不是所用的Project都适合使用自动化测试,必须满足下列条件:
1) 需求变动不频繁;
2) 项目周期足够长;
3) 自动化测试脚本可重复使用;
以下是一些通常适合使用自动化测试的场合:
1)回归测试,重复单一的数据录入或是击键等测试操作造成了不必要的时间浪费和人力浪费;
2)此外测试人员对程序的理解和对设计文档的验证通常也要借助于测试自动化工具;
3)采用自动化测试工具有利于测试报告文档的生成和版本的连贯性;
4)自动化工具能够确定测试用例的覆盖路径,确定测试用例集对程序逻辑流程和控制流程的覆盖。
在学习中,我发现了不是所用的产品都适合使用自动化测试,有的项目的开发周期很短,不值得话费大量的时间去投资自动化测试,有的项目测试很少运行,使用自动化测试就是一种浪费。自动化测试就是让它不厌其烦的、反反复复的运行才有效率。
现在常用的测试框架QTP,WinRunner,Rational Robot等非常专业的测试工具,具体如何这些测试框架如何使用由于水平有限我没能深入地了解,盲目地学习复杂的测试工具是没有意义的,毕竟自动化测试本质上使用程序测试程序,锻炼编程能力,打好基础才是最重要的。
三、单元测试工具
维基百科中给出了单元测试的定义:在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
由于单元测试的对象是程序的单元,即一个函数或一个方法,单元测试的重要性不言而喻:单元测试保证了程序的正确性的。
单元测试也是程序员的一项基本职责,程序员必须对自己所编写的代码保持认真负责的态度,这是也程序员的基本职业素质之一。同时单元测试能力也是程序员的一项基本能力,能力的高低直接影响到程序员的工作效率与软件的质量。
通常合格的代码应该具备以下性质:正确性、清晰性、规范性、一致性、高效性等(根据优先级别排序)。
1. 正确性是指代码逻辑必须正确,能够实现预期的功能。
2. 清晰性是指代码必须简明、易懂,注释准确没有歧义。
3. 规范性是指代码必须符合企业或部门所定义的共同规范包括命名规则,代码风格等等。
4. 一致性是指代码必须在命名上(如:相同功能的变量尽量采用相同的标示符)、风格上都保持统一。
5. 高效性是指代码不但要满足以上性质,而且需要尽可能降低代码的执行时间。
简单地学习了一下Junit测试用法之后,我测试了一个简单的Java类,以下是这个类的定义及方法
这个类主要用来计算在一个有向图中计算两个节点的最短祖先路径Shortest Ancestral Path
接下来用Junit进行测试
首先导入Junit包:选中java工程,点击鼠标右键--->选择properties---->在窗口中选Java Build Path---->在右侧点击Add Library---->在弹出的窗口列表中选中Junit---->下一步----->Junit 4(我用的是Junit 4)---->finish
这样Junit 4包就导完了,接下来就是创建测试类:
接下来运行测试用例(选中需要测试的类---->鼠标右键---->Run As---->Junit Test)
以下是测试结果图
由于SAP测试对象的创建需要读取文本,所以这次测试结果的失败的。在以后的学习中我会去仔细了解如何让测试用例接受命令行参数。