《00软件测试引言.ppt》由会员分享,可在线阅读,更多相关《00软件测试引言.ppt(34页珍藏版)》请在三一文库上搜索。
1、引言,软件测试技术,几个问题,什么是软件测试? 软件是什么? 测试是什么?,什么是软件测试?,软件=程序+文档 “程序”,指的是能够实现某种功能的指令的集合; “文档”,指的是软件在开发、使用和维护过程中产生的图文集合; 顺便问一下:数据库测试是不是软件测试? 先打个招呼: 软件测试不等于程序测试; 文档测试,也是软件测试的一个重要组成部分。,什么是测试?,请看对话 项目主管问测试人员,“你已经测试过了吗?可以进行生产了吗?” 测试人员回答:“是的,我测试过了。可以往下进行了。” 主管问道:“那么,你测试了什么?” 测试人员回答:“我测试过它了”,建筑工程管理中的一段对话:,一个建筑工程监理问
2、:“测试了34层的钢筋结构后,构建第35层是否安全?” 工程师回答:“是” 监理人员继续问道:“你测试了什么?” 工程师回答:测试了每个螺栓的连接、连接的方案,还包括拧螺栓的扳手的测试数据,以及每个螺栓的测试结果。 请看,这是我的测试工作列表,你看,我对每个涉及到的螺栓十分清楚,对每一个测试的螺栓数据都用荧光笔做了标记。,从上面的对话,我们知道了什么?,1.被测试的对象必须描述清楚 2.实施测试的人员可以是不同的角色 开发者测试,用户测试,也许是大规模用户群体测试 所有的人都可能是测试者。,从建筑工程看软件工程的情况: 如果现在问我测试了什么?工程质量如何?下一步能继续施工吗?. 对这些问题,
3、下面的对话是很常见的例子: 我们已经完成了测试计划的67%。不过,这些测试是测试说明中最重要的测试。 目前的测试数据表明,错误发现率以及错误的严重程度均在预期范围内,错误修复率为85%。 负载测试结果表明,当系统运行负载达到设计指标的90%时出现了故障。不过,系统工程师说他们知道这个情况,并承诺3个月内完成修复。 事实上,项目组当初声明的负载峰值为75%,所以,当实际负载超过90%时发生一些失败是可以接受的。,从上述回答我们发现了什么?,软件工程项目的测试远没有达到建筑工程的测试水平。 软件测试工作的描述含混不清 软件测试指标随意、弹性,不知深浅 软件测试工作的时间进度没有清晰的把握 软件测试
4、的质量没有严格的尺度,值得欣慰的是,软件测试在经济和市场方面趋于成熟,一些软件厂商显著地改进了产品的可靠性。 经济上 企业的Web系统已经能够十分廉价地对千百万注册用户发布修复错误的版本了。 市场上 软件企业可以通过Web系统来先得到客户再提高质量 对于民用或商用软件,消费者也认同了首先看功能,其次才是可靠性。,软件测试市场的形成外包测试,许多企业(如天海宏业)开设了软件测试实验室,提供包含欧洲和亚洲等10 数种语言软件的培训。 软件测试的类型 1)本地化软件的测试,也包含国际化软件测试; 2)功能和性能测试; 3)公司内部(In house)执行的测试/派驻客户开发中心的现场测试(On si
5、te)。,资料来源:上海构件库网站,2006年6月http:/ 1.软件测试的目的是尽可能多地找出程序的错误。 2.只要我们做了充分的测试,就能保证软件没有Bug。 3.验收测试是由最终用户来实施的。 4.单元测试能发现约80%的软件缺陷。 5.测试人员要坚持原则,缺陷未修复完坚决不予通过。 6.Beta测试是验收测试的一种。 7.自底向上集成需要测试人员编写驱动程序。 8.某个缺陷的严重性为高,则它的优先级为高。 9.对软件包装等宣传资料的测试不属于软件测试。,答案 1错 2错 3错 4错 5错 6对 7对 8错 9错,关于判断题-1,解释如下,大型机时代,PC机时代,Web时代,关于“软件
6、测试定义”问题的分析,问题1的错误之处 “程序测试是为了发现错误而执行程序的过程。” G.J.Myers的经典著作软件测试技巧 错误之处:以程序的错误代替软件的缺陷,是不确切的。没有错误的程序难道就是符合要求的软件吗? 但从问题1的观点看,可以有一个推论测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。,观点1的来由,把测试看作一种基于系统模型的证伪行为 哲学家K.R.Popper的证伪论Popper,1992所谓对一种科学假设进行测试,就是为了对潜在的理论进行证伪即找出其错误和缺陷。 如果这样的试验没有结论,我们对这个理论的信心就会加强,这个理论就会被采用,直到该理论最终
7、被证伪为止。,1902-1994,问题1的进一步分析 如果“程序测试是为了发现错误而执行程序的过程”是不确切的,那么是否可以认为: 测试是寻找系统模型中有明确期望的行为与已经实现的系统中观察到的行为之间差异的过程? 显然此观点(可叫做观点2)比前述的观点要更加确切了 1.可以标出引起观察失效的错误 2.可以据此更改系统以使系统正确运行。,观点2的贡献,虽然,以系统模型为依据的测试观点依然是有限的。但观点2是具有明显的用处的即:系统模型被认为是引起差异的原因,因此,软件工程的核心任务是为了反映系统状态而对模型进行不断更新。 这样,观点2就能够直接支持软件工程的过程(参见V模型)。 组件测试用于寻
8、找设计模型和其相应构件之间的差异。 集成测试用于寻找系统设计模型和一个集成子系统的子集之间的差异。 系统测试用于寻找用例模型和系统之间的差异。 性能测试用于发现在非功能要求和真实系统性能之间的差异。,基于观点2的进一步发展,观点3:发现,改进,完善,强化 如果系统模型就是对现实世界用户领域的抽象,那么,就可以用来指导软件的最终测试检验软件是否达到了“让用户通过使用该产品能够实现某些实际目标”的目的。 观点3是近年来随着Web应用测试而形成的。,基于观点2,我们需要建立如下的理念:,上述关于软件测试概念的发展背景,特别是观点2,是我们进入“软件测试技术”课程学习的基本观点。,1.没有规格说明就不
9、能测试,测试是指将实际结果与标准进行比较 首先可以肯定的是,现在的软件测试如果没有规格说明就没有人能进行测试。 但是,在一些声称他们在做测试的RAD企业中, 测试是没有规格的,所谓的规格说明是在软件完成后才整理、产生的他们的测试不知道是在干什么。 IEEE将测试定义为“一组或多组测试用例”,并将测试定义延伸为“分析软件项的过程,目的是发现当前结果与预期结果之间的差异(即错误)并评估软件项的功能”。,即使规格不完善或缺乏形式化描述,测试人员也要设法验证和确认软件的质量。 为此,测试人员要有能力说服开发人员软件中有错误,测试人员还必须具有较高的个人威信,因为没有标准可以参照。,2.市场,是所有软件
10、人员统一的尺度,在许多商业软件开发中,为获取商业成功,并不一定要使用正规的软件测试方法。 在市场目前,必须回答怎样测试? “我们不需要正规方法,因为我们只是小企业。” 这句话很有道理它告诉我们,对测试的追求,不是是否正规,而是是否有效。 目前,真正的问题是缺乏真正有效的测试。,3.坚持编程标准,减少测试需求,事实上,自20世纪90年代Web系统的兴起,软件质量的改进便是由标准驱动的,而不是测试或质量保证。,关于我们的课程,立足软件开发,软件开发的3个原理: 即使一个程序仅仅只有一行代码,也要管理它。 软件的每个部分都应与其他软件交互。 提交(deliver)高质量的软件不仅仅是编写代码。,Fr
11、anc Cohen,(美)科恩(Cohen,F.) 著,周磊 译,Java测试与设计从单元测试到自动Web测试,清华大学出版社,2005年09月,建立软件测试的知识结构,建立测试的知识基础,软件测试技术的核心,是“度量”和“方法”,1994年2000年,作为对日合作软件项目经理,写下了这样的两句话: 测试,就像程序一样重要,除非对程序进行测试,否则它就是废物。 如果你不能测试,就不要编程;如果你不进行测试,就不要使用。 现在看来,似乎很浅显。你们将建立什么理念?期末考试见!,陶铮老师 当年建立起来的软件测试理念,我们的路线,由此,我们开始要求自己,要求1:从系统化的概念出发学习软件测试的方法 测试是一个很大的概念网。 要高度关注词汇和术语的阅读理解 对于一些超前出现的术语,要主动查找。,要求2:完成作业,获得真知 作业中的概念定义必须准确完整(不论你怎样理解,也不要断章取义) 感兴趣的同学,可以考虑在积累了许多概念定义后尝试着建立一些关系自己设计一个概念知识结构。,学习方法:软件测试,设计为先,学习软件测试从测试模型设计出发。 系统模型哪怕是个小程序,也要看作一个系统的一部分。 测试模型测试如同开发,也要设计先行。,被测系统,设计,测试系统,学习方法:注重描述,理性思维,什么是缺陷?,软件行为学点滴 软件生态学点滴,接下来,我们要寻找软件测试的根源,
链接地址:https://www.31doc.com/p-2928032.html