现代软件工程第七部分

上传人:枫** 文档编号:579002856 上传时间:2024-08-25 格式:PPT 页数:61 大小:1.13MB
返回 下载 相关 举报
现代软件工程第七部分_第1页
第1页 / 共61页
现代软件工程第七部分_第2页
第2页 / 共61页
现代软件工程第七部分_第3页
第3页 / 共61页
现代软件工程第七部分_第4页
第4页 / 共61页
现代软件工程第七部分_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《现代软件工程第七部分》由会员分享,可在线阅读,更多相关《现代软件工程第七部分(61页珍藏版)》请在金锄头文库上搜索。

1、现代软件工程现代软件工程第七部分第七部分现代软件工程的质量保证现代软件工程的质量保证 现代软件工程第七部分现代软件工程的质量保证过程-1软件测试组织与管理-2质量评审与软件可靠性设计-3配置管理方法与实践-4第七部分第七部分 现代软件工程的质量保证现代软件工程的质量保证现代软件工程第七部分第二章 软件测试组织与管理 软件测试的方法选择和运用-2.1软件测试的组织与计划-2.2软件测试活动的过程管理-2.3软件测试结果评价与应用-2.4 第七部分第七部分 现代软件工程的质量保证现代软件工程的质量保证现代软件工程第七部分四、软件测试四、软件测试软件开发过程必须伴有质量保证活动。软件开发过程必须伴有

2、质量保证活动。 软件测试是软件质量保证的关键元素,代表了规约、软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。设计和编码的最终检查。 软件产品最大的成本是检测软件错误、修正软件产品最大的成本是检测软件错误、修正软件错误的成本。软件错误的成本。 在整个软件开发中,测试工作量在整个软件开发中,测试工作量 一般占一般占 30% 30%40%40%,甚至,甚至50%50%。 在人命关天的软在人命关天的软件件( (如飞机控制、核反应堆等)测试所花费如飞机控制、核反应堆等)测试所花费的时间往往是其它软件工程活动时间之和的时间往往是其它软件工程活动时间之和的三到五倍的三到五倍现代软件工程

3、第七部分软件测试背景软件测试背景软件是人编的所以不完美实例实例: :1994-1995,1994-1995,迪斯尼的狮子王系统不支持问题迪斯尼的狮子王系统不支持问题Intel Intel 的的 pentiumpentium 处理器处理器1994 1994 年浮点除法缺陷年浮点除法缺陷2000 2000 年年 8 8 月月 28 28 日,日,1.13 MHZ 1.13 MHZ 处理器一个可能导致运处理器一个可能导致运行程序被挂起的执行指令问题行程序被挂起的执行指令问题19991999年年1212月月3 3日日, ,美国航天局火星极地登陆飞船失踪美国航天局火星极地登陆飞船失踪19911991年爱

4、国者导弹防御系统系统时钟错误积累造成跟踪系统年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度失去精确度千年虫千年虫, ,世界各地解决世界各地解决20002000年错误超过数亿美元年错误超过数亿美元现代软件工程第七部分测试模仿测试模仿现代软件工程第七部分测测试试与与开开发发前前期期工工作作的的关关系系测试过程:依相反顺序安排的自底向上、测试过程:依相反顺序安排的自底向上、测试过程:依相反顺序安排的自底向上、测试过程:依相反顺序安排的自底向上、逐步集成的过程。逐步集成的过程。逐步集成的过程。逐步集成的过程。现代软件工程第七部分软件测试的重要性及其工作步骤软件测试的重要性及其工作步骤测试是

5、保证软件质量测试是保证软件质量, ,提高软件可靠性的关键提高软件可靠性的关键测试阶段工作步骤测试阶段工作步骤单元测试单元测试: : 检验每个模块能否单独工作检验每个模块能否单独工作. .集成测试集成测试: : 检验概要设计中模块接口设计问题检验概要设计中模块接口设计问题确认测试确认测试: : 以需求规格说明书为检验尺度以需求规格说明书为检验尺度系统测试系统测试: : 综合检验综合检验 测测试试可可视视为为分分析析、设设计计、编编码码三三个个阶阶段段的的最最终终复审复审, ,以保证软件质量以保证软件质量. .现代软件工程第七部分测试原则(测试原则(9 9条)条)所有的测试都应追溯到用户需求所有的

