软件测试与改错-掌握有效测试的方法与技术课件.ppt

上传人(卖家):晟晟文业 文档编号:4486637 上传时间:2022-12-13 格式:PPT 页数:45 大小:442KB
下载 相关 举报
软件测试与改错-掌握有效测试的方法与技术课件.ppt_第1页
第1页 / 共45页
软件测试与改错-掌握有效测试的方法与技术课件.ppt_第2页
第2页 / 共45页
软件测试与改错-掌握有效测试的方法与技术课件.ppt_第3页
第3页 / 共45页
软件测试与改错-掌握有效测试的方法与技术课件.ppt_第4页
第4页 / 共45页
软件测试与改错-掌握有效测试的方法与技术课件.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、软件测试与改错软件测试与改错 掌握有效测试的方法与技术掌握有效测试的方法与技术王晓辉王晓辉maconi126.co 华北电力大学计算机系华北电力大学计算机系第 2 页目录目录1.测试的常识与道理测试的常识与道理 2.测试的分类与比较测试的分类与比较3.测试人员的组织测试人员的组织4.企业的测试策略企业的测试策略5.测试规范测试规范6.软件产品的主要测试内容及技术软件产品的主要测试内容及技术7.改错的方法改错的方法8.小结小结第 3 页1.测试的常识与道理测试的常识与道理1.1 你真的懂测试吗你真的懂测试吗 u编程大师说:没有错误的程序世间难求。编程大师说:没有错误的程序世间难求。(编程之道)(

2、编程之道)u你在学校里学过测试吗?(读到博士可能也不懂测试)你在学校里学过测试吗?(读到博士可能也不懂测试)u你所在的企业重视测试吗?你所在的企业重视测试吗?(小公司程序员的技能更加全面)(小公司程序员的技能更加全面)u临时抱佛脚行吗?临时抱佛脚行吗?你以为有文档模板就会测试了吗你以为有文档模板就会测试了吗?u如果不懂得有效地进行测试,你不仅得不到功劳,也没人欣赏你的如果不懂得有效地进行测试,你不仅得不到功劳,也没人欣赏你的苦劳,你拥有最多的将只是疲劳。苦劳,你拥有最多的将只是疲劳。u职业软件工程师应当掌握需求开发、系统设计、编程、测试、维护职业软件工程师应当掌握需求开发、系统设计、编程、测试

3、、维护 所有技能。所有技能。第 4 页1.2 测试的目的是什么测试的目的是什么u测试的目的是为了发现尽可能多的缺陷测试的目的是为了发现尽可能多的缺陷,不是,不是为了说明软件中没有为了说明软件中没有缺陷。缺陷。u推论:成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员推论:成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺陷。陷。u千万不要将千万不要将“测试测试”与与“演示演示”混为一谈。例如科研鉴定会。混为一谈。例如科研鉴定会。u如果产品通过了严格的测试,大家不要不吭气,应当

4、好好地宣传一如果产品通过了严格的测试,大家不要不吭气,应当好好地宣传一把把。第 5 页1.测试的常识与道理测试的常识与道理1.3 一些常识和经验之谈一些常识和经验之谈u测试能提高软件的质量,但是提高质量不能依赖测试。测试能提高软件的质量,但是提高质量不能依赖测试。u测试只能证明缺陷存在,不能证明缺陷不存在。测试只能证明缺陷存在,不能证明缺陷不存在。“彻底地测试彻底地测试”难难以成为现实,要考虑时间、费用等限制,不允许无休止地测试。我以成为现实,要考虑时间、费用等限制,不允许无休止地测试。我们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会发作。们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会

5、发作。u测试的主要困难是不知道如何进行有效地测试,也不知道什么时候测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试。可以放心地结束测试。u每个开发人员应当测试自己的程序(份内之事),但是不能作为该每个开发人员应当测试自己的程序(份内之事),但是不能作为该程序已经通过测试的依据(所以项目需要独立测试人员)。程序已经通过测试的依据(所以项目需要独立测试人员)。u80-2080-20原则:原则:8080的缺陷聚集在的缺陷聚集在2020的模块中,经常出错的模块改错的模块中,经常出错的模块改错后还会经常出错后还会经常出错u测试应当循序渐进,不要企图一次性干完,注意测试应当循序

