软件测试教材:《软件测试》(第二版),RonPatton著,张小松等译课程安排:讲授36课时,上机18机时第一章软件测试背景大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.1软件测试起源1、第一个Bug的故事1945.9,Hopper,MarkII2、更多的Bug故事……迪斯尼的狮子王:1994-199594年秋,迪斯尼公司发布了面向儿童的游戏“LionKingAnimatedStorybook”,进行了大量的宣传和促销,销售额可观。12月26日,开始收到大量投诉:游戏无法正常运行,舆论哗然。原因:没有对市场上的各种PC机型进行测试,该软件只能在少数系统中正常工作,但在大众常用的系统中不行。Intel奔腾浮点除法:1994(4195835/3145727)*3145727-4195835算式的结果如果为0,则计算机没有问题;如果结果不为0,则使用的是带有浮点除法软件缺陷的老式Intel奔腾CPU,该软件缺陷被刻录在一个芯片中,并反复生产制造。在发布芯片之前的内部测试已经发现了这个问题,不过因为只有在精度要求很高的计算中才导致错误,Intel管理层认为不严重,未修正更换芯片的费用:4亿美元千年虫:约1974当时计算机存储的空间小,为节省字节,将四位的年份用两位表示只有到数十年后的2000年1月1日才会出现问题,这期间肯定会升级或更改系统。但是,这也许被忘记了。各种系统中这类问题的解决费用估计超过数亿美元美国爱国者导弹防御系统:1991该系统应用于海湾战争中对抗伊拉克飞毛腿导弹的防御战,有几次在对抗导弹战役中失利,其中一枚在沙特阿拉伯的多哈击毙了28名美军士兵。原因:软件缺陷。一个很小的系统时钟错误累积起来就可能延迟14小时,造成跟踪系统失去准确度。在多哈袭击战中,系统被延迟100多个小时。美国航天局火星基地登陆:19991999年12月3日,美国航天局的火星基地登陆飞船在试图登陆火星表面时失踪。原因:控制登陆推进器的某个数据位在未着地时就意外更改,导致推进器在未着陆时就被关闭,飞船坠毁。医疗设备召回,2007成千上万的医疗设备被召回,只是为了修正一个软件错误。该错误将会导致不能可靠的指示什么时候给设备的可用功率过低。早在我国周朝时,有些叫“人”,“氏”的工官,专门负责器物的质量问题,可称为最早的测试员。1961年,美国的大力神州际导弹助推器上的一个软件错误造成了该设备的毁坏,软件测试从此开始兴起……大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.2什么是软件缺陷1、描述软件问题的术语:故障,失败,缺点异常,事件,偏差问题,错误,缺陷2、软件缺陷的定义产品说明书:是软件开发小组的一个协定。它对开发的产品进行定义,给出产品的细节、如何做、做什么、不能做什么。至少满足以下5个规则之一才称为软件缺陷:软件未实现产品说明书要求的功能。软件出现了产品说明书指明不应出现的错误。软件实现了产品说明书未提到的功能。软件未实现产品说明书虽未明确提及但应该实现的目标。软件难以理解、不易使用、运行缓慢或者从测试员的角度看最终用户会认为不好。大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.3为什么会出现软件缺陷产品说明书设计编码其他缺乏有效的沟通软件复杂度时间的压力人员的自大软件开发工具缺乏文档的代码大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.4软件缺陷的修复费用从说明书——》设计——》编码——》测试——》发布其修复费用成指数级增长大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.5软件测试员的职责发现软件缺陷尽可能早的发现软件缺陷尽可能早的发现软件缺陷,并确保其得以修复大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.6软件测试员应具备的素质个人素质对软件测试感兴趣他们是群探索者:喜欢新环境、新东西他们是故障排除员:善于发现问题他们不放过任何蛛丝马迹:喜欢不停的尝试,以发现问题他们具有创造性:采用超常手段来寻找缺陷他们是群追求完美者:尽力接近目标他们判断准确:发现真正的缺陷他们注重策略和外交:知道如何和程序员合作他们善于说服:确保缺陷被修复业务素质业务知识产品设计知识了解软件架构了解UML掌握自动化测试工具懂一些开发知识编写文档的能力一个小测验被测程序的描述程序从一个输入对话框中读取三个整数值。这三个整数值代表了三角形三边的长度。程序显示提示信息,指出该三角形究竟是不规则三角形、等腰三角形还是等边三角形设计一组测试用例,对上述程序进行测试测试用例的评价你设计的测试用例集合中是否包含下述情况?有效的不规则三角形、有效的等边三角形、有效的等腰三角形各一个测试用例代表等腰三角形的三个测试用例:两边相等的所有情况某边的长度等于0、为负数的测试用例各一个三个整数都大于0,其中两个整数之和等于第三个;三个这样的测试用例,列举了两边之和等于第三边的所有情况三个整数都大于0,其中两个整数之和小于第三个;三个这样的测试用例,列举了一边大于两边之和的所有情况三边的长度都等于0的测试用例至少有一个测试用例中输入的边长为非整数值至少有一个测试用例中输入的边长个数不对对每个测试用例是否定义了针对预期输入值的预期输出值评价说明的问题即使测试用例集满足上述条件,仍不能保证可以查找出所有可能的错误即使测试一个这么小的程序,也不是件容易的事完全测试一个复杂的、实际运行的程序似乎是不太可能的——可以通过使用一些测试技术,尽可能完全地对软件进行测试软件测试之所以困难,是因为:我们在任何地方都可能犯错。从软件的需求获取阶段到代码编写阶段以及各阶段之间的转换过程都有可能引入错误,贯穿整个软件生命周期,因此占整个开发工作量的45%。软件测试基本上没有规律可循,不能按部就班的完成,(当然也有能够轻松找到的错误,如语法错误,因为踏实有规律可循的),但是对于占绝大部分的逻辑错误,就很难发现了(如我们还要发现软件未达到产品说明书虽未指出但应该达到的目标)。大纲1.1软件测试起源1.2什么是软件缺陷1.3为什么会出现软件缺陷1.4软件缺陷的修复费用1.5软件测试员的职责1.6软件测试员应具备的素质1.7软件测试行业的前景1.7软件测试行业的发展前景国内现状,2006年的一个统计数据重要性调查:68.2%的企业认为软件测试非常重要,必须设立软件测试部分,与开发同样重要;31.8%的企业喏认为比较重要;0%的认为可有可无。测试人员与开发人员比例:36.5%的企业为1:531.8%的企业为1:231.7%的企业=1:1测试行业的受欢迎度:87%测试人员能力:严重不足测试人员现状待遇逐渐提高,频繁跳槽,不努力积累经验浮躁。参加各种培训,只求一工作岗位1.8软件测试组织1、测试的组织形式微软公司的教训:最简单的软件测试组织:没有任何组织,没有分工,没有结构。按测试人员参与的程度兼职:在中小企业中常见,承担测试与开发、文档编写等工作。不利于测试的纵深发展,测试员的进步有限。专职:按测试人员的从属关系项目型职能型2、如何快速融入一个项目团队了解每位开发人员的性格特点,找共同语言对开发的产品感兴趣将缺陷跟踪库中的Bug查看一遍,避免重复工作阅读各种文档虚心学习各种测试技巧查资料,回答以下问题国内目前软件测试行业的现状如何?国内目前测试人员的能力如何?软件测试的发展过程有多少了解?软件测试未来的发展方向?什么制约了软件测试的发展?