6、测试都应追溯到用户需求概要设计时应完成测试计划概要设计时应完成测试计划paretopareto原则:测试发现的错误中原则:测试发现的错误中80%80%很可能起源于很可能起源于20%20%的模块中。的模块中。应孤立这些疑点模块重点测试。应孤立这些疑点模块重点测试。穷举测试是不可能的。穷举测试是不可能的。应由独立的第三方构造测试应由独立的第三方构造测试( (开发和测试队伍分别建立开发和测试队伍分别建立) )。测试用例应由输入数据和预期的输出结果两部分组成测试用例应由输入数据和预期的输出结果两部分组成. .兼顾合理的输入和不合理的输入数据兼顾合理的输入和不合理的输入数据程序修改后要回归测试程序修改后

7、要回归测试应长期保留测试用例,直至系统废弃。应长期保留测试用例,直至系统废弃。现代软件工程第七部分测试的方法与技术测试的方法与技术软件测试的软件测试的策略和方法策略和方法静态测静态测试方法试方法动态测动态测试方法试方法人工测试方法人工测试方法计算机辅助静计算机辅助静态分析方法态分析方法白盒测试方法白盒测试方法黑盒测试方法黑盒测试方法静态测试约可找出静态测试约可找出303070%70%的逻辑设计错误的逻辑设计错误. .现代软件工程第七部分动态黑盒测试动态黑盒测试 闭着眼睛测试软件闭着眼睛测试软件软件输入输入 不深入代码细节的测试方法称为动态黑盒测试。不深入代码细节的测试方法称为动态黑盒测试。软件

8、测试员充当客户来使用它。软件测试员充当客户来使用它。输出输出现代软件工程第七部分动态白盒测试动态白盒测试 带上带上X X光眼镜测试软件光眼镜测试软件? ?3581322.2934199856815250*(1+0.015)*(1+0.015)360-1)/0.015250*(1+0.015)*(1+0.015)360-1)/0.015 假如知道一个盒子包含一台计算机假如知道一个盒子包含一台计算机, ,而另一个而另一个盒子是人用纸笔计算盒子是人用纸笔计算, ,就会选择不同的测试用例就会选择不同的测试用例了解软件的运作方式会影响测试手段了解软件的运作方式会影响测试手段现代软件工程第七部分黑盒测试与

9、白盒测试比较黑盒测试与白盒测试比较黑盒测试黑盒测试: :功能测试、功能测试、 数据驱动测试、数据驱动测试、 基于规格说明书的测试基于规格说明书的测试 是从用户观点,按规格说明书要求的输入数据是从用户观点,按规格说明书要求的输入数据 与输出数据的对应关系设计测试用例与输出数据的对应关系设计测试用例, ,是根据程序外是根据程序外部特征进行测试。部特征进行测试。白盒测试:白盒测试:开盒测试开盒测试 结构测试结构测试 玻璃盒测试玻璃盒测试 基于覆盖的测试基于覆盖的测试. . 是根据程序内部逻辑结构进行测试是根据程序内部逻辑结构进行测试现代软件工程第七部分黑盒测试与白盒测试黑盒测试与白盒测试优缺点优缺点

10、比较比较黑盒测试黑盒测试 白盒测试白盒测试 优优点点缺缺点点性性质质适用于各阶段测试适用于各阶段测试从产品功能角度测试从产品功能角度测试容易入手生成测试数据容易入手生成测试数据可构成测试数据使特定程可构成测试数据使特定程 序部分得到测试序部分得到测试有一定的充分性度量手段有一定的充分性度量手段可或较多工具支持可或较多工具支持某些代码得不到测试某些代码得不到测试如果规格说明有误,如果规格说明有误, 则无法发现则无法发现不易进行充分性测试不易进行充分性测试不易生成测试数据不易生成测试数据( (通常通常) )无法对未实现规格说明的无法对未实现规格说明的 部分进行测试部分进行测试工作量大,通常只用于单