6、渐进,不要企图一次性干完,注意“欲速则不达欲速则不达”。第 6 页2.测试的分类与比较测试的分类与比较2.1 测试方式测试方式u白盒测试:关心软件内部设计和程序实现,主要测试依据是设计文档白盒测试:关心软件内部设计和程序实现,主要测试依据是设计文档u黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是需求文档黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是需求文档2.2 测试阶段测试阶段u单元测试、集成测试、单元测试、集成测试、系统测试、系统测试、验收测试。是验收测试。是“从小到大从小到大”、“由内至由内至外外”、“循序渐进循序渐进”的测试过程,体现了的测试过程,体现了“分而治之分

7、而治之”的思想。的思想。u单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合元是否符合“设计设计”。u集成测试界于单元测试和系统测试之间,起到集成测试界于单元测试和系统测试之间,起到“桥梁作用桥梁作用”,一般由开发,一般由开发小组采用白盒加黑盒的方式来测试,既要验证小组采用白盒加黑盒的方式来测试,既要验证“设计设计”又要验证又要验证“需求需求”。u系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合试系统是否符合“需求

8、规格说明书需求规格说明书”。u验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。户执行。第 7 页2.测试的分类与比较测试的分类与比较2.3 开发与测试的开发与测试的 V 型关系型关系u如果软件开发过程采用严格的瀑布模型,那么开发与测试有如果软件开发过程采用严格的瀑布模型,那么开发与测试有“V”型的对应关系型的对应关系。需求开发需求开发 高层设计高层设计详细设计详细设计编程编程单元测试单元测试集成测试集成测试系统测试系统测试验收测试验收测试第 8 页2.测试的分类与比较测试的分类与比较2.4 测试内容测试内容

9、u接口与路径测试。接口与路径测试。u功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压力测试、可靠功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装性测试、安装/反安装测试反安装测试 测试阶段测试阶段 主要依据主要依据 测试人员、测试方式测试人员、测试方式 主要测试内容主要测试内容 单元测试单元测试系统设计文档系统设计文档由开发小组执行白盒测试由开发小组执行白盒测试 接口测试、路径测试接口测试、路径测试 集成测试集成测试系统设计文档系统设计文档需求文档需求文档由开发小组执行白盒测试和黑盒由开发小组执行白盒测试和黑盒测试测试 接口测试、路径测试接口测试

10、、路径测试功能测试、性能测试功能测试、性能测试 系统测试系统测试需求文档需求文档由独立测试小组执行黑盒测试由独立测试小组执行黑盒测试 功能测试、健壮性测试、性能测试功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压、用户界面测试、安全性测试、压力测试、可靠性测试、安装力测试、可靠性测试、安装/反安装反安装测试测试 验收测试验收测试需求文档需求文档由用户执行黑盒测试由用户执行黑盒测试 第 9 页2.测试的分类与比较测试的分类与比较2.5 问题问题u问题问题1 1:有了:有了“黑盒黑盒”测试为什么还要测试为什么还要“白盒白盒”测试?测试?黑盒测试只能观察软件的外部表现,即使软件的输入输出

11、都是正确的黑盒测试只能观察软件的外部表现,即使软件的输入输出都是正确的,却并不能说明软件就是正确的。因为程序有可能用错误的运算方式,却并不能说明软件就是正确的。因为程序有可能用错误的运算方式得出正确的结果,例如得出正确的结果,例如“负负得正,错错得对负负得正,错错得对”,只有白盒测试才能,只有白盒测试才能发现真正的原因。发现真正的原因。(举一个学生作业的例子举一个学生作业的例子)白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方面,黑盒测试存在严重的不足。面,黑盒测试存在严重的不足。u问题问题2 2:由于单元测试要写测试驱动

12、程序,非常麻烦,能否等到整个:由于单元测试要写测试驱动程序,非常麻烦,能否等到整个系统全部开发完后,再集中精力进行一次性地单元测试呢?系统全部开发完后,再集中精力进行一次性地单元测试呢?如果这样做,在开发过程中,缺陷会越积越多并且分布得更广、隐藏如果这样做,在开发过程中,缺陷会越积越多并且分布得更广、隐藏得更深,反而导致测试与改错的代价大大增加。最糟糕的是无法估计得更深,反而导致测试与改错的代价大大增加。最糟糕的是无法估计测试与改错的工作量,使进度失去控制。因此为图眼前省事而省略单测试与改错的工作量,使进度失去控制。因此为图眼前省事而省略单元测试或者元测试或者“偷工减料偷工减料”,是,是“得不

