《测试方法及测试规范课件》由会员分享,可在线阅读,更多相关《测试方法及测试规范课件(21页珍藏版)》请在金锄头文库上搜索。
1、测试方法及测试规范,什么是软件测试 软件测试目的 软件测试原则 软件测试分类 软件测试方法 软件测试规范,什么是软件测试,定义:测试是为发现错误而执行程序或系统的过程。 解释:使用人工或者自动手段来运行某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。,软件测试目的,测试是程序的执行过程,目的是在于发现错误。 测试是为了证明程序有错,而不是证明程序无错误。 一个好的测试用例在于能发现至今未发现的错误。 一个成功的测试用例是发现了至今未发现的问题。,软件测试原则,1)应当把“尽早地和不断地进行软件测试” 解释:由于原始问题的复杂性、软件的复杂性和抽象性、软件开
2、发各个阶段工作的多样性,以及开发过程中各种层次的人员之间工作的配合关系等因素,使得开发的每个环节都可能产生错误。所以不应把软件测试仅仅看作软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中,坚持在软件开发的各个阶段进行技术评审,这样才能在开发过程中尽早发现和预防错误,杜绝某些隐患,提高软件质量。,软件测试原则,2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。 解释:在进行测试之前应当根据测试的要求选择测试用例(Test Case)。测试用例主要用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。如果对测试输入数据没有给出预期
3、的程序输出结果,那么就缺少了检验实测结果的基准,就有可能把一个似是而非的错误结果当成正确结果。,软件测试原则,3)程序员应避免检查自己的程序。 解释:测试工作需要严谨的作风、客观的态度和冷静的情绪。人们常常由于各种原因而产生一种不愿否定自己的工作的心理,认为揭露自己程序中的问题不是一件愉快的事。这一心理状态就成为测试自己编写的程序的障碍。另外,程序员对软件规格说明理解错误而引入的错误则更难发现。如果由别人来测试程序员编写的程序,可能会更客观、更有效,并更容易取得成功。要注意的是,这点不能与程序的调试(debuging)相混淆,调试由程序员自己来做可能更有效。,软件测试原则,4)在设计测试用例时
4、,应当包括合理的输入条件和不合理的输入条件。 解释:合理的输入条件:能验证程序正确性的输入条件;不合理的输入条件:异常的、临界的、可能引起问题异变的输入条件。 注:在测试程序时,人们常常倾向于过多地考虑合法的和期望的输入条件,以检查程序是否做了它应该做的事情,而忽视了不合法的和预想不到的输入条件。事实上,软件在投入运行以后,用户的使用往往不遵循事先的约定,使用了一些意外的输入,如用户在键盘上按错了键或输入了非法的命令。如果软件对这种情况不能做出适当的反应,给出相应的信息,那么就容易产生故障,轻则给出错误的结果,重则导致软件失效。因此,软件系统处理非法命令的能力也必须在测试时受到检验。用不合理的
5、输入条件测试程序时,往往比用合理的输入条件进行测试更能发现错误。,软件测试原则,5)充分注意测试中的群集现象。 解释:测试时不要以为找到了几个错误问题就不需要继续测试了。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目或检错率成正比。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。 注:在所测程序段中,若发现错误数目较多,则残存错误数目也比较多。这种错误群集性现象已被许多程序的测试实践所证实。例如,美国IBM公司的OS370操作系统中,47的错误仅与该系统的4的程序模块有关。这种现象对测试很有用。如果发现某一程序模块似乎比其他程序模块有更多的错误倾向,则应
6、当花费较多的时间和代价测试这个程序模块。,软件测试原则,6)严格执行测试计划,排除测试的随意性。 解释:测试计划应包括:所测软件的功能、输入和输出、测试内容、各项测试的进度安排、资源要求、测试资料、测试工具、测试用例的选择、测试的控制方式和过程、系统组装方式、跟踪规程、总体流程图调试规程、回归测试的规定以及评价标准等。对于测试计划,要明确规定,不要随意更改。 7)应当对每一个测试结果做全面检查。 解释:有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细、全面地检查测试结果,就会使这些错误被遗漏掉。所以必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住征候,暴露错误。 8)
7、妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便,软件测试分类,从是否关心软件内部结构和具体实现的角度划分: A.白盒测试 B.黑盒测试 从是否执行程序的角度: A.静态测试 B.动态测试 从软件开发的过程按阶段划分: A.单元测试 B.集成测试 C.系统测试 D.验收测试 E.回归测试,单元测试:指对软件中最小可测试单元进行检查和验证。例如:C语言中,单元一般指1个函数;在Java里,单元一般指1个类;在图形化的软件中,单元也可以指1个窗口,1个菜单等。总结起来,单元就是人为规定的最小的被测功能模块。 单元测试主要用白盒测试方法,一般我们先静态地检查代码是否符合规范,然后动
8、态地运行代码,检查其它实际运行结果。当然检查程序的运行结果是否正确是一个最基本的要求,我们还要检查很多项,比如程序的非法数据的容错处理,程序的边界值处理等。,集成测试:是单元测试的下一个阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。 系统测试和验收测试:集成测试之后,就是系统测试和验收测试,系统测试是指将整个系统看做1个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。验收测试是指在系统测试后期,以用户测试为主,或有测试人人员等质量保障人员共同参与的测试,它也是软件正式交给用户的最后一道工序。 验收测试又分a(阿发)测试和B(贝搭)
9、测试:其中a测试指的是由用户、测试人员、开发人员等共同参与的内部测试,而B测试指的是内测后的公测,即完全交给最终用户测试。,静态测试:指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在错误的过程。 对于代码测试,主要测试代码是否符合相应的标准和规范。 对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。 对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。 动态测试:指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。,白盒测试:指把盒打开,去研究
10、里面的源代码和程序结构。 黑盒测试:指把被测软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。 回归测试:是指对软件的新版本测试时,重复执行上一个版本测试时的用例。 冒烟测试:是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。 随机测试:也有人称为猴子测试,是指测试中所有的输入数据都是随机产生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。,功能测试:是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。一般分为逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。 性能测试:软件的性
11、能包括很多方面,主要有时间性能和空间性能两种。时间性能主要是指软件的一个具体事务的响应时间(respond time)比如登录163邮箱,输入用户名和密码,点“登录”按钮,从你点击按钮的那一刻起,到最终登录后的页面反馈给你,这一时间间隔为3秒,我们则称163邮箱在这一次登录事务 中的响应时间为3秒。一般我们多次登录,来记录不同的响应时间,最后取平均值,这样的数据才有参考价值。(一般一个电子商务网站来说,一个普遍接受响就时间标准为2(2秒给用户以响就是非常有吸引力的)/5(5秒以内被认为是比较不错的)/10(用户忍受上限));空间性能:主要指软件运行时所消耗的系统资源,比如安装软件之前,我们经常
12、看到某软件安装的最低要求。 性能测试一般分为:(1)一般性能测试:指让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测式。(2)稳妥定性测试:也叫可靠性测试,指连续运行被测系统,检查系统运行的稳定程度。(3)负载测试:通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。压力测试:通常是指持续不断地给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。,软件测试方法,黑盒测试用例的设计方法包括: 等价类划分法;边界值分析法;错误推测法;因果图法;判定表驱动法;正交试验设计法;功能图法等; 等价类划分法 是把所有可能的输入数据,即程序的输
13、入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法。,边界值法 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例,软件测试规范,测试用例规范 用例文档基本要素包括:用例编号,测试标题,前提条件,测试输入,操作步骤,预期结果。 基于测试需求的原则。 避免含糊的测试用例。 尽量避免冗长和复杂的测试用例。 测试用例编号保持唯一性。 测试用例中的输入数据,操作应能够代表并覆盖各种合理及不合理,合法及不合法,边界及越界,极限等情况。,测试执行: 如实记录测试过程。测试执行人员应详细记录测试操作步骤,输出结果。 及时更新测试用例。 问题报告要完整准确。测试报告应包括软件配置,硬件配置,测试输入,操作步骤,预期结果,实际结果,相关日志或抓图等。,