11、工作量大,通常只用于单 元测试,有应用局限元测试,有应用局限是一种确认技术,回答是一种确认技术,回答“我们在构造一个正确我们在构造一个正确 的系统吗?的系统吗?”是一种验证技术,回答是一种验证技术,回答“我们在正确我们在正确 地构造一个系地构造一个系 统吗?统吗?”现代软件工程第七部分自顶向下和自底向上的测试区别自顶向下和自底向上的测试区别 自顶向下自顶向下 自底向上自底向上优点优点 可在测试早期可在测试早期 实现并验证系实现并验证系 设计测试用例容易设计测试用例容易 统主要功能统主要功能 缺点缺点 不需驱动模块不需驱动模块 不需桩模块不需桩模块 需桩模块需桩模块 只有到最后程序才只有到最后程

12、序才 能作为一个整体能作为一个整体混合集成测试方法混合集成测试方法F一般对软件结构的上层使用自顶向下结合的方法一般对软件结构的上层使用自顶向下结合的方法; ;F对下层使用自底向上结合的方法对下层使用自底向上结合的方法; ;现代软件工程第七部分测试避免测试避免 软件测试不等于程序测试软件测试不等于程序测试 软件测试应贯穿于软件定义与开发的整个期间;软件测试应贯穿于软件定义与开发的整个期间; 据美国一家公司统计,查出的软件错误中,属于需求分析据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占和软件设计的错误约占 64% 64%,属于程序编写的错误仅占,属于程序编写的错误仅占 3

13、6%36%。程序编写的许多错误是。程序编写的许多错误是“先天的先天的”。 不论黑盒还是白盒测试都不能进行穷尽测试不论黑盒还是白盒测试都不能进行穷尽测试不论黑盒还是白盒测试都不能进行穷尽测试不论黑盒还是白盒测试都不能进行穷尽测试, , , , 所所所所以软件测试不可能发现程序中存在的所有错误以软件测试不可能发现程序中存在的所有错误以软件测试不可能发现程序中存在的所有错误以软件测试不可能发现程序中存在的所有错误, , , , 因因因因此需精心设计测试方案此需精心设计测试方案此需精心设计测试方案此需精心设计测试方案, , , ,力争尽可能少的次数力争尽可能少的次数力争尽可能少的次数力争尽可能少的次数

14、, , , ,测出尽测出尽测出尽测出尽可能多的错误可能多的错误可能多的错误可能多的错误现代软件工程第七部分目录n1. 测试的常识与道理 n2. 测试的分类与比较n3. 测试人员的组织n4. 企业的测试策略n5. 测试规范n6. 软件产品的主要测试内容及技术现代软件工程第七部分1. 测试的常识与道理n1.1 你真的懂测试吗 n编程大师说:没有错误的程序世间难求。 (编程之道)n你在学校里学过测试吗?(读到博士可能也不懂测试)n你所在的企业重视测试吗? (小公司程序员的技能更加全面)n临时抱佛脚行吗?你以为有文档模板就会测试了吗? n如果不懂得有效地进行测试,你不仅得不到功劳,也没人欣赏你的苦劳,

15、你拥有最多的将只是疲劳。 n职业软件工程师应当掌握需求开发、系统设计、编程、测试、维护 所有技能。n1.2 测试的目的是什么n测试的目的是为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷。 n推论:推论:成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺陷。 n千万不要将“测试”与“演示”混为一谈。例如科研鉴定会。n如果产品通过了严格的测试,大家不要不吭气,应当好好地宣传一把 。现代软件工程第七部分1. 测试的常识与道理n1.3 一些常识和经验之谈n测试能提高软件的质量,但是提高质量不能依赖测试。 n测试只能证明缺陷存在,不能证明缺

16、陷不存在。“彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止地测试。我们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会发作。 n测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试。 n每个开发人员应当测试自己的程序(份内之事),但是不能作为该程序已经通过测试的依据(所以项目需要独立测试人员)。 n80-20原则:80的缺陷聚集在20的模块中,经常出错的模块改错后还会经常出错n测试应当循序渐进,不要企图一次性干完,注意“欲速则不达”。 现代软件工程第七部分2. 测试的分类与比较n2.1 测试方式n白盒测试:关心软件内部设计和程序实现,主要测试依据是设计文