13、偿失得不偿失”的做法。的做法。第 10 页u问题问题3 3:如果每个单元都通过了测试,把它们集成一起难道会有什么不妥吗:如果每个单元都通过了测试,把它们集成一起难道会有什么不妥吗?集成测试是否多此一举?集成测试是否多此一举?要把要把N N个单元集成一起肯定靠接口耦合,这时可能会产生在单元测试中个单元集成一起肯定靠接口耦合,这时可能会产生在单元测试中无法发现的问题。例如:数据通过不同的接口时可能出错;几个函数无法发现的问题。例如:数据通过不同的接口时可能出错;几个函数关联在一起时可能达不到预期的功能;在某个单元里可以接受的误差关联在一起时可能达不到预期的功能;在某个单元里可以接受的误差可能在集成

14、后被扩大到无法接受的程度。所以集成测试是必要的,不可能在集成后被扩大到无法接受的程度。所以集成测试是必要的,不是多此一举。是多此一举。u问题问题4 4:在集成测试的时候,已经对一些子系统进行了功能测试、性能测试:在集成测试的时候,已经对一些子系统进行了功能测试、性能测试等等,那么在系统测试时能否跳过相同内容的测试等等,那么在系统测试时能否跳过相同内容的测试?不能!因为集成测试是在仿真环境中开展的,那不是真正的目标系统不能!因为集成测试是在仿真环境中开展的,那不是真正的目标系统。再者,单元测试和集成测试通常由开发小组执行。根据测试心理学。再者,单元测试和集成测试通常由开发小组执行。根据测试心理学

15、的分析,开发人员测试自己的工作成果虽然是必要的,但不能作为成的分析,开发人员测试自己的工作成果虽然是必要的,但不能作为成果已经通过测试的依据。果已经通过测试的依据。第 11 页2.测试的分类与比较测试的分类与比较2.5 问题问题u问题问题5 5:既然系统测试与验收测试的内容几乎是相同的,为什么还要验收测:既然系统测试与验收测试的内容几乎是相同的,为什么还要验收测试?试?首先是首先是“信任信任”问题。对于合同项目而言,如果测试小组是开发方的人员,客问题。对于合同项目而言,如果测试小组是开发方的人员,客户怎么能够轻易相信户怎么能够轻易相信“别人别人”呢呢?所以当项目进行系统测试之后,客户再进行所以

16、当项目进行系统测试之后,客户再进行验收测试是情理之中的事。否则,那是客户失职。验收测试是情理之中的事。否则,那是客户失职。不论是合同项目还是非合同项目,软件的最终用户各色各样(如受教育程度不不论是合同项目还是非合同项目,软件的最终用户各色各样(如受教育程度不同、使用习惯不同等等)。测试小组至多能够模仿小部分用户的行为,但并不同、使用习惯不同等等)。测试小组至多能够模仿小部分用户的行为,但并不具有普遍的代表性。具有普遍的代表性。u问题问题6 6:能否将系统测试和验收测试:能否将系统测试和验收测试“合二为一合二为一”?系统测试不是一会儿就能做完的,比较长时间的用户测试很难组织。用户还有系统测试不是

17、一会儿就能做完的,比较长时间的用户测试很难组织。用户还有自己的事情要做,他们为什么要为别人测试呢?即使用户愿意做系统测试,他自己的事情要做,他们为什么要为别人测试呢?即使用户愿意做系统测试,他们消耗的时间、花费的金钱大多比测试小组的高。们消耗的时间、花费的金钱大多比测试小组的高。系统测试时会找出相当多的软件缺陷,软件需要反反复复地改错。如果让用户系统测试时会找出相当多的软件缺陷,软件需要反反复复地改错。如果让用户发现发现“内幕内幕”,一是丢脸,二是会吓跑买主。所以还是关起门来,先让测试小,一是丢脸,二是会吓跑买主。所以还是关起门来,先让测试小组做完系统测试的好。组做完系统测试的好。第 12 页

18、3.测试人员的组织测试人员的组织3.1 了解开发人员的测试心理了解开发人员的测试心理u测试的目的是找出尽可能多的缺陷。所以测试是测试的目的是找出尽可能多的缺陷。所以测试是“破坏性破坏性”的,而开发却的,而开发却是是“建设性建设性”的。开发人员总是喜欢欣赏程序的成功之处,而不愿看到失的。开发人员总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做败之处。让开发者去做“蓄意破坏蓄意破坏”的测试,就象杀自己的孩子一样难以的测试,就象杀自己的孩子一样难以接受。接受。u开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘

19、若在设计时就存在理解错误,或因不良的编程习惯而流下了隐患,他本人若在设计时就存在理解错误,或因不良的编程习惯而流下了隐患,他本人很难发现这类错误很难发现这类错误.u开发者对自己的程序的功能、接口十分熟悉,他自己几乎不可能因为使用开发者对自己的程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以测试自己的程序不不当而引发错误,这与大众用户的情况不太相似,所以测试自己的程序不具备典型性。具备典型性。u结论:开发人员应当测试自己的程序,这是他分内的工作。但是开发人员结论:开发人员应当测试自己的程序,这是他分内的工作。但是开发人员在测试自己的程序时,很难做

20、到客观、公正,所以自我测试不具有说服力在测试自己的程序时,很难做到客观、公正,所以自我测试不具有说服力。第 13 页3.2 如何组织测试人员:应当视企业的人力资源而如何组织测试人员:应当视企业的人力资源而定定u条件特别好的公司条件特别好的公司,可以为每一个开发人员分配一名独立的测试人员。这可以为每一个开发人员分配一名独立的测试人员。这样的测试人员职业化程度很高,可以完成单元测试、集成测试和系统测试样的测试人员职业化程度很高,可以完成单元测试、集成测试和系统测试工作,能够实现开发与测试同步进行。工作,能够实现开发与测试同步进行。u条件比较好的公司,可以设置一个独立的测试小组,该测试小组轮流参加条

21、件比较好的公司,可以设置一个独立的测试小组,该测试小组轮流参加各个项目的系统测试。而单元测试、集成测试工作由项目的开发小组承担各个项目的系统测试。而单元测试、集成测试工作由项目的开发小组承担。u条件一般的公司,养不起独立的测试小组。单元测试、集成测试工作由项条件一般的公司,养不起独立的测试小组。单元测试、集成测试工作由项目开发小组承担。当项目进展到系统测试阶段,可以从项目外抽调一些人目开发小组承担。当项目进展到系统测试阶段,可以从项目外抽调一些人员,加上开发人员,临时组织系统测试小组。员,加上开发人员,临时组织系统测试小组。u条件比较差的公司,也许只有一个项目和为数不多的一些开发人员。那么条件

22、比较差的公司,也许只有一个项目和为数不多的一些开发人员。那么就让开发人员一直兼任测试人员的角色,相互测试对方的程序。如果人员就让开发人员一直兼任测试人员的角色,相互测试对方的程序。如果人员实在太少了,只好让开发者测试自己的程序,有测试总比没有测试好吧!实在太少了,只好让开发者测试自己的程序,有测试总比没有测试好吧!第 14 页3.测试人员的组织测试人员的组织3.3 避免开发人员与测试人员产生矛盾避免开发人员与测试人员产生矛盾u开发人员的注意事项:开发人员的注意事项:不要敌视测试人员。要理解测试的目的就是发现缺陷,是测试人员的不要敌视测试人员。要理解测试的目的就是发现缺陷,是测试人员的工作职责。

23、不要以为测试人员吃饱了没事干,存心找茬。工作职责。不要以为测试人员吃饱了没事干,存心找茬。不要轻视测试人员,别说人家技术水平差,不配搞开发只好搞测试。不要轻视测试人员,别说人家技术水平差,不配搞开发只好搞测试。u测试人员的注意事项:测试人员的注意事项:发现缺陷时不要嘲笑开发人员,别说他的程序真臭、到处是发现缺陷时不要嘲笑开发人员,别说他的程序真臭、到处是BugBug。在开发人员压力太大时或心情不好时不要火上浇油,发现缺陷时别大在开发人员压力太大时或心情不好时不要火上浇油,发现缺陷时别大声嚷嚷。声嚷嚷。u请留意另一种极端:如果测试人员与开发人员的关系非常好,可能请留意另一种极端:如果测试人员与开

24、发人员的关系非常好,可能会导致在测试的时候会导致在测试的时候“手下留情手下留情”,这对项目也是一种伤害。,这对项目也是一种伤害。第 15 页4.企业的测试策略企业的测试策略4.1 理念:理念:u企业的主要目的是获取利润,降低测试成本也是盈利的一种方式。企业的主要目的是获取利润,降低测试成本也是盈利的一种方式。u用较低的代价实现有效的测试,不应为了追求完美的测试而不失一切代价用较低的代价实现有效的测试,不应为了追求完美的测试而不失一切代价。第 16 页4.2 如何合理地减少测试工作量如何合理地减少测试工作量u减少冗余的测试减少冗余的测试 白盒测试与黑盒测试的方式虽然不同,但往往有白盒测试与黑盒测

