《软件测试详述概念.ppt》由会员分享,可在线阅读,更多相关《软件测试详述概念.ppt(51页珍藏版)》请在金锄头文库上搜索。
1、软件测试 由安博测试空间技术中心http:/ (国内首次针对软件测试行业展开的专项调查报告。 )报告指出,目前软件测试的重要性已经得到了越来越多的企业的关注。数据显示,有68.2%的受调查企业认为软件测试非常重要,必须要设立专门的测试部门,并将其视为与开发环节同等重要的地位。另有31.8%的企业选择了比较重要,而认为软件测试只起到“一定作用”或“可有可无”的比例为0。 尽管几乎所有的企业认识到软件测试的重要性,但就目前软件测试和开发人员的比例来看,软件测试人员在公司所占比例仍然极不合理。调查数据显示,被调查企业中测试人员与开发人员比例为15的企业高达36.4%,比例为12的企业占31.8%,比
2、例为11及以上的企业仅占31.7%。 软件测试概述 一旦将质量问题转移给维护就会忽略开发过程中需求分析设计编码阶段可能产生的Bug。这些Bug会逐渐放大,最后扩散到整个系统中,不仅很难寻找到,而且修复代价更高。 “也就是说,你在销售软件时获取的利润,会在之后的维护中逐渐被消耗殆尽。” 大型企业的软件测试经费,一般会占到整个项目费用的 30%-40%。由此可见软件测试的重要性。 无论是ISO9000的质量体系认证,还是CMU/SEI的CMM认证,其中均涉及到测试, ISO9000中19个要素,其中有一个就是“检验和试验”,对于软件来说就是测试;CMM中18个过程关键域,其中有一个质量保证过程关键
3、域,就是对过程的监视和测量。什么是软件测试软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。简单地说,软件测试是“探测”,在“探测”中发现软件的毛病。 软件测试的目的和原则软件测试的目的(软件测试的目的(三大纪律):):1、测试是程序的执行过程,目的在于发现错误;2、一个好的测试用例在于发现至今未发现的错误;3、一个成功的测试是发现了至尽未发现的错误的测试; -测试的“三大纪律,八项注意” 软件测试的目的和原则软件测试的原则(八项注意)
4、:软件测试的原则(八项注意): 1 1 应当应当把把“ “尽尽早和不早和不断断地地测试测试” ”作作为开发为开发者的座右者的座右铭铭。 2 2 程序程序员应该员应该避免避免检查检查自己的程序,自己的程序,测试测试工作工作应该应该由由独独立立的的专业专业的的软软件件测试测试人员或人员或机机构来构来完成。完成。 3 3 在设计测试用例时,应当包括合理的输入条件和不合理在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。的输入条件。 4 4 充分注意测试中的群集现象。充分注意测试中的群集现象。 软件测试的目的和原则 5 5 测试用例应由测试输入数据和与之对应的预期输出结果测试用例应由测试输入
5、数据和与之对应的预期输出结果这两部分组成。这两部分组成。 6 6 严格执行测试计划,排除测试的随意性。严格执行测试计划,排除测试的随意性。 7 7 应当对每一个测试结果做全面检查。应当对每一个测试结果做全面检查。 8 8 妥善保存测试计划,测试用例,出错统计和最终分析报妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。告,为维护提供方便。 软件测试的对象软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。 上图表明:测试工作是连续不断地在软件开发过程中进行的。需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细
6、设计规格说明以及源程序,都应成为软件测试的对象。软件测试的分类软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。1、按开发阶段划分: 单元测试 集成测试 系统测试 验收测试 回归测试 2、按照测试实施组织划分: 开发方测试(a测试)、用户测试(测试)、第三方测试。 3、按测试技术划分: 白盒测试 黑盒测试 灰盒测试软件测试技术软件测试模型软件测试过程错误分级测试用例设计软件测试自动化软件测试技术软件测试模型V模型示意图 软件测试技术软件测试模型W模型示意图软件测试技术其他模型 除上述常见模
7、型外,业界还流传着其他几种模型,例如H模型、X模型、前置测试模型等。X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。前置测试模型体现了开发与测试的结合,要求对每一个交付内容进行测试。这些模型都针对其他模型的缺点提出了一些修正意见,但本身也可能存在一些不周到的地方。所以在测试过程管理中,正确选取过程模型是一个关键问题。 软件测试模型软件测试技术软件测试过程软件测试的阶段组成软件测试的阶段组成测试计划测试计划测试计划测试计划测试设计测试设计测试设计测试设计测试开发测试开发测试开发测试开发测试执行测试执行测试执行测试执行测试评估测试评估测试评
8、估测试评估软件测试过程测试计划测试计划的目标测试计划的目标v收集并组织测试计划信息v将软件细化为可检验的测试需求v建立测试计划用户需求用户需求用户需求用户需求测试需求测试需求测试需求测试需求定义定义定义定义根据用户需求定义并完善测试需求,以作为整个测试的标准测试计划:定义测试需求测试计划:定义测试需求软件测试过程测试计划考虑测试内容考虑测试内容软件测试过程测试计划v系统功能v用户界面v系统性能v加载测试v强化测试v容量测试v配置测试v安装测试测试设计的目标测试设计的目标软件测试过程测试设计v定义自动测试过程v选择适当的测试用例v组织测试过程信息,并传递给测试开发人员软件测试过程测试设计测试设计
9、测试设计定义定义定义定义用户需求用户需求用户需求用户需求测试需求测试需求测试需求测试需求选择选择选择选择决定决定决定决定测测测测试试试试过过过过程程程程测测测测试试试试用用用用例例例例测试开发目标测试开发目标软件测试过程测试开发v建立可重用的自动测试v维护测试对于测试需求的可跟踪性测试开发技术:编程测试开发技术:编程软件测试过程测试开发优势:优势:具有较大的灵活性缺点:缺点:编程过程复杂测试开发技术:录制测试开发技术:录制优势:优势:操作简单、快捷缺点:缺点:灵活性较差软件测试过程测试开发测试开发技术测试开发技术录录录录 制制制制脚本生成自动化,并可根据需要修改自动生成自动生成自动生成自动生成
10、脚本脚本脚本脚本软件测试过程测试开发测试执行的目标测试执行的目标v执行测试v检查测试结果v研究并组织测试结果以便评估v维护缺陷记录软件测试过程测试执行软件测试技术测试执行过程取下一个用例运行测试用例测试排错终止条件?有错误?记录错误是软件错?开始否否否是是是核对终止情况执行测试时的控制流程图测试评估的目标测试评估的目标软件测试技术测试评估v提交量化的测试覆盖域及缺陷跟踪报告v评估软件质量软件测试技术测试评估测试评估的内容:覆盖域测试评估的内容:覆盖域v哪些测试需求经过了测试v哪些需求通过了测试v我们的工作进度及效率如何软件测试技术测试评估测试评估的内容:缺陷测试评估的内容:缺陷v我们发现了哪些
11、缺陷v我们解决了哪些缺陷v遗留缺陷对软件有何影响错误分级严重性错误分级严重性我们一般把发现的错误(Bug)/缺陷(Defect)按严重性分为4类:1. 1.严重:严重:严重:严重:系统崩溃或挂起等导致系统不能继续运行;2. 2.主要:主要:主要:主要:使系统不稳定、或破坏数据、或产生错误结果,而且是常规操作中经常发生或非常规操作中不可避免的主要问题;3. 3.次要:次要:次要:次要:系统性能或响应时间变慢、产生错误的中间结果但不影响最终结果等影响有限的问题,如:显示不正确但输出正确;4. 4.轻微:轻微:轻微:轻微:界面拼写错误或用户使用不方便等小问题或需要完善的问题;错误分级优先级错误分级优
12、先级我们也把发现的错误按优先级分为三种: 1.高:立即修改; 2.中:必须修改,但不一定马上修改; 3.低:允许不修改; 一般来说是越影响用户接受或使用该产品的错误优先级越高。测试评估:综合评价测试评估:综合评价软件测试技术测试评估下面让我们看一个例子。假设一个程序P有输入X和Y及输出Z。在字长为32位的计算机上运行。如果X、Y只取整数,考虑把所有的X、Y值都做为测试数据,按黑盒测试方法进行穷举测试,力图全面、无遗漏地“挖掘”出程序中的所有错误。这样做可能采用的测试数据组(Xi, Yi)的最大可能数目为:232232264。如果程序P测试一组X、Y数据需要1毫秒,且一天工作24小时,一年工作3
13、65天,要完成264组测试,需要5亿年。 软件测试技术测试用例设计软件测试技术因为我们不可能进行穷举测试,为了节省时间和资源、提因为我们不可能进行穷举测试,为了节省时间和资源、提高测试效率,必须要从数量极大的可用测试数据中精心挑高测试效率,必须要从数量极大的可用测试数据中精心挑选出具有代表性或特殊性的测试数据来进行测试。选出具有代表性或特殊性的测试数据来进行测试。测试用例-是为特定目标开发的测试输入、执行条件和预期结果的集合。这些特定目标可以是:验证一个特定的程序路径或核实是否符合特定需求。这是RUP中关于测试用例的定义。在实际工作中,对于测试用例的设计和选择,是考察一个测试人员工作能力和经验
14、的最好方法。测试用例设计原则软件测试技术测试用例设计生成的基本准则测试用例的代表性:能够代表并覆盖各种合理的和不合理、合法的和非法的、边界的和越界的、以及极限的输入数据、操作和环境设置等;测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果;测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。测试用例设计原则根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。例。“一个程序读入一个程序读入3 3个整数,把这三个数值看作一个三角形的个整数,把这三个数值看作一个三角形的3
15、 3条边的长度条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。还是等边的。”我们可以设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:A0,B0,C0,且A+BC,B+CA,A+CB。如果是等腰的,还要判断A=B,或B=C,或A=C。如果是等边的,则需判断是否A=B,且B=C,且A=C。软件测试技术测试用例设计举例软件测试技术测试用例设计举例软件测试技术测试用例设计举例软件测试技术什么时候开始设计测试用例?测试用例该怎么写?什么时候算是完成了测试用例的设计工作?如何划分测
16、试用例的粒度? 测试用例是否应该包含所有的细节? 如何评价测试用例的好坏? 以上几条可以算是测试用例设计方面最热的问题 测试用例设计01. 在“用户名”项中输入“user”;02. 在“密码”项中输入“password”;03. 点击“确定”按钮。 这样的描述方式表面看起来可操作性似乎是增强了,任何人拿到这个文档都可以充当测试人员,检查一下这个功能是否存在缺陷。但是我们不要忘记,在开发过程中,变更的存在是必然的。 但是对于一个业务复杂、功能完整的系统,如果按照这样的方法描述测试用例,最终要么产生大量的测试用例文档,要么产生过长的单个文档。无论是那一种,如果发生了类似于上面说的变化,维护文档都将
17、变成一次地狱式的体验。 那么这个问题应该任何解决呢?软件测试技术测试用例设计软件测试技术Mercury Interactive: WinRunner LoadRunner TestDirector Rational : Rational Robot Rational TestManager Rational Functional Tester Rational Purify 软件测试自动化好的测试工程师应具备的素质人是测试工作中最有价值也是最重要的资源,没有一个合格的、积极的测试小组,测试就不可能实现。然而,在软件开发产业中有一种非常普遍习惯,那就是让那些经验最少的新手、没有效率的开发者或不适
18、合干其他工作的人去做测试工作。这绝对是一种目光短浅的行为,对一个系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少,事实上,测试者将获得极其广泛的经验,他们将遇到许多开发者不可能遇到的问题。 好的测试工程师应具备的素质 、沟通能力 一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得来,又能同开发人员说得上话,不幸的是这两类人没有共同语言。和用户谈话的重点必须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信息时,就必须将这些活重新组织以另一种方式表达出来,测试小组的成员必须能够同等地同用
19、户和开发者沟通。 、移情能力 和系统开发有关的所有人员都处在一种既关心又担心的状态之中。用户担心将来使用一个不符合自己要求的系统,开发者则担心由于系统要求不正确而使他不得不重新开发整个系统,管理部门则担心这个系统突然崩溃而使它的声誉受损。测试者必须和每一类人打交道,因此需要测试小组的成员对他们每个人都具有足够的理解和同情,具备了这种能力可以将测试人员与相关人员之间的冲突和对抗减少到最低程度。 好的测试工程师应具备的素质 、技术能力 就总体言,开发人员对那些不懂技术的人持一种轻视的态度。一旦测试小组的某个成员作出了一个错误的断定,那么他们的可信度就会立刻被传扬了出去。一个测试者必须既明白被测软件
20、系统的概念又要会使用工程中的那些工具。要做到这一点需要有几年以上的编程经验,前期的开发经验可以帮助对软件开发过程有较深入的理解,从开发人员的角度正确的评价测试者,简化自动测试工具编程的学习曲线。 、自信心 开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的自信心。如果容许别人对自己指东指西,就不能完成什么更多的事情了。 好的测试工程师应具备的素质 、外交能力 当你告诉某人他出了错时,就必须使用一些外交方法。机智老练和外交手法有助于维护与开发人员的协作关系,测试者在告诉开发者他的软件有错误时,也同样需要一定的外交手腕。如果采取的方法过于强硬,对测试者来说,在以后和开发部门的合作方面
21、就相当于“赢了战争却输了战役”。 、幽默感 在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。 好的测试工程师应具备的素质 、很强的记忆力 一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。 、耐心 一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、识别和分派一个错误。这个工作是那些坐不住的人无法完成的。 、怀疑精神 可以预料,开发者会尽他们最大的努力将所有的错误解释过去。测式者必须听每个人的说明,但他必须保持怀疑直到他自己看过以后。 、自我督促 干测试工作很容易
22、使你变得懒散。只有那些具有自我督促能力的人才能够使自己每天正常地工作。 11 、洞察力 一个好的测试工程师具有“测试是为了破坏”的观点,捕获用户观点的能力,强烈的质量追求,对细节的关注能力。应用的高风险区的判断能力以便将有限的测试针对重点环节。 好的测试工程师应具备的素质几个比较常去的站点http:/ 软件测试网http:/ 测试时代http:/ 中国软件测试社区http:/ 中国软件测试在线http:/ 中国软件测试基地相关文档规范:软件测试计划编写指南软件测试大纲编写指南软件测试报告编写指南模板:软件测试计划模板软件测试大纲模板软件测试报告模板谢谢大家!谢谢大家!下期预告:下期预告: PortalPortal技技术高加旺高加旺