17、档n黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是需求文档n2.2 测试阶段n单元测试、集成测试、系统测试、验收测试。是“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想。 n单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。 n集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既要验证“设计”又要验证“需求”。 n系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。 n验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用

18、户执行。 现代软件工程第七部分2. 测试的分类与比较n2.5 问题n问题1:有了“黑盒”测试为什么还要“白盒”测试?n黑盒测试只能观察软件的外部表现,即使软件的输入输出都是正确的,却并不能说明软件就是正确的。因为程序有可能用错误的运算方式得出正确的结果,例如“负负得正,错错得对”,只有白盒测试才能发现真正的原因。n白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方面,黑盒测试存在严重的不足。 n问题2:由于单元测试要写测试驱动程序,非常麻烦,能否等到整个系统全部开发完后,再集中精力进行一次性地单元测试呢? n如果这样做,在开发过程中,缺陷会越积越多并且分布得更广、隐藏得更深,反而导致

19、测试与改错的代价大大增加。最糟糕的是无法估计测试与改错的工作量,使进度失去控制。因此为图眼前省事而省略单元测试或者“偷工减料”,是“得不偿失”的做法。 n问题3:如果每个单元都通过了测试,把它们集成一起难道会有什么不妥吗?集成测试是否多此一举?n要把N个单元集成一起肯定靠接口耦合,这时可能会产生在单元测试中无法发现的问题。例如:数据通过不同的接口时可能出错;几个函数关联在一起时可能达不到预期的功能;在某个单元里可以接受的误差可能在集成后被扩大到无法接受的程度。所以集成测试是必要的,不是多此一举。现代软件工程第七部分2. 测试的分类与比较n2.5 问题n问题4:在集成测试的时候,已经对一些子系统

20、进行了功能测试、性能测试等等,那么在系统测试时能否跳过相同内容的测试? n不能!因为集成测试是在仿真环境中开展的,那不是真正的目标系统。再者,单元测试和集成测试通常由开发小组执行。根据测试心理学的分析,开发人员测试自己的工作成果虽然是必要的,但不能作为成果已经通过测试的依据。 n问题5:既然系统测试与验收测试的内容几乎是相同的,为什么还要验收测试?n首先是“信任”问题。对于合同项目而言,如果测试小组是开发方的人员,客户怎么能够轻易相信“别人”呢? 所以当项目进行系统测试之后,客户再进行验收测试是情理之中的事。否则,那是客户失职。 n不论是合同项目还是非合同项目,软件的最终用户各色各样(如受教育

21、程度不同、使用习惯不同等等)。测试小组至多能够模仿小部分用户的行为,但并不具有普遍的代表性。 n问题6:能否将系统测试和验收测试“合二为一”? n系统测试不是一会儿就能做完的,比较长时间的用户测试很难组织。用户还有自己的事情要做,他们为什么要为别人测试呢?即使用户愿意做系统测试,他们消耗的时间、花费的金钱大多比测试小组的高。n系统测试时会找出相当多的软件缺陷,软件需要反反复复地改错。如果让用户发现“内幕”,一是丢脸,二是会吓跑买主。所以还是关起门来,先让测试小组做完系统测试的好。 现代软件工程第七部分3. 测试人员的组织n3.1 了解开发人员的测试心理n测试的目的是找出尽可能多的缺陷。所以测试

22、是“破坏性”的,而开发却是“建设性”的。开发人员总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做“蓄意破坏”的测试,就象杀自己的孩子一样难以接受。 n开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘若在设计时就存在理解错误,或因不良的编程习惯而流下了隐患,他本人很难发现这类错误.n开发者对自己的程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以测试自己的程序不具备典型性。 n结论:结论:开发人员应当测试自己的程序,这是他分内的工作。但是开发人员在测试自己的程序时,很难做到客观、公正,所以自我测试不具有说服力。 n3.2