25、试的方式虽然不同,但往往有“异曲同工异曲同工”之妙。在很多地之妙。在很多地方,白盒测试与黑盒测试会产生一模一样的效果(或者能推理出来),这样的方,白盒测试与黑盒测试会产生一模一样的效果(或者能推理出来),这样的测试是冗余的。测试是冗余的。在集成测试、系统测试阶段,可能要执行多次在集成测试、系统测试阶段,可能要执行多次“回归测试回归测试”。每一次。每一次“回归测回归测试试”都会存在不少的冗余,应当设法剔除不必要的重复测试工作。都会存在不少的冗余,应当设法剔除不必要的重复测试工作。u减少无价值的测试减少无价值的测试 无价值的测试通常是由于不懂得测试技术引起的。例如功能测试,在等价区间无价值的测试通

26、常是由于不懂得测试技术引起的。例如功能测试,在等价区间之中,本来只要测试一个典型的输入就行了,如果有人在此区间测试了之中,本来只要测试一个典型的输入就行了,如果有人在此区间测试了100100次次,那么其中,那么其中9999次就是无价值的。次就是无价值的。u如何如何“偷工减料偷工减料”有一些有一些“短、平、快短、平、快”的项目,经费本来就少,用户对质量要求也马马虎虎。的项目,经费本来就少,用户对质量要求也马马虎虎。为了能多挣一点钱,开发方不得不采用为了能多挣一点钱,开发方不得不采用“偷工减料偷工减料”的方式来降低测试代价。的方式来降低测试代价。偷工减料的途径无非就是减少测试的内容和频度。但不能砍

27、得太狠,否则软件偷工减料的途径无非就是减少测试的内容和频度。但不能砍得太狠,否则软件拿不出手。基本方法是找出软件中需要优先测试的部分(见下表),其它次要拿不出手。基本方法是找出软件中需要优先测试的部分(见下表),其它次要部分可以忽略或将来再测试。部分可以忽略或将来再测试。第 17 页4.企业的测试策略企业的测试策略u“偷工减料偷工减料”方法的测试优先级:方法的测试优先级:哪些功能是软件的特色?哪些功能是软件的特色?哪些功能是用户最常用的?哪些功能是用户最常用的?如果系统可以分块卖的话,哪些功能块在销售时最昂贵?如果系统可以分块卖的话,哪些功能块在销售时最昂贵?哪些功能出错将导致用户不满或索赔?

28、哪些功能出错将导致用户不满或索赔?哪些程序是最复杂、最容易出错的?哪些程序是最复杂、最容易出错的?哪些程序是相对独立,应当提前测试的?哪些程序是相对独立,应当提前测试的?哪些程序最容易扩散错误?哪些程序最容易扩散错误?哪些程序是全系统的性能瓶颈所在?哪些程序是全系统的性能瓶颈所在?哪些程序是开发者最没有信心的?哪些程序是开发者最没有信心的?第 18 页4.3 测试何时结束测试何时结束u基于测试用例的规则基于测试用例的规则 u基于基于“测试期缺陷密度测试期缺陷密度”的规则的规则u基于基于“运行期缺陷密度运行期缺陷密度”的规则的规则4.4 测试奖励机制测试奖励机制u根据缺陷的危害程度,把奖金分等级

29、。根据缺陷的危害程度,把奖金分等级。每个新缺陷对应一份奖金,把奖金每个新缺陷对应一份奖金,把奖金发给第一个发现该缺陷的人。奖金额要适当,太低了人们不感兴趣,太高发给第一个发现该缺陷的人。奖金额要适当,太低了人们不感兴趣,太高了会让项目破产的。了会让项目破产的。第 19 页5.测试规范测试规范5.1 测试流程测试流程u第一步:制定测试计划。该计划被批准后转向第二步。第一步:制定测试计划。该计划被批准后转向第二步。u第二步:设计测试用例。该用例被批准后转向第三步。第二步:设计测试用例。该用例被批准后转向第三步。u第三步:如果满足第三步:如果满足“启动准则启动准则”,那么执行测试。那么执行测试。u第

30、四步:撰写测试报告。第四步:撰写测试报告。u第五步:消除软件缺陷。如果满足第五步:消除软件缺陷。如果满足“完成准则完成准则”,那么正常结束测试。那么正常结束测试。制定测试计划制定测试计划设计测试用例设计测试用例执行测试执行测试撰写测试报告撰写测试报告消除软件缺陷消除软件缺陷审批审批审批审批回归测试回归测试完成完成测试测试完成准则完成准则启动准则启动准则第 20 页5.测试规范测试规范5.2 测试启动准则测试启动准则u同时满足以下条件,允许开始测试:同时满足以下条件,允许开始测试:(1)测试计划已经制定并且通过了审批;)测试计划已经制定并且通过了审批;(2)测试用例已经设计并且通过了审批;)测试

