1、章软件测试的任务由安博测试空间技术中心http:/ 2009年9月-2010年01月 SEI of ECNU 版权所有 1-2本章要点p讨论软件测试的背景,包括讨论软件测试的背景,包括 n缺陷是什么n软件测试的定义和目的n软件测试工程师n工作职责n工作流程n工作产品n职业道德n易混淆的专业术语 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-3软件中的错误是客观存在的p原因原因n在可以预见的未来,人仍将是软件开发中的主角。我国有句古话“人非圣贤孰能无过”,由于在软件开发各个环节中产生的人为错误,使得软件中必然存在着大大小小的问题,而这些
2、问题在一定的触发条件下被激活,便会使软件的运行出现差错,导致或大或小的经济损失,而且更为严重的是这些激活的错误可能会威胁人类生命,会导致令人痛心疾首的人间悲剧。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-4软件中的问题导致的可怕后果p 阅读下面的代码,标出你认为有问题的地方阅读下面的代码,标出你认为有问题的地方 / If the signal ahead is clear then increase the speed. void increase_speed_if_safe (int speed, int signal) if (
3、signal = CLEAR) ; increase_speed (); 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-5软件中的问题导致的可怕后果p阅读下面的代码,标出你认为有问题的地方阅读下面的代码,标出你认为有问题的地方 typedef int Time; typedef int Distance; typedef int Speed; const Speed SAFETY_SPEED = 120; void increase_speed (Speed s); void check_speed (Time t, Distance
4、 d) Speed s = d/t; if (s SAFETY_SPEED) increase_speed (t); void perform_safety_checks () Time t = get_time (); Distance d = get_distance (); check_speed (d, t);2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-6缺陷是什么p定义定义n到目前为止,没有标准的定义,不同组织对缺陷的定义不同。有的组织称缺陷为偏差、异常、故障、错误或事故。在实际活动中,不用太在意缺陷的到底该怎么叫,最重要
5、的对缺陷有相同的理解n在软件测试中,有一组专门用于描述软件中的错误的术语,下面的一些定义已经被大多数专业人员所接受p软件错误:软件错误:在软件生存期内的不希望或者不可接受的人为错误。p软件缺陷:软件缺陷: 存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差, Bug是口语化的缺陷。缺陷在没有被激活的状态下,软件可以正常运行,但是一旦在某一触发条件下,缺陷被激活,软件内部就会出现故障。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-7缺陷是什么p定义定义n下面的一些定义已经被大多数专业人员所接受p软件故障:软件故障:软件运行过
6、程中出现的一种不希望或不可接受的内部状态。此时,如果没有适当的处理措施的话,软件故障就会导致软件失效。p软件失效:软件失效:软件运行时产生的一种不希望或不可接受的外部行为结果。比如死机就是一种严重的软件失效。软件失效是软件用户所能直接感受到的。当软件出现失效时,必然说明软件中存在缺陷2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-8缺陷的代价p缺陷的代价是非常高昂的n经济上n一项统计数据表明,大约62%的项目成本用于修复软件缺陷。n据美国NIST在2002年发布的一项研究估计,美国经济每年因软件Bug会损失600亿美金,约合0.6%的国
7、民生产总值n对人类生命的威胁2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-9结论p结论结论n软件已经越来越多的被使用在日常生活中,我们需要更多的高质量、高可靠性、高安全性的软件产品,但是缺陷,软件世界中的“恐怖分子恐怖分子”,影响着软件的质量,威胁着软件的正常运行。n我们无法避免人类犯错,但是可以通过努力将隐藏在软件中的缺陷,尤其是那些致命的,严重的缺陷,尽可能多地寻找出来,尽早定位,尽早解决,避免人间悲剧一次又一次地上演。n寻找软件中的缺陷就是软件测试的主要目的,承担这个使命的就是软件测试工程师。2007级本科软件测试与质量保证 2
8、009年9月-2010年01月 SEI of ECNU 版权所有 1-10软件测试是什么p定义定义n到目前为止,没有标准的定义n不同组织有不同的定义n下面的一些定义被大多数专业人员所接受nMyers程序测试是为了发现错误而执行程序的过程 nBill Hetzel 测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量n请记住n软件测试的目的就是发现软件中的缺陷1.测试对象不只包括程序代码,也包括与软件相关的交付件2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-11软件测试的目标p目标目标n软件测试的目的就是寻找软件
9、中的缺陷n为了获得更高质量的软件,软件测试的目标是尽量多的寻找软件中的缺陷n另外,考虑到测试成本,软件测试的目的是在可允许的时间跨度内可管理的工作量的条件下尽可能多地寻找软件中的缺陷 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-12软件测试方法的分类p通常有如下几种分类:n站在对被测对象内部实现情况了解程度的角度:白盒测试、灰盒测试和黑盒测试;n站在是否执行被测系统的角度:静态测试和动态测试;n站在测试工具支持的程度:手工测试和自动测试;n站在被测内容的角度:功能测试、结构测试和非功能性测试;n站在以显示被测对象是否工作的角度:正向
10、测试和反向测试;n站在测试过程推进的角度:单元测试、集成测试、系统测试。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-13白盒测试、灰盒测试和黑盒测试p白盒测试(白盒测试(White-box Testing)n是指基于被测对象的内部实现结构进行测试的方法。p黑盒测试(黑盒测试(Black-box Testing)n是指把被测对象看成一个不透明的黑盒,在完全不考虑被测对象内部实现的情况下进行测试的方法。p灰盒测试(灰盒测试(Grey-box Testing)n是白盒测试和黑盒测试的混合体,是指在部分了解被测对象实现的情况下进行测试的方法
11、。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-14静态测试和动态测试p静态测试(静态测试(Static Testing)n是指不运行软件系统,而是通过采用检查或者评审的方式寻找被测对象中的缺陷。p动态测试(动态测试(Dynamic Testing)n是指运行系统进行测试的过程。动态测试可能是大多数人认为的测试,即通过运行软件进行的测试2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-15手工测试和自动测试p手工测试(手工测试(Manual Testing)n是指在不借助测试工具
12、的情况下,完全由人类完成对软件产品的测试。p自动测试(自动测试(Automated Testing)n是指通过测试工具或者其它手段,按照测试工程师的预定计划对软件产品进行自动的测试。 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-16正向测试和反向测试p正向测试(正向测试(Positive Testing)n是指以验证被测对象的正常行为为测试目标,根据其行为表现判断被测对象中是否存在缺陷的一种测试方法。p反向测试(反向测试(Negative Testing)n是指以破坏被测对象的正常行为为测试目标,根据其行为表现判断被测对象中是否存在
13、缺陷。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-17单元测试、集成测试和系统测试p单元测试(单元测试(Unit Testing)n是指以构成软件的基本单位-单元为测试对象,验证其功能是否正常,是否符合设计要求。p集成测试(集成测试(Integration Testing)n是指将经过单元测试的构件按照设计要求组装成子系统或系统,以验证按设计要求组合在一起的各单元能够按照既定的意图协作。p系统测试(系统测试(System Testing)n是指将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件
14、、数据和人员等其他系统元素结合在一起, 在实际运行环境下,对应用系统进行的一系列组装和确认测试,以验证系统是否符合用户需求。 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-18功能测试、结构测试和非功能测试p功能测试(功能测试(Functional Testing)n是指依据功能需求规格说明书评估被测对象的功能是否符合需求。p结构测试(结构测试(Structured Testing)n是指基于被测对象的内部结构或者逻辑寻找缺陷的测试活动。p非功能性测试(非功能性测试(Nonfunctional Testing)n是指依据非功能需求规格
15、说明书评估被测系统的某些整体属性,例如性能测试、安全性、易用性等是否符合需求。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-19功能测试vs黑盒测试 p功能测试功能测试n针对系统或者组件的功能进行的测试p黑盒测试黑盒测试n不考虑系统或者组件的内部结构,仅关注系统或组件在特定输入和一定条件所产生的输出p区别和联系区别和联系n许多专业人士认为功能测试和黑盒测试是等同的两个事物,我个人并不同意此观点,黑盒测试是一种设计测试用例的方法而功能测试是测试的内容,黑盒测试同样可以用于性能、安全、易用性等非功能测试2007级本科软件测试与质量保证 2
16、009年9月-2010年01月 SEI of ECNU 版权所有 1-20结构测试vs白盒测试 p结构测试结构测试n基于内部结构或者逻辑寻找缺陷的测试过程p白盒测试白盒测试n也叫玻璃盒测试、透明盒测试n基于系统或者组件内部实现方法寻找缺陷的测试方法p区别和联系区别和联系n白盒测试的方法一般可用于进行结构测试2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-21软件测试工程师的目标p目标目标n基于软件测试的目标,软件测试工程师的目标就是发现软件中的缺陷n考虑到缺陷修正成本,软件测试工程师的目标是尽早发现程序中的缺陷n缺陷被修正后,测试人员必
17、须确认缺陷被修改正确,同时修改没有引入新的缺陷,也就是说软件测试工程师的目标是尽早的发现软件中的缺陷并确保缺陷被正确的修改2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-22软件测试工程师如何进行测试p方法方法n根据软件需求规格说明书,设计说明书,代码等软件产物选取恰当选取恰当的输入组合(测试用例的输入组合(测试用例 test case)n运行被测对象n输入数据n执行操作n查看输出结果是否和预期的结果一致,如果一致则认为被测对象没有问题,否则,则认为被测对象中可能存在缺陷1.缺陷修改完毕,验证缺陷修改,确认缺陷是否修改正确是否引入新问题
18、2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-23软件测试工程师的工作流程p核心工作产品核心工作产品n测试用例n缺陷报告单p其他重要的工作产品其他重要的工作产品n测试计划n测试策略n测试报告n。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-24测试用例是什么p定义定义n针对被测试项的测试输入,执行条件和预期结果的集合(是挑选出来的具有代表性的输入组合)n挑选输入组合的方法就是测试用例设计方法测试用例设计方法n测试用例是软件测试的灵魂,体现着软件测试工程师的职业价值n测试用例可
19、以用结构化自然语言描述,也可以用编程语言实现 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-25为什么需要测试用例p不可能进行完全的测试根本原因:不可能进行完全的测试根本原因:n输入的组合数目太庞大n输出的可能结果数目太庞大n可执行的路径数目太庞大p结论结论n为了进行聪明的测试,软件测试工程师必须在众多的数据中选取恰当的做代表2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-26p如果你打算测试一个计算器程序的功能,你认为需要进行多少次输入?不可能进行完全的测试p结论是不计其数p
20、整型: 从 1+1 到 999999999999999999999999999999+ 999999999999999999999999999999p小数:1.0+0.1,1.0+0.2等等p键盘上的任何一种组合1.为乘法和除法运算重复上面的操作2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-27p结论是:51+52+53+510= 6.1*107,需要1分钟左右的时间p如果循环次数为20次,100次时,结果又如何?p结论是:循环20次,需要约16000小时,循环100次则大约需要2.4*1048年不可能进行完全的测试p左图是具有某程序
21、的流程图,假设循环10次,请计算一下有多少条程序执行通路?假设由图中得到的所有路径都是可执行路径,执行一次循环大约需要10微秒(奔腾4 1.7G),且一年365天每天24小时不停机,请回答:如果循环次数为10的话,遍历图中所有路径需要多长时间?2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-28三角形问题三角形问题三角形问题输入三个整数,这三个数分别代表三角形三条边的长度,请判断这三个数构成的三角形是等边三角形,等腰三角形还是不等边三角形并输出相应的结果。 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of
22、 ECNU 版权所有 1-29测试用例实现(1)p一个用自然语音实现的测试用例实例p不同的组织可能使用不同的测试用例模版2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-30测试用例实现p基于JUnit框架(www.junit.org)用Java语言实现的一个测试用例2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-31高质量测试用例的属性p高质量测试用例的四个属性高质量测试用例的四个属性n有效性p是否能够发现缺陷或者至少可能发现缺陷n仿效性p衡量测试用例的代表程度 ,减少测试用例的
23、数量n经济性p测试用例所花费的成本,包括设计、实现、调试和运行测试用例的成本 n可维护性p修改和维护测试用例的难易程度 2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-32缺陷报告单p定义定义n缺陷问题报告单是描述缺陷细节的文档,包括缺陷的编号、被测软件及其版本、优先级、严重程度、谁来修复缺陷等等p优良的缺陷报告应该具备准确、清晰、简洁、完整,统一的特点,还优良的缺陷报告应该具备准确、清晰、简洁、完整,统一的特点,还需要注意需要注意n给每个缺陷问题报告单分配一个唯一的标识以有利于缺陷的后续处理、查询和管理维护等活动。n站在为他人服务的立
24、场上编写缺陷问题报告单n注意语句措词,不要涉及对他人的评价和自己情绪的宣泄n只报告问题不要试图解决问题n一个缺陷问题报告单里只报告一个缺陷漏2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-33缺陷问题报告单示例p缺陷问题报告单张三2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-34软件测试工程师职业道德规范p建议建议n恪守职业道德,始终维护所在组织的利益,不能因为个人利益,损害甚至出卖组织n具备团队合作精神,在工作中树立为他人服务的意识,始终铭记软件项目不是个人作品,而是整个团队
25、密切合作的产物,当同事们寻求帮助时,应尽最大可能伸出援助之手。n具备诚实的品德,实事求是。不能为了个人绩效进行具有欺骗性的活动,如伪造测试数据,对发现的缺陷夸大其辞等。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-35软件测试工程师职业道德规范p建议建议n良好的沟通能力。软件测试工程师的工作是挑别人的毛病,这注定测试人员不会太受团队中其他成员的欢迎,尤其是开发人员。两者经常会因为发现的缺陷究竟是不是真的缺陷而发生冲突。软件开发工程师,出于本能,会为自己的作品辩解不承认测试工程师找到的缺陷是自己的问题或者认为这就是一个功能,而软件测试工
26、程师,出于职业责任感,会坚持自己的意见,此时,如果不适当运用一些沟通技巧,很可能将形成一个互不相让的僵局。在这种情况下,软件测试工程师不防站在开发人员的角度思考一下并选择恰当的方式进行表达。适当的幽默可能会非常有帮助。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-36软件测试工程师职业道德规范p建议建议n始终秉持任何软件都存在缺陷的工作态度。软件测试工程师不能因为自己的想当然或崇拜心理主观地认为被测系统中问题很少或者不会有问题。如果是这样的话,根据心理学研究的结果,那么很可能遗漏本应被发现的缺陷。n认真负责仔细耐心。缺陷经常会把自己隐
27、藏在角落里,为了发现缺陷,测试工程师很可能重复相同的操作很多次,如果没有耐心半途而废或者思想有松懈的话,缺陷也许就从会悄悄地溜走。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-37软件测试工程师职业道德规范p建议建议n只要是缺陷不论大小一定要报告。客户和用户会因为系统中竟然会存在类似于页面中的错别字、文本框没有左对齐或是语句不太通顺等很明显的小错误而大动肝火,会认为连这种小问题都没有办法杜绝,系统有何可信而言。另外,一旦测试工程师报告了所发现的缺陷,如果没有确切的理由,那么就要坚持到底所提的缺陷是一个缺陷,不能因为开发人员的态度或者自
28、己自信心的缺乏而退缩。n报告不可重现的缺陷。不可重现问题的背后很可能隐藏着系统致命的缺陷,一旦被激活会导致系统运行的不稳定甚至宕机。对于这类缺陷,软件测试工程师有责任提出并且协助开发人员重现定位。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-38软件测试工程师职业道德规范p建议建议n不断充实专业知识,总结工作经验。在目前的IT界里,不跟进先进的专业知识是一种落后,不重复优良的工程经验是一种浪费,这条规则对软件测试工程师也不会例外。2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-
29、39术语p软件测试中几组易混淆的术语软件测试中几组易混淆的术语n测试和调试(Testing and debugging)n验证和确认(Verification and Validation)n动态测试和静态测试(Dynamic testing and Static testing)n功能测试和黑盒测试(Functional Testing and black-box Testing)n结构测试和白盒测试(Structural Testing and White-Box Testing)n测试和质量保证(Testing and Quality Assurance )2007级本科软件测试与质量保
30、证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-40测试和调试p测试测试n测试的目的是为了寻找缺陷p调试调试n调试是为了发现、定位和修改程序代码中的错误 n调试的目的是为了排错p区别和联系区别和联系n测试为了寻找缺陷,调试为了排除缺陷n可能存在这样的工作流程: 测试发现缺陷 调试定位缺陷和修改缺陷 测试验证缺陷是否修改正确2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-41验证和确认p验证验证n评估系统或组件的过程以确定在给定的开发阶段是否满足在该阶段开始时定义的标准,用以验证产品的正确性p确认确认n开发过程
31、中或结束时评估系统或组件的过程以确定系统或组件是否满足定义的需求p区别和联系区别和联系n验证(Verification)用于回答“我们开发的产品正确吗?”n确认(Validation)用于回答“我们开发的正确的产品吗?”2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-42验证和确认p在现实中,我们不仅需要验证也需要确认,因为n在开发过程中存在这样一种状况,尽管每个阶段的产物符合这个阶段开始定义的标准,但是由于理解的差别,很可能开发出一个正确却不符合用户需求的产品。因此在软件开发过程中既需要验证也需要确认2007级本科软件测试与质量保证
32、2009年9月-2010年01月 SEI of ECNU 版权所有 1-43测试和质量保证p软件测试软件测试n软件测试的目的是为了发现缺陷p软件质量保证(软件质量保证(Software Quality Assurance SQA)n软件质量保证是为软件产品的开发过程或者维护过程达到既定功能目标和管理层要求提供充分证明的一系列系统的有计划的活动n软件质量保护的目的是评估和改进过程p区别和联系区别和联系n软件测试的工作对象是软件产品n软件质量保证的工作对象是软件过程2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-44小结p缺陷为人类带来巨大
33、的损失,软件测试的目的就是为了寻找缺陷p软件测试只能说明软件中存在缺陷p软件测试工程师利用测试用例发现缺陷p测试用例是软件测试工程师的核心工作产品,体现着软件测试工程师的职业价值p软件测试不是软件质量的守护神2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-45问题Q&A2007级本科软件测试与质量保证 2009年9月-2010年01月 SEI of ECNU 版权所有 1-46课后作业p复习课堂内容p以“软件测试”,“软件测试前景”,“软件测试现状”,“软件测试方法”,“软件测试工具”,“自动化测试”,“软件测试研究内容”等为关键字,在Internet网上搜索与软件测试相关的资料,并阅读其中感兴趣的部分p获取课件nE-mail:; pwd: sei2007