23、 如何组织测试人员:应当视企业的人力资源而定n条件特别好的公司,可以为每一个开发人员分配一名独立的测试人员。这样的测试人员职业化程度很高,可以完成单元测试、集成测试和系统测试工作,能够实现开发与测试同步进行。n条件比较好的公司,可以设置一个独立的测试小组,该测试小组轮流参加各个项目的系统测试。而单元测试、集成测试工作由项目的开发小组承担。 n条件一般的公司,养不起独立的测试小组。单元测试、集成测试工作由项目开发小组承担。当项目进展到系统测试阶段,可以从项目外抽调一些人员,加上开发人员,临时组织系统测试小组。 n条件比较差的公司,也许只有一个项目和为数不多的一些开发人员。那么就让开发人员一直兼任

24、测试人员的角色,相互测试对方的程序。如果人员实在太少了,只好让开发者测试自己的程序,有测试总比没有测试好吧! 现代软件工程第七部分3. 测试人员的组织n3.3 避免开发人员与测试人员产生矛盾n开发人员的注意事项: n不要敌视测试人员。要理解测试的目的就是发现缺陷,是测试人员的工作职责。不要以为测试人员吃饱了没事干,存心找茬。 n不要轻视测试人员,别说人家技术水平差,不配搞开发只好搞测试。 n测试人员的注意事项: n发现缺陷时不要嘲笑开发人员,别说他的程序真臭、到处是Bug。 n在开发人员压力太大时或心情不好时不要火上浇油,发现缺陷时别大声嚷嚷。 n请留意另一种极端:请留意另一种极端:如果测试人

25、员与开发人员的关系非常好,可能会导致在测试的时候“手下留情”,这对项目也是一种伤害。 现代软件工程第七部分4. 企业的测试策略n4.1 理念:n企业的主要目的是获取利润,降低测试成本也是盈利的一种方式。 n用较低的代价实现有效的测试,不应为了追求完美的测试而不失一切代价。n4.2 如何合理地减少测试工作量n减少冗余的测试n白盒测试与黑盒测试的方式虽然不同,但往往有“异曲同工”之妙。在很多地方,白盒测试与黑盒测试会产生一模一样的效果(或者能推理出来),这样的测试是冗余的。n在集成测试、系统测试阶段,可能要执行多次“回归测试”。每一次“回归测试”都会存在不少的冗余,应当设法剔除不必要的重复测试工作

26、。 n减少无价值的测试n无价值的测试通常是由于不懂得测试技术引起的。例如功能测试,在等价区间之中,本来只要测试一个典型的输入就行了,如果有人在此区间测试了100次,那么其中99次就是无价值的。 n如何“偷工减料” n有一些“短、平、快”的项目,经费本来就少,用户对质量要求也马马虎虎。为了能多挣一点钱,开发方不得不采用“偷工减料”的方式来降低测试代价。偷工减料的途径无非就是减少测试的内容和频度。但不能砍得太狠,否则软件拿不出手。基本方法是找出软件中需要优先测试的部分(见下表),其它次要部分可以忽略或将来再测试。 现代软件工程第七部分4. 企业的测试策略n“偷工减料”方法的测试优先级:n哪些功能是

27、软件的特色? n哪些功能是用户最常用的? n如果系统可以分块卖的话,哪些功能块在销售时最昂贵? n哪些功能出错将导致用户不满或索赔?n哪些程序是最复杂、最容易出错的?n哪些程序是相对独立,应当提前测试的?n哪些程序最容易扩散错误?n哪些程序是全系统的性能瓶颈所在?n哪些程序是开发者最没有信心的? n4.3 测试何时结束n基于测试用例的规则 n基于“测试期缺陷密度”的规则n基于“运行期缺陷密度”的规则n4.4 测试奖励机制n根据缺陷的危害程度,把奖金分等级。每个新缺陷对应一份奖金,把奖金发给第一个发现该缺陷的人。奖金额要适当,太低了人们不感兴趣,太高了会让项目破产的。 现代软件工程第七部分5.

28、测试规范n5.1 测试流程n第一步:制定测试计划。该计划被批准后转向第二步。 n第二步:设计测试用例。该用例被批准后转向第三步。 n第三步:如果满足“启动准则” ,那么执行测试。 n第四步:撰写测试报告。 n第五步:消除软件缺陷。如果满足“完成准则”,那么正常结束测试。制定测试计划设计测试用例执行测试撰写测试报告消除软件缺陷审批审批回归测试完成测试完成准则启动准则现代软件工程第七部分5. 测试规范n5.2 测试启动准则n同时满足以下条件,允许开始测试:n(1)测试计划已经制定并且通过了审批;n(2)测试用例已经设计并且通过了审批;n(3)被测试对象已经开发完毕并等待测试。 n5.3 测试完成准