31、用例已经设计并且通过了审批;(3)被测试对象已经开发完毕并等待测试。)被测试对象已经开发完毕并等待测试。第 21 页5.3 测试完成准则测试完成准则u对于非严格系统可以采用对于非严格系统可以采用“基于测试用例基于测试用例”的准则。同时满足以下条件允的准则。同时满足以下条件允许结束测试:许结束测试:(1 1)功能性测试用例通过率达到)功能性测试用例通过率达到100100;(2 2)非功能性测试用例通过率达到)非功能性测试用例通过率达到9090时。时。u对于严格系统,应当补充对于严格系统,应当补充“基于测试期缺陷密度基于测试期缺陷密度”的规则:的规则:(3 3)相邻)相邻n n个个CPUCPU小时

32、内小时内“测试期缺陷密度测试期缺陷密度”全部低于某个值全部低于某个值m m。例如例如n n大于大于1010,m m小于等于小于等于1 1。5.4 测试文档模板测试文档模板u测试计划参考模板测试计划参考模板 u测试用例参考模板测试用例参考模板u测试报告参考模板测试报告参考模板第 22 页5.5 测试测试计划的参考模板计划的参考模板第 23 页5.6 测试测试用例用例第 24 页5.7 测试测试报告的参考模板报告的参考模板第 25 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.1 接口与路径测试接口与路径测试6.2 功能测试功能测试6.3 健壮性测试健壮性测试6.4 性能测试性

33、能测试6.5 用户界面测试用户界面测试6.6 信息安全测试信息安全测试6.7 压力测试压力测试6.8 可靠性测试可靠性测试6.9 安装安装/反安装测试反安装测试第 26 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.1 接口与路径测试接口与路径测试u数据一般通过接口输入和输出,所以接口测试是白盒测试的第一步。每个数据一般通过接口输入和输出,所以接口测试是白盒测试的第一步。每个接口可能有多个输入参数,每个参数有接口可能有多个输入参数,每个参数有“典型值典型值”、“边界值边界值”、“异常异常值值”之分,所以输入的组合数可能并不少。根据接口的定义,可以推断某之分,所以输入的组合数

34、可能并不少。根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。如果种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。如果实际输出与期望的输出不一致,那么说明程序有错误。白盒方式的接口测实际输出与期望的输出不一致,那么说明程序有错误。白盒方式的接口测试和黑盒方式的功能测试,其方法十分相似。试和黑盒方式的功能测试,其方法十分相似。u一个函数体内的语句可能只有十几条,但逻辑路径可能有成千上万条。想一个函数体内的语句可能只有十几条,但逻辑路径可能有成千上万条。想遍历测试几乎是不可能的,不测试或者胡乱找几条路径测试却又不行。遍历测试几乎是不可能的,不测试或者

35、胡乱找几条路径测试却又不行。u对于非严格系统而言,在分析路径方面化费很多精力是不值得的。我认为对于非严格系统而言,在分析路径方面化费很多精力是不值得的。我认为在构造接口测试的同时已经建立了测试路径。因为每一种输入将产生唯一在构造接口测试的同时已经建立了测试路径。因为每一种输入将产生唯一的输出,输入与输出之间的路径也是唯一的。由于接口测试中的输入是有的输出,输入与输出之间的路径也是唯一的。由于接口测试中的输入是有代表性的,因此相应的路径也具有代表性,不用得着费煞苦心地去找测试代表性的,因此相应的路径也具有代表性,不用得着费煞苦心地去找测试路径。路径。第 27 页u路径测试的检查表路径测试的检查表

36、数据类型、变量值、逻辑判断、循环、内存管理、文件数据类型、变量值、逻辑判断、循环、内存管理、文件I/OI/O、错错误处理误处理 u由于接口测试是枚举的,有可能漏掉某些状况,导致一些重要的路由于接口测试是枚举的,有可能漏掉某些状况,导致一些重要的路径没有被测试。预防措施有:径没有被测试。预防措施有:观察是否有程序语句从来没有被执行过。如果发生在这种情况观察是否有程序语句从来没有被执行过。如果发生在这种情况,要么是程序有错误,存在无用的代码;要么是接口测试不充,要么是程序有错误,存在无用的代码;要么是接口测试不充分,漏掉了一些路径。分,漏掉了一些路径。要特别留意函数体内的错误处理程序块(如果存在的

37、话),这要特别留意函数体内的错误处理程序块(如果存在的话),这是最易被人疏忽的路径,隐患最多。是最易被人疏忽的路径,隐患最多。第 28 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术u接口与路径测试用例的参考模板第 29 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.2 功能测试功能测试u功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望的相同。如果两者不一致,即表明功能有误。也有例外的情况,如需求规格说望的相同。如果两者不一致,即表明功能有误。也有例外的情况,如

