软件测试基础教程(第2版) .ppt
《软件测试基础教程(第2版) .ppt》由会员分享,可在线阅读,更多相关《软件测试基础教程(第2版) .ppt(92页珍藏版)》请在三一办公上搜索。
1、第2章:软件测试基础,主讲人:贾艳波职称:讲师,回顾与引言,回顾软件测试的三个观点观点1:查找错误的观点观点2:寻找差异的观点观点3:发现,改进,完善,强化软件测试的知识体系和核心内容“方法”和“度量”,由此得到我们下一步的学习目标了解软件测试活动的本质软件测试,是集成了整个软件工程过程信息的综合质量检验活动。本章开始,我们从软件开发过程入手,进入软件测试领域。,为了进入软件测试领域,我们首先需要知道为什么要测试?这关系到软件质量的概念;进而,需要深入了解软件缺陷(bug)是怎么回事?这关系到软件测试的方法。本章目的是建立一个完整的软件测试概念,包括基本软件测试过程、测试心理学、测试基本原理等
2、。,丰田:伤了谁的心,汽车质量”召回门“”脚踏门“质疑日本制造?http:/,本章内容,2.1术语和目的2.2基本测试过程2.3 测试心理学2.4 测试基本原理,2.1术语和目的,软件缺陷的严重性,严重性(Severity),就是软件缺陷对软件质量的破坏程度。如何判断软件的严重性?从软件最终用户的观点做出判断判断缺陷的严重性要为用户考虑,考虑缺陷对用户使用造成的恶劣后果的严重性。然而,现实中是软件缺陷存在在先,用户蒙受损失在后评价软件缺陷的,首先是软件开发工程师由此,引出了软件测试活动缺陷的修正顺序是个复杂的过程,有些不是纯粹技术问题进而出现了明确的分工:软件测试师,Bug是从哪里来的?,异常
3、处理每个程序设计人员都知道:设计程序时,安排好异常处理方式当发生预期的异常时产生一个返回值来通知调用方程序有错误发生。消除那些因异常而导致的Bug,是程序设计的基本技能。但是,并非每个程序员都喜欢这样做。请问,你们当中谁喜欢这样做?谁喜欢这样做,谁就有作为测试师的“天赋”。,参考书:编程匠艺:编写卓越的代码,(美)Pete Goodliffe,韩江等译编程匠艺:编写卓越的代码,电子工业出版社,2008 年9月,软件产品的行为与需求不符合是否就是软件产品不合格?只有在了解了一个软件系统正确运行时的期望行为之后,才有可能判定其是否不合格。,几个术语,错误(error)错误是指某件你做错的事。它是一
4、种特定的人类行为,会造成软件包含缺陷。和错误有关的行为忘记、疏忽、随意、臆测、误判、错想、误会、含混、轻信、无知。还有什么和错误相关的词汇?缺陷(fault)缺陷是错误在软件中体现出来的后果,更精确地说,缺陷是错误的表现。当缺陷被执行时会导致失效(failure)的发生。错误是潜伏在代码中的问题,只有永远不执行那些代码才不会造成问题。但是,如果没有条件引发这个缺陷,我们就以为没有缺陷。,失效(failure)是指不完全符合给定的需求,是实际结果(action result)或行为(在执行测试时观察到的)与期望结果(expected result)或行为(在规格说明或需求中定义的)之间的偏差。I
5、EEE610.12使用“失效”这一术语来描述用户遇到问题的情形,人们也常用“问题”(problem)或“事件”(incident)来描述同样的情形。在软件测试或者使用过程中,失效会在测试人员(tester)或用户面前“现形”,例如,发生输出错误或者系统崩溃。我们真正担心的问题是:千万不要出现大的偏差。,因果链导致软件失效的是软件自身的故障。软件的每个故障(或缺陷或者bug)都是软件开发或者更改后就存在的。失效是缺陷的表现形式,只有在软件被执行时这些缺陷才会以失效的方式显露出来。Bug是一种通俗的说法,通常用作缺陷的同义词。,错误,缺陷,缺陷,缺陷,软硬件环境条件,失效,沿着失效返回的路径,就是
6、查找错误的路径测试,导致失效的因素除缺陷外,还可能有辐射、电磁波、电场等环境因素,另外,环境污染引起的硬件故障也会导致软件运行的失效。有许多因素会导致软件缺陷,主观原因是人类在从事软件开发过程中容易犯错误,另外由于开发过程管理规范性、开发技术、软件的复杂性、开发的周期长短、个人能力等因素也会导致软件的缺陷产生。,Bug是从哪里来的?,示例:自己赋值的指针变量当然一定是指向自己要访问的地方,但是,所有的指针变量都指向着应该访问的地方吗?下面程序将打印出什么?int main(void)int ref=一组测试数据集合;int*ptr;int index;for(index=0,ptr=ref;i
7、ndex 4;index+,ptr+)printf(“%d%dn”,refindex,*ptr);return 0;,没有指针检测,Bug来自程序员的经验不足(生疏)编译错误运行时错误(崩溃)非预期的行为Bug来自程序员的疏忽大意(不动脑子)句法错误构建错误语义错误内存错误(溢出、泄漏、耗尽)数学(计算)错误,或者是不重视一个学籍管理系统和一个航天发射指挥系统是大不一样的。,常见的思想任何程序员都希望自己的代码是正确的,因此他一般不会专门去查找有问题的地方,甚至,他们可以很容易地写一些测试用例证明自己的代码运行得很完美!然而,这种思想就是Bug的根本来源。同时也给软件测试指出了一个必要的原则。
8、请问:什么原则?作为程序员,当测试者发现了你的程序有了缺陷的时候,你应该认为,是你自己犯了一个错误。而不是程序有什么缺陷。一个程序包含了许多缺陷,那就是程序员犯了许多错误。,Bug的另一来源:拙劣的项目管理,项目的开始阶段如:WBS没有划分清楚中期的测试-修改阶段如:测试计划的粗糙、测试资源的匮乏、测试后缺陷管理混乱后期的交付-完善阶段如:集成测试方案设计不好,测试用例设计华而不实,用户意见不能适时落实项目之后的维护阶段代码可维护性差、关键人员缺失,程序文档化效果很差,测试人员要比开发人员更关注管理,明确测试的目标资源有限,测试的目的必须有所不同,即使是消除软件缺陷,也是一个有限的目标。你编写
9、的代码越多,你引入的缺陷就越多。你编写的速度越快,你引入的缺陷也越多。从未有过“多产,但是几乎无bug”的程序员。参与测试策略的制定和决策因此,必须反复思考,回答以下问题:为什么要测试?测试什么?谁对测试负责?如何正确地进行测试?,一般认为:软件测试是为了发现错误而执行程序的过程。此观点的不好在于没有理解为什么要测试!要站在用户和市场的角度看待测试程序的效率、可适用性、维护性、可扩充性安全性、可靠性、系统性能、系统容量可伸缩性、服务可管理性、兼容性等等因素。,描述软件缺陷的一些词汇,缺点(defect)偏差(variance)谬误(fault)失败(failure)问题(problem)矛盾(
10、inconsistency)错误(error)毛病(incident)异常(anomy)经规整后进入下表:,2.2.1 软件缺陷的定义和种类,Bug,即软件缺陷。Bug一词,通常主要表现软件功能上的失败(failure)、功能和实际需求的不一致,即矛盾(inconsistency)。Bug的标准定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题。从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。IEEE 1983 of IEEE Standard 729。,本教材给出的软件缺陷分类,功能、特性没有实现或部分实现。设计不合理,存在缺陷。实际结果和预期结果不
11、一致。运行出错,包括运行中断、系统崩溃、界面混乱。数据结果不正确、精度不够。用户不能接受的其他问题,如存取时间过长、界面不美观。软件缺陷分类,是软件测试的基础信息,是学习软件测试的入门知识,应给予高度重视。,缺陷分级(4级),致命的(fatal):致命的错误,造成系统或应用程序崩溃(crash)、死机、系统悬挂,或造成数据丢失、主要功能组完全丧失等。严重的(critical):严重错误,指功能或特性(feature)没有实现,主要功能丧失,导致严重的问题,或致命的错误声明。一般的(major):不太严重的错误,这样的软件缺陷虽然不影响系统的基本使用,但没有很好地实现功能,没有达到预期效果。如次
12、要功能丧失,提示信息不太准确,或用户界面差,操作时间长等。微小的(minor):一些小问题,对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。,有资料给出了软件缺陷严重性的分级http:/,Bug的不同状态,软件缺陷分类,定义了缺陷导致的后果的严重性,这是一种静态的描述。在软件开发与维护过程中,软件缺陷的严重性是演变而成的。软件缺陷在某一时刻会处于某种状态,有三种状态:激活状态(Active或Open):问题还没有解决,测试人员新报的bug,或验证后bug仍然存在。已修正状态(Fixed或Resolved):开发人员针对所存在的缺陷,修改程序,认为已解决问题,或通过单元
13、测试。关闭或非激活状态(Close或Inactive):测试人员验证fixed bug后,确认bug不存在之后的状态。,从事故状态演变的过程看Bug,下左图是信息系统事故的优先级划分。,紧急程度,影响程度,低,中,高,低,中,高,最严重程度,紧急程度,影响程度,低,中,高,低,中,高,最严重程度,事故的演变路线,事故优先级=影响度紧迫性,参考软件生态学,2.2.2 软件缺陷的产生,此处,教材的作者试图给出软件缺陷的来源。但实际上并未明确给出(内容上与缺陷分类有很大的重合)。参考资料,给出一些常规的缺陷查找线索编程匠艺:编写卓越的代码,大范围缺陷-1:编译失败,花好长时间编写的代码编译失败,确实
14、会让你非常烦恼但这是最好的bug。打字错误(语法错误)不匹配的参数类型缺少链接/嵌入的资源编译失败是很容易引起人们注意的,并且一般都比较容易修正。,大范围缺陷-2:运行时错误,程序出现故障并崩溃(或死机),需要调查程序出错的地方故障必须能够再现检查崩溃之前的输入序列输入数据错误?检查崩溃之前程序的操作在估计/猜测后,需要设置断点跟踪操作过程,大范围缺陷-3:非预期的行为,非预期的行为是真正难以处理的错误因某行代码有缺陷而出现,出现了界面显示方式、颜色、风格等错误因几个相互连接但是不太匹配的模块集成在一起而导致意外的现象出现,如:响应奇慢、数据异常等。非预期行为的根源来自下面的“小范围故障”,小
15、范围缺陷-1:句法错误,检查中漏掉的一些句法错误会造成奇怪的和非预期的行为。在条件表达式中将“=”错误地写成了“=”,或者将“&”错误地写成了“&”忘记了句尾的分号,或者在错误的地方添加了分号(典型的位置是在一条for 语句之后)忘记将一组循环语句用括号括起来括号不匹配,小范围缺陷-2:构建错误,构建,即Make构建,程序运行前的最后一道手续,你此时你制作的MakeFile被执行后,直接得到可执行代码。任何错误都被看作是运行时出现的,但问题却发生在构建中。典型的问题makefile没有包含足够的依赖关系信息或旧的可执行文件的时间戳己损坏;程序修改后,无意中运行了旧的存在bug的代码,构建系统出
16、现混乱;,小知识:肮脏测试(dirty tests),也叫做“负面测试(”negative testing)指保持程序开发的原始环境的测试,意在更加准确地发现程序缺陷的根源所在。一般,开发者测试自己开发的程序时,喜欢“干净测试”;测试师测试则希望保持一定的“肮脏测试”在不成熟的测试机构中,肮脏测试同干净测试的数量比例是1:5;成熟的测试机构则保持让肮脏测试的数量是干净测试的5倍。,其他的小范围缺陷,语义错误内存错误(溢出、泄漏、耗尽)数学(计算)错误,软件缺陷的构成,这里说的不是构成,而是显而易见的缺陷出现在什么地方?规格说明书是软件缺陷出现最多的地方为什么?规格说明书是最重要的、也是最难写的
17、。教材中列举的情况,基本上都是对的,但只是一般的现象。,图2-3是很有意义的,软件缺陷在开发周期的不同阶段的分布情况,见下图。,图2-3软件缺陷在不同阶段的分布图,修复软件缺陷的代价,“老生常谈”,但仍未得到应有的重视!人们总是因追求进度和实现而忽略了对软件缺陷的及时排除。,图2-4 软件缺陷随着时间的推移带来的成本越来越大,2.1.2 测试术语,测试不是调试,要修正缺陷,必须在软件中找到它的位置。软件开发人员通过调试(debugging)确定软件缺陷位置并进行修正。调试是对缺陷的定位和修正,而测试的目标是发现系统的失效,以证明缺陷的存在。以检测失效为目的而对测试对象进行的每次执行都是测试。必
18、须明确定义测试的条件。测试对象的实际行为和预期行为需要进行对比。,测试的目的,为了寻找失效而执行程序;为了评估质量而执行程序;为了增强信心而执行程序;为了预防缺陷而分析程序或者它的文档。测试定义:系统地执行程序以证明正确实现了需求,增强对产品的信心,以及查找系统失效的过程称为“测试”。另外,测试还包含了静态的方法,即使用工具对软件产品进行静态分析,以及对文档进行评审。,除了根据测试数据(test data)对测试对象进行测试以外,测试的规划、设计、实施以及分析(测试管理test management)都是测试过程(test process)的组成部分。测试运行(test run)或测试套件(t
19、est suite)是由一个或多个测试用例(test case)组成的。测试用例包含对测试条件(多少情况下是执行测试的需求)、输入、测试对象的预期输出或预期行为的定义。测试用例应该对具有未知错误的较高发现能力。,结论:复杂的软件系统是不可能没有缺陷的。即使在执行完所有的测试用例后没有发现任何失效,也不能确定系统运行完全可靠(除程序非常小),没有其他故障。,2.1.3 质量的概念,软件质量定义:在Rational Unified Process(Rational标准过程理论)中,质量被定义为:满足或超出认定的一组需求,并使用经过认可的评测方法和标准来评估,还使用认定的流程来生产。如何理解软件质量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件测试基础教程第2版 软件 测试 基础教程

链接地址:https://www.31ppt.com/p-2986136.html