29、则n对于非严格系统可以采用“基于测试用例”的准则。同时满足以下条件允许结束测试:n(1)功能性测试用例通过率达到100;n(2)非功能性测试用例通过率达到90时。n对于严格系统,应当补充“基于测试期缺陷密度”的规则:n(3)相邻n个CPU小时内“测试期缺陷密度”全部低于某个值m。例如n大于10,m小于等于1。 n5.4 测试文档模板n测试计划参考模板 n测试用例参考模板n测试报告参考模板现代软件工程第七部分5.5 测试计划的参考模板现代软件工程第七部分5.6 测试用例现代软件工程第七部分5.7 测试报告的参考模板现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.1 接口与路径测试n6

30、.2 功能测试n6.3 健壮性测试n6.4 性能测试n6.5 用户界面测试n6.6 信息安全测试n6.7 压力测试n6.8 可靠性测试n6.9 安装/反安装测试现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.1 接口与路径测试n数据一般通过接口输入和输出,所以接口测试是白盒测试的第一步。每个接口可能有多个输入参数,每个参数有“典型值”、“边界值”、“异常值”之分,所以输入的组合数可能并不少。根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。如果实际输出与期望的输出不一致,那么说明程序有错误。白盒方式的接口测试和黑盒方式的功能测试,其方法十分相似。

31、 n一个函数体内的语句可能只有十几条,但逻辑路径可能有成千上万条。想遍历测试几乎是不可能的,不测试或者胡乱找几条路径测试却又不行。 n对于非严格系统而言,在分析路径方面化费很多精力是不值得的。我认为在构造接口测试的同时已经建立了测试路径。因为每一种输入将产生唯一的输出,输入与输出之间的路径也是唯一的。由于接口测试中的输入是有代表性的,因此相应的路径也具有代表性,不用得着费煞苦心地去找测试路径。n路径测试的检查表n数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理 n由于接口测试是枚举的,有可能漏掉某些状况,导致一些重要的路径没有被测试。预防措施有:n观察是否有程序语句从来没有被执

32、行过。如果发生在这种情况,要么是程序有错误,存在无用的代码;要么是接口测试不充分,漏掉了一些路径。n要特别留意函数体内的错误处理程序块(如果存在的话),这是最易被人疏忽的路径,隐患最多。 现代软件工程第七部分6. 软件系统的主要测试内容及技术n接口与路径测试用例的参考模板现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.2 功能测试n功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望的相同。如果两者不一致,即表明功能有误。也有例外的情况,如需求规格说明书中的某个功能写错了,而实际上软件的功能却是正确的,这时要更改的是需求规格说明书。 n功能测试看起来比较简单,

33、只要看得懂需求规格说明书,谁都会做。难点在于如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。那么随便输入一些东西,碰运气行不行? n功能测试有两种比较好的测试方法:等价划分法和边界值分析法。 n等价划分是指把输入空间划分为几个“等价区间”,在每个“等价区间”中只需要测试一个典型值就可以了。等价划分法来源于人们的直觉与经验,可令测试事半功倍。 n“缺陷遗漏在角落里,聚集在边界上”。边界值测试法是对等价划分法的补充。如果A和B是输入空间的边界值,那么除了典型值外还要用A和B作为测试用例。 n例如测试函数。凭直觉,等价区间应是(0, 1)和(1, +)。可取典型值x=0.5以及x=

34、2.0进行“等价划分”测试。再取 x=0以及x=1进行“边界值”测试。 现代软件工程第七部分6. 软件系统的主要测试内容及技术n功能测试用例的参考模板现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.3 健壮性测试n健壮性是指在异常情况下,软件还能正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。 n容错性测试通常构造一些不合理的输入来引诱软件出错,例如:n(1)输入错误的数据类型。如“猴”年“马”月。n(2)输入定义域之外的数值。如上海人常说的“十三点”n粗暴一些方式俗称“大猩猩”测试法。除了不能拳打脚踢嘴咬外,什么招术都可以使出来。例如在测试客户机服务器模式的软件时,