38、需求规格说明书中的某个功能写错了,而实际上软件的功能却是正确的,这时要更改的是明书中的某个功能写错了,而实际上软件的功能却是正确的,这时要更改的是需求规格说明书。需求规格说明书。u功能测试看起来比较简单,只要看得懂需求规格说明书,谁都会做。难点在于功能测试看起来比较简单,只要看得懂需求规格说明书,谁都会做。难点在于如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。那么随如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。那么随便输入一些东西,碰运气行不行?便输入一些东西,碰运气行不行?u功能测试有两种比较好的测试方法:等价划分法和边界值分析法。功能测试有两种比较好

39、的测试方法:等价划分法和边界值分析法。等价划分是指把输入空间划分为几个等价划分是指把输入空间划分为几个“等价区间等价区间”,在每个,在每个“等价区间等价区间”中只中只需要测试一个典型值就可以了。等价划分法来源于人们的直觉与经验,可令测需要测试一个典型值就可以了。等价划分法来源于人们的直觉与经验,可令测试事半功倍。试事半功倍。“缺陷遗漏在角落里,聚集在边界上缺陷遗漏在角落里,聚集在边界上”。边界值测试法是对等价划分法的补充。边界值测试法是对等价划分法的补充。如果。如果A A和和B B是输入空间的边界值,那么除了典型值外还要用是输入空间的边界值,那么除了典型值外还要用A A和和B B作为测试用例作

40、为测试用例。例如测试函数例如测试函数f(x)=f(x)=根号根号(x)x)。凭直觉,等价区间应是(凭直觉,等价区间应是(0,10,1)和()和(1,+1,+)。可取典型值。可取典型值x=0.5x=0.5以及以及x=2.0 x=2.0进行进行“等价划分等价划分”测试。再取测试。再取 x=0 x=0以及以及x=1x=1进行进行“边界值边界值”测试。测试。第 30 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术u功能测试用例的参考模板第 31 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.3 健壮性测试健壮性测试u健壮性是指在异常情况下,软件还能正常运行的能力。健

41、壮性有两层含义健壮性是指在异常情况下,软件还能正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。:一是容错能力,二是恢复能力。u容错性测试通常构造一些不合理的输入来引诱软件出错,例如:容错性测试通常构造一些不合理的输入来引诱软件出错,例如:(1 1)输入错误的数据类型。如)输入错误的数据类型。如“猴猴”年年“马马”月。月。(2 2)输入定义域之外的数值。)输入定义域之外的数值。u粗暴一些方式俗称粗暴一些方式俗称“大猩猩大猩猩”测试法。除了不能拳打脚踢嘴咬外,什么招测试法。除了不能拳打脚踢嘴咬外,什么招术都可以使出来。例如在测试客户机服务器模式的软件时,把网络线拔术都可以使出来。例如

42、在测试客户机服务器模式的软件时,把网络线拔掉,造成通信异常中断。掉,造成通信异常中断。u恢复测试重点考察一下几项:恢复测试重点考察一下几项:(1 1)系统能否重新运行;)系统能否重新运行;(2 2)有无重要的数据丢失;)有无重要的数据丢失;(3 3)是否毁坏了其它相关的软件硬件。)是否毁坏了其它相关的软件硬件。第 32 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术u健壮性测试用例的参考模板第 33 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.4 性能测试性能测试u性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了性能测试即测试软件处

43、理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考(例如用于宣传)。得到某些性能数据供人们参考(例如用于宣传)。u有时人们关心测试的有时人们关心测试的“绝对值绝对值”,如数据送输速率是每秒多少比特。有时人们关心,如数据送输速率是每秒多少比特。有时人们关心测试的测试的“相对值相对值”,如某个软件比另一个软件快多少倍。,如某个软件比另一个软件快多少倍。u在获取测试的在获取测试的“绝对值绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如时,我们要充分考虑并记录运行环境对测试的影响。例如网络环境、计算机主频,总线结构和外部设备都可能影响软件的运行速度。网络环境、计算

44、机主频,总线结构和外部设备都可能影响软件的运行速度。u性能测试的一些注意事项:性能测试的一些注意事项:不要试图让人拿着钟表去测时间,应当编写一段程序用于计算时间以及相关数不要试图让人拿着钟表去测时间,应当编写一段程序用于计算时间以及相关数据。据。应当测试软件在标准配置和最低配置下的性能。应当测试软件在标准配置和最低配置下的性能。为了排除干扰,应当关闭那些消耗内存、占用为了排除干扰,应当关闭那些消耗内存、占用CPUCPU的其它应用软件(如杀毒软的其它应用软件(如杀毒软件)。件)。不同的输入情况会得到不同的性能数据,应当分档记录。例如传输文件的容量不同的输入情况会得到不同的性能数据,应当分档记录。

45、例如传输文件的容量从从100100K K到到1 1M M可以分成若干等级。可以分成若干等级。由于环境的波动,同一种输入情况在不同的时间可能得到不同的性能数据,可由于环境的波动,同一种输入情况在不同的时间可能得到不同的性能数据,可以取其平均值。以取其平均值。第 34 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术u性能测试用例的参考模板第 35 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.5 用户界面测试用户界面测试u绝大多数软件拥有图形用户界面。图形用户界面的测试重点是正确性、易用性和视绝大多数软件拥有图形用户界面。图形用户界面的测试重点是正确性、易用性和

46、视觉效果。在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。觉效果。在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。u用户界面用户界面测试用例的测试用例的参考模板:参考模板:第 36 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.6 信息安全测试信息安全测试u信息安全性(信息安全性(securitysecurity)是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。u信息安全性测试有如下步骤:信息安全性测试有如下步骤:(1 1)为非法入侵设立目标,例如)为非法入侵设立目标,例如“

47、盗窃某个文件盗窃某个文件”或或“更改数据库记录更改数据库记录”等。等。(2 2)邀请(或悬赏)一些人扮演黑客,让他们想尽办法入侵系统,实现)邀请(或悬赏)一些人扮演黑客,让他们想尽办法入侵系统,实现“目标目标”。(3 3)如果有人成功了,请他详述入侵的过程。别忘了给予奖励。)如果有人成功了,请他详述入侵的过程。别忘了给予奖励。u信息安全性测试用例的信息安全性测试用例的参考模板参考模板第 37 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.7 压力测试压力测试u压力测试也叫负荷测试,即获取系统能正常运行的极限状态。了解压力测试也叫负荷测试,即获取系统能正常运行的极限状态。了解

48、“极限极限”是很有价值的,例如是很有价值的,例如潜艇下潜极限深度潜艇下潜极限深度。u压力测试的主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。压力测试的主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。u压力测试的一个变种是敏感测试。在某种情况下,微小的输入变动会导致系统的表现(如性能)压力测试的一个变种是敏感测试。在某种情况下,微小的输入变动会导致系统的表现(如性能)发生急剧的变化。敏感测试目的是发现什么样的输入可能会引发不稳定现象。发生急剧的变化。敏感测试目的是发现什么样的输入可能会引发不稳定现象。u压力测试用例的参考模板压力测试用例的参考模板第 38 页6.软件系统的主

49、要测试内容及技术软件系统的主要测试内容及技术6.8 可靠性测试可靠性测试u可靠性是指在一定的环境下、在给定的时间内、系统不发生故障的概率。由于软件不像硬件那样可靠性是指在一定的环境下、在给定的时间内、系统不发生故障的概率。由于软件不像硬件那样可以可以“加速老化加速老化”,按此定义,软件可靠性测试可能会花费很长时间。,按此定义,软件可靠性测试可能会花费很长时间。u比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间隔,注意要去掉非工作时间。这样我们可以方便地统计出不发生故障的隔,注

50、意要去掉非工作时间。这样我们可以方便地统计出不发生故障的“最小时间间隔最小时间间隔”、“最最大时间间隔大时间间隔”和和“平均时间间隔平均时间间隔”。其中。其中“平均时间间隔平均时间间隔”会让人们大体了解到系统会让人们大体了解到系统“可靠可靠”的的程度。程度。第 39 页6.软件系统的主要测试内容及技术软件系统的主要测试内容及技术6.9 安装安装/反安装测试反安装测试u安装安装/反安装测试的目的:避免反安装测试的目的:避免“大风浪都挺过来了,却在阴沟里翻了船大风浪都挺过来了,却在阴沟里翻了船”u目前市面上有非常流行的、专门制作安装目前市面上有非常流行的、专门制作安装/反安装程序的一些工具,如反安

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件测试与改错-掌握有效测试的方法与技术课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|