35、把网络线拔掉,造成通信异常中断。 n恢复测试重点考察一下几项:n(1)系统能否重新运行;n(2)有无重要的数据丢失;n(3)是否毁坏了其它相关的软件硬件。 现代软件工程第七部分6. 软件系统的主要测试内容及技术n健壮性测试用例的参考模板现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.4 性能测试n性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考(例如用于宣传)。 n有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。n在获取测试的“绝对值”时,我们要充分考虑并记录

36、运行环境对测试的影响。例如网络环境、计算机主频,总线结构和外部设备都可能影响软件的运行速度。 n性能测试的一些注意事项:n不要试图让人拿着钟表去测时间,应当编写一段程序用于计算时间以及相关数据。 n应当测试软件在标准配置和最低配置下的性能。 n为了排除干扰,应当关闭那些消耗内存、占用CPU的其它应用软件(如杀毒软件)。 n不同的输入情况会得到不同的性能数据,应当分档记录。例如传输文件的容量从100K到1M可以分成若干等级。 n由于环境的波动,同一种输入情况在不同的时间可能得到不同的性能数据,可以取其平均值。 现代软件工程第七部分6. 软件系统的主要测试内容及技术n性能测试用例的参考模板现代软件

37、工程第七部分6. 软件系统的主要测试内容及技术n6.5 用户界面测试n绝大多数软件拥有图形用户界面。图形用户界面的测试重点是正确性、易用性和视觉效果。在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。n用户界面测试用例的参考模板: 现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.6 信息安全测试n信息安全性(security)是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。n信息安全性测试有如下步骤:n(1)为非法入侵设立目标,例如“盗窃某个文件”或“更改数据库记录”等。n(2)邀请(或悬赏)一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”。n(3)如果

38、有人成功了,请他详述入侵的过程。别忘了给予奖励。 n信息安全性测试用例的参考模板现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.7 压力测试n压力测试也叫负荷测试,即获取系统能正常运行的极限状态。了解“极限”是很有价值的,例如潜艇下潜极限深度。 n压力测试的主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。 n压力测试的一个变种是敏感测试。在某种情况下,微小的输入变动会导致系统的表现(如性能)发生急剧的变化。敏感测试目的是发现什么样的输入可能会引发不稳定现象。 n压力测试用例的参考模板现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.8 可靠性测试n可靠性是指在一

39、定的环境下、在给定的时间内、系统不发生故障的概率。由于软件不像硬件那样可以“加速老化”,按此定义,软件可靠性测试可能会花费很长时间。 n比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间隔,注意要去掉非工作时间。这样我们可以方便地统计出不发生故障的“最小时间间隔”、“最大时间间隔”和“平均时间间隔”。其中“平均时间间隔”会让人们大体了解到系统“可靠”的程度。 现代软件工程第七部分6. 软件系统的主要测试内容及技术n6.9 安装 / 反安装测试n安装 / 反安装测试的目的:避免“大风浪都挺过来了,却在阴沟里翻了船” n目前市面上有非常流行的、专门制作安装/反安装

40、程序的一些工具,如Install Shelled。制作安装/反安装程序不再是件难事,关键是不要麻痹大意。主要测试工作: n(1)至少在标准配置和最低配置两种环境下测试;n(2)如果有安装界面,应当尝试各种选项,如选择“全部”、“部分”、“升级”等。 现代软件工程第七部分PART I :软件质量保证的基本方法:软件质量保证的基本方法n一、评审 A: 软件穷举测试不现实。 B:结构化走查和审查是比单纯测试更有效的缺陷排除手段。 C:评审能早期清除缺陷,很大程度上减低了成本。n二、测试 作为评审的有力补充来保证软件的质量。 现代软件工程第七部分软件缺陷分布软件缺陷分布现代软件工程第七部分评审是软件质

41、量管理的最重要手段评审是软件质量管理的最重要手段现代软件工程第七部分如果一个软件未经评审或评审不充分如果一个软件未经评审或评审不充分现代软件工程第七部分是否实施评审项目其开发成本比较是否实施评审项目其开发成本比较现代软件工程第七部分 PART II: PART II:软件测试组织配置软件测试组织配置( (人员人员) )现代软件工程第七部分其它公司的软件测试组织配置其它公司的软件测试组织配置(人员人员)n上海爱立信通讯软件研发中心 开发人员:测试人员开发人员:测试人员=4:1 测试工作:确认测试、系统测试测试工作:确认测试、系统测试n杭州东方通信 开发人员:测试人员开发人员:测试人员=4:1(不

42、包括兼职测试人员)(不包括兼职测试人员) 测试工作:确认测试测试工作:确认测试n广东电信科学技术研究院 开发人员:测试人员开发人员:测试人员=5:1 测试工作:确认测试测试工作:确认测试n南京欣网视讯科技股份有限公司 开发人员:测试人员开发人员:测试人员=?:?:?我们公司的定位我们公司的定位 我们的软件质量我们的软件质量现代软件工程第七部分 软件测试组织配置软件测试组织配置( (成本成本) )软件类型开发成本按阶段百分比分布需求与设计实现测试控制软件462034航空航天软件342046操作系统331750科技计算软件442630商业应用软件442828现代软件工程第七部分一个测试结束后应形成

43、相关的文档一个测试结束后应形成相关的文档n测试计划;n测试用例;n测试报告;没有形成相关文档的测试过程是不完整的。现代软件工程第七部分软件测试的层次结构软件测试的层次结构类型方法阶段举例:功能算法正向反向可用性边界验收测试确认测试集成测试单元测试白盒黑盒自顶向下自底向上模拟用户操作现代软件工程第七部分测试阶段与方法测试阶段与方法测试阶段目的执行者测试方法单元测试查找独立模块中逻辑错误、数据错误和算法错误开发人员白盒测试集成测试查找模块之间接口错误开发人员白盒测试、自顶向下或自底向上确认测试确认软件是否满足软件需求测试人员黑盒测试模拟用户操作系统测试对系统中各个组成部分进行综合性检验测试人员黑盒

44、测试模拟用户操作回归测试确认软件变更后是否仍满足软件需求测试人员黑盒测试模拟用户操作 测试用户黑盒测试模拟用户操作验收测试确认软件是否满足用户需求用户测试人员黑盒测试模拟用户操作现代软件工程第七部分确认测试(确认测试(确认测试(确认测试(Validation TestingValidation Testing)n确认测试又称确认测试又称有效性测试有效性测试有效性测试有效性测试。任务是验证软件的功能和。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。性能及其它特性是否与用户的要求一致。n对软件的功能和性能要求在软件需求规格说明书中已对软件的功能和性能要求在软件需求规格说明书中已经明确规

45、定。它包含的信息就是软件确认测试的基础。经明确规定。它包含的信息就是软件确认测试的基础。现代软件工程第七部分现代软件工程第七部分 进行有效性测试(黑盒测试)进行有效性测试(黑盒测试)进行有效性测试(黑盒测试)进行有效性测试(黑盒测试)n有效性测试是在模拟的环境有效性测试是在模拟的环境 (可能就是开发的环境可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。需求规格说明书列出的需求。n首先制定测试计划,规定要做测试的种类。还需要首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。制定

46、一组测试步骤,描述具体的测试用例。现代软件工程第七部分n通过实施预定的测试计划和测试步骤,确定通过实施预定的测试计划和测试步骤,确定n 软件的特性是否与需求相符;软件的特性是否与需求相符;n 所有的文档都是正确且便于使用;所有的文档都是正确且便于使用;n 同时,对其它软件需求,例如可移植性、兼容性、同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试出错自动恢复、可维护性等,也都要进行测试现代软件工程第七部分n在全部软件测试的测试用例运行完后,所有的测试结在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:果可以分为两类:n 测试结果与预期的结果相符测试结果与预期的结果相符测试结果与预期的结果相符测试结果与预期的结果相符。这说明软件的这部。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。而这部分程序被接受。n 测试结果与预期的结果不符测试结果与预期的结果不符测试结果与预期的结果不符测试结果与预期的结果不符。这说明软件的这部。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。要为它提交一份问题报告。现代软件工程第七部分

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号