软件测试基础知识及研发全过程概述decz.pptx

上传人:jix****n11 文档编号:87084940 上传时间:2023-04-16 格式:PPTX 页数:137 大小:1.17MB
返回 下载 相关 举报
软件测试基础知识及研发全过程概述decz.pptx_第1页
第1页 / 共137页
软件测试基础知识及研发全过程概述decz.pptx_第2页
第2页 / 共137页
点击查看更多>>
资源描述

《软件测试基础知识及研发全过程概述decz.pptx》由会员分享,可在线阅读,更多相关《软件测试基础知识及研发全过程概述decz.pptx(137页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件测试基础知识及研发全过程软件测试基础知识及研发全过程1.1 软件测试的基本概念1.2 软件测试的依据与人员组织1.3 软件测试的生命周期与模型1.4 软件测试计划及其相关文档第一章第一章 软件测试导论软件测试导论1.1.1 软件测试的定义1.1.2 软件测试的必要性1.1.3 软件缺陷1.1.4 软件测试的原则1.1.5 软件测试的误区1.1.6 软件测试与软件质量保证的关系1.1.7 软件测试技术的发展1.1 软件测试的基本概念软件的质量是软件的生命。为了保证软件的质量,人们在长期的软件开发过程中积累了许多经验,形成了许多有效的方法(技术的和管理的)。但是借助这些方法,只能减少软件中的错

2、误和不足,但不能完全避免错误。1.1 软件测试的基本概念 1.什么是软件测试 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。对软件测试的定义很多,但一般可描述如下:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试用例,利用测试用例去运行程序,以发现程序错误的过程。简言之,软件测试是为了发现错误而执行程序的过程。1.1.11.1.1 软件软件测试的定义测试的定义 目前,根据侧重点的不同,主要有以下三种观点:p 1983年IEEE将软件测试定义为:“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规

3、定的需求或是弄清预期结果与实际结果之间的差别”。明确地提出了软件测试是以检验软件是否满足需求为目的。p Myers认为:“是为了发现错误而执行程序的过程”。明确提出了软件测试是以对软件“寻找错误”为目的。p 多数软件开发商认为:软件测试是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,保证软件内在质量。明确提出了软件测试是以保证软件内在质量。1.1.11.1.1 软件软件测试的定义测试的定义 2.软件测试与软件调试的区别概念不同:软件测试是一个在可控环境中执行软件的过程,以验证是否按预期运行。软件调试是一个分析和定位软件BUG的过程。作用不同:调试是测试的一个基

4、础,调试支持测试,但不能完全替代测试。目的不同:调试使软件能正确运行,而测试是发现软件中的错误。对象不同:调试的对象是代码,测试的对象是开发过程中的所有的产品。1.1.11.1.1 软件软件测试的定义测试的定义3.软件测试的目的 基于不同的立场,存在两种完全不同的测试目的。从用户的角度出发,希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。从软件开发者的角度出发,希望成为表明软件产品中不存在错误的过程,验证软件已正确地实现了用户的要求,确立人们对软件质量的信心。综合明来,测试的目的是通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品的缺陷,对在需求和设计过程中存在

5、的问题查缺补漏,确保软件产品的质量。4.4.软件测试的软件测试的基本职责基本职责 软件测试有两个基本职责:一是验证即前后阶段需求是否一致。二是确认即满足最终需求。1.1.11.1.1 软件软件测试的定义测试的定义1.为什么要进行软件测试软件由人开发,人会犯错误软件(程序+数据+文档)都有缺陷。无法避免人类犯错,但是可以通过努力寻找隐藏在软件中的缺陷。多、快、好、省 软件测试是提高软件质量、保证软件质量的手段之一。1.1.2 1.1.2 软件测试的必要性软件测试的必要性用户所说的需求分析人员理解的系统需求规格说明书开发人员理解的实际软件人不是完美的,在设计和实现时会出错 信息传递的误差1.1.2

6、 1.1.2 软件测试的必要性软件测试的必要性工程硕士12没有软件工程和项目管理概念下,软件开发现象1.1.21.1.2 软件测试的必要性软件测试的必要性 2.软件缺陷案例 软件缺陷将造成灾难性危害或对用户产生巨大的影响。u 2003年,软件问题造成美国东部及加拿大停电,导致5000万人受影响,3人丧生,60亿美元的损失。u 2000年,美国海军飞机控制软件问题导致飞机坠落,4人丧生。u 1997年韩国空难,导致225人丧生(雷达控制软件问题)u 2004年,北美银行已新安装的软件的缺陷,使数以百万计的客户受影响,缺陷修复花费两个星期,造成亿元损失。u 2003年,美国专门为学生贷款的公司由于

7、软件出错,错误计算80万学生的贷款利率,导致800万元的损失1.1.2 1.1.2 软件测试的必要性软件测试的必要性 3.软件测试是软件开发的重要环节 4.软件测试是保证软件质量的主要手段。1.1.21.1.2 软件测试的必要性软件测试的必要性1.1.31.1.3 软件缺陷软件缺陷1软件缺陷的定义u 软件缺陷(bug)的定义也很多,综合说来是程序软件中存在一种破坏系统正常运行能力的问题、错误或瑕疵,导致软件产品在某种程度上不能满足用户的需要。u 软件缺陷是指软件产品中所存在的导致不能完全满足用户需求的错误。u 按IEEE 729标准定义,软件缺陷的含义有2个方面:软件产品的内部:软件缺陷是软件

8、产品开发或维护过程中所存在的错误、瑕疵等各种问题。软件产品的外部:软件缺陷是软件所需要实现的某种功能的失效或违背。2.软件缺陷外部表现的判断规则u 软件未实现产品说明书要求的功能。u 软件出现了产品说明书指明不会出现的错误。u 软件超出实现了产品说明书提到的功能。u 软件未实现产品说明书虽未明确指出但应该实现的目标。u 软件难以理解,不易使用,运行缓慢或者终端用户认为不好。第条规则是全面的。如果软件测试员发现某些地方不对劲,无论什么原因,都要认定为缺陷。1.1.31.1.3 软件缺陷软件缺陷 以计算器为例说明判断规则。若产品说明书声称能够准确无误地进行加、减、乘、除运算,当你按下()键,结果什

9、么反应也没有;根据第条规则,是一个缺陷。假如得到错误答案;根据第条规则,同样是一个缺陷。若产品说明书声称永远不会崩溃、锁死或者停止反应,当你任意敲键盘,计算器停止接受输入。根据第条规则,是一个缺陷。若在测试计算器过程中,发现除了加、减、乘、除之外它还可以求平方根,而产品说明书中没提到该功能。根据第条规则,是一个缺陷。若在测试计算器过程中,发现电池电量很少时,会导致计算不正确,但产品说明书未指出该问题。根据第条规则,是一个缺陷。若“”键布置的位置使其极不好按,或在明亮光下显示屏难以看清。根据第条规则,是一个缺陷。1.1.3 1.1.3 软件缺陷软件缺陷 3软件缺陷的种类 从功能表现形式来分,软件

10、缺陷有三种类型:l 完全没有实现的功能。例如用户需要实现A、B、C三个功能,但是系统只实现了A、B两个功能l 基本实现了用户需求的功能,运行时出现功能或性能上的问题。例如满足系统要求,但运行经常报错、死机,响应时间要求为5 秒,实际为10秒。l 实现了用户不需要的功能。例如用户要求实现A、B、C三个功能,实际实现了A、B、C、D四个功能。1.1.3 1.1.3 软件缺陷软件缺陷 还表现在其他方面。如:特性没有实现或部分实现;设计不合理;实际结果和预期结果不一致;运行出错(运行中断、系统崩溃、界面混乱);数据结果不正确、精度不够;用户不能接受的其他问题(存取时间过长、界面不美观)。1.1.3 1

11、.1.3 软件缺陷软件缺陷 4软件缺陷的级别 软件测试员所发现的大多数缺陷是难以觉察的简单错误,不明显,也不严重;并且有些是真正的错误,有些不是。一般来说,问题越严重的,其优先级越高,越应得到及时的纠正。软件公司对缺陷后果的严重程度的定义不尽相同,但一般可以分为4种级别:1.1.3 1.1.3 软件缺陷软件缺陷l 致命的:致命错误是指造成系统或应用程序崩溃、死机、悬挂,或造成数据丢失、主要功能完全失效等。l 严重的:严重错误是指功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,或致命的错误声明。l 一般的:一般错误是指虽然不影响系统的基本使用,但没有很好地实现功能,没有达到预期效果。如次

12、要功能丧失,提示信息不太准确,或用户界面差,操作时间长等。l 微小的:微小错误是指对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。u 除了这4种之外,有时需要“建议”级别来处理测试人员所提出的建议或质疑,如建议程序做适当的修改,来改善程序运行状态,或对设计不合理、不明白的地方提出质疑。1.1.3 1.1.3 软件缺陷软件缺陷1.轻微:词语拼写错误2.中等:误导或重复信息3.使人不悦:被截断的信息,0.00¥帐单4.影响使用:有些交易没有处理5.严重:丢失交易6.非常严重:不正确的交易处理7.极为严重:经常出现“非常严重”的错误8.无法忍受:数据库破坏9.灾难性:系统停

13、机10.容易传染:扩展到其他系统的系统停机缺陷类型的综合讨论参见软件异常IEEE标准分类(IEEE,1993)1.1.3 1.1.3 软件缺陷软件缺陷 5.软件缺陷的状态 为便于跟踪和管理软件的缺陷,可以定义不同的状态。软件缺陷的状态一般有4种:l 激活状态:问题还没有解决,测试人员新报的bug,或验证后bug仍然存在。l 已修正状态:开发人员针对所存在的缺陷,修改程序,认为已解决问题,或通过单元测试。l 关闭或非激活状态:测试人员验证已经修正的bug后,确认bug不存在以后的状态。1.1.3 1.1.3 软件缺陷软件缺陷 6软件缺陷产生的原因 造成软件缺陷的原因归纳起来有3个方面:l 技术问

14、题 算法错误。语法错误。计算方法与精度要求不匹配或取值精度不够。结构不合理。接口参数不匹配。1.1.3 1.1.3 软件缺陷软件缺陷l 团队工作问题 与用户的沟通不够,对需求不是十分清楚。不同阶段的开发人员对同一问题理解不一致。设计或编程上的假定或依赖性,相互间沟通不充分。l 软件本身问题 文档错误、内容不正确或拼写错误。数据考虑不周全,引起强度或负载不合理。对边界考虑不周全,如漏掉几个边界条件。对实时软件,同步不精确,引起时间上不协调、不一致。没有考虑系统崩溃后在安全性、可靠性的隐患。硬件或系统软件上存在的错误。软件开发标准或过程上的错误。1.1.3 软件缺陷软件缺陷 7软件缺陷的组成 软件

15、缺陷是由很多原因造成的,从按软件开发过程来看,不同阶段的工作,导致软件缺陷的差异性很大,如图所示。需求分析是软件缺陷出现最多的阶段。图1-1软件缺陷构成示意图1.1.3 1.1.3 软件缺陷软件缺陷27 8.与缺陷相关的概念 软件错误(software error):在软件生存期内的不希望或者不可接受的人为错误。人为错误。软件故障(Software Fault):软件运行过程中出现的一种不希望或不可接受的内部状态内部状态。此时,如果没有适当(容错)加以及时处理,便会产生软件失效。软件失效(Software Failure):软件运行时产生的一种不希望或不可接受的外部行为。外部行为。1.1.3

16、1.1.3 软件缺陷软件缺陷图1-5 缺陷放大模型 因此,从需求开始,尽早制定测试计划,坚持在软件开发的各个阶段的技术评审,才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些隐患,提高软件质量。1.1.尽早地和不断地进行软件测试尽早地和不断地进行软件测试 IBM的研究结果表明,缺陷存在放大趋势。从图可见,问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。1.1.41.1.4 软件软件测试的原则测试的原则 2.2.不可能完全的测试不可能完全的测试 对一个程序进行完全测试就是意味着在测试结束之后,再也不会发现其它的软件错误了。其实,这是不可能的,主要原因有以下几点

17、:不可能测试程序对所有可能输入的响应。不可能测试到程序每一条可能的执行路径。无法找出所有的设计错误。不能采用逻辑来证明程序的正确性。1.1.41.1.4 软件软件测试的原则测试的原则如果测试一个计算器程序的功能,需要进行多少次输入?不计其数!l 整型:从 1+1 到 999999999999999999999999999999+999999999999999999999999999999l 小数:1.0+0.1,1.0+0.2等等l 键盘上的任何一种组合l 乘法和除法运算重复上面的操作1.1.41.1.4 软件软件测试的原则测试的原则 由小到大是指软件测试的粒度。无论是传统的软件测试还是面向对

18、象的软件测试都要遵循该原则。多个单元组合过渡到集成测试,集成测试过渡到系统测试。虚线是各个测试阶段的发布基线,随着测试的逐步深入,范围的逐步扩大,测试时间、可用资源也随之增大。3.3.由小到大,增量测试由小到大,增量测试测试过程关系图1.1.41.1.4 软件软件测试的原则测试的原则 4.4.避免测试自己的程序避免测试自己的程序 避免程序员测试自己的代码的主要原因如下:程序员轻易不会承认自己写的程序有错误。程序员的测试思路有局限性,测试时容易受到编程思路的影响。多数程序员没有严格正规的职业训练,缺乏专业测试人员的意识。程序员没有养成错误跟踪和回归测试的习惯。由别人测试,会更客观,更有效。1.1

19、.41.1.4 软件软件测试的原则测试的原则 5.5.设计周密的测试用例设计周密的测试用例。软件测试的本质就是针对要测试的内容确定一组测试用例。测试用例是测试工作的核心,应该尽量设计的周密细致,才能保证测试工作的质量。测试用例由测试输入数据和与之对应的预期输出结果两部分组成。如果对测试输入数据没有给出预期的程序输出结果,那么就缺少了检验实测结果的基准,就有可能把一个似是而非的错误结果当成正确结果。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。合理的输入条件是指能验证程序正确的输入条件,而不合理的输入条件是指异常的、临界的、可能引起问题变异的输入条件。因此,软件系统处理非法命令的能

20、力也必须在测试时受到检验。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。1.1.41.1.4 软件软件测试的原则测试的原则测试用例至少应该包括如下几个基本信息:执行测试用例前,应满足的前提条件。输入(合理的、不合理的)。预期输出(包括后果和实际输出)。典型的测试用例模版1.1.41.1.4 软件软件测试的原则测试的原则 6.6.注意错误集中的现象注意错误集中的现象 充分注意测试中的群集现象。测试时不要以为找到了几个错误问题就已解决,不需继续测试。应当对错误群集的程序段进行重点测试,以提高测试投资的效益。软件缺陷的“扎堆”现象的常见形式:对话框的某个控件功能不起作

21、用,可能其他控件的功能也不起作用。某个文本框不能正确显示双字节字符,则其他文本框也可能不支持双字节字符。联机帮助某段文字的翻译包含了很多错误,与其相邻的上下段的文字可能也包含很多的语言质量问题。安装文件某个对话框的“上一步”或“下一步”按钮被截断,则两个按钮在其他对话框中也可能被截断。1.1.41.1.4 软件软件测试的原则测试的原则 7.7.确认确认BUGBUG的有效性的有效性 有时候测试人员提交的BUG并不是真正的BUG,无效BUG的来源如图所示。一般由A测试人员发现的BUG,一定要由B测试人员进行确认,如果发现严重的BUG可以召开评审会进行讨论和分析。1.1.41.1.4 软件软件测试的

22、原则测试的原则无效BUG来源构成图 8.合理安排测试计划 合理的测试计划有助于测试工作顺利有序地进行。测试计划应结合多种针对性强的测试方法,列出所有可使用资源,建立一个正确的测试目标。要有明确规定,不要随意解释。本着严谨、准确的原则,周到细致地做好测试前期的准备工作,避免测试的随意性。尤其是要尽量科学合理地安排测试时间。严格执行测试计划,排除测试的随意性。妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。,1.1.41.1.4 软件软件测试的原则测试的原则错误依赖关系9.9.回归测试回归测试1.1.41.1.4 软件软件测试的原则测试的原则 错误之间存在单纯的依赖或者复杂的多

23、重依赖关系。(a)图中:A错误依赖于B错误的关闭而关闭;(b)图中:A错误依赖于B错误和C错误的同时关闭而关闭;(c)图是(a)和(b)的复合方式。程序中的错误存在着一对多、多对多的复杂关系而变得难以处理,且有些依赖关系处于隐性状态。10.10.测试结果的统计和分析测试结果的统计和分析 只有对测试输出信息进行深入地统计、分析和比较,才能正确的鉴别测试输出的数据,给出清晰的错误分析报告。当输出的信息很庞大时,可以借助专业的测试工具。应对每一个测试结果做全面检查。必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住关键,暴露错误。1.1.41.1.4 软件软件测试的原则测试的原则 11.1

24、1.及时更新测试及时更新测试 导致测试失败的原因有很多,大致有如下几点:1、测试团队管理者失职;2、测试团队中沟通不好;3、测试团队和项目团队沟通不良;4、测试过程中,执行角色无准确定义;5、测试团队缺乏良好的培训。1.1.41.1.4 软件软件测试的原则测试的原则 误区1 调试和测试是一样的 误区2 软件测试在软件开发过程中并不重要 误区3 在软件开发结束之后进行测试 误区4 过分依赖Beta测试 误区5 过分依赖自动化测试 误区6 测试是可穷尽的 误区7 测试是证明软件的正确性 误区8 可以忽略测试的设计 1.1.51.1.5 软件软件测试的测试的误区误区 软件=程序+数据+文档+服务软件

25、质量:系统、组件或过程满足明确的需求。-IEEE Standard Glossary of Software Engineering Technology软件测试:挑毛病,发现Bug(缺陷)。软件测试是软件质量保证的手段。1.1.6 1.1.6 软件测试与软件质量保证的关系软件测试与软件质量保证的关系44SQA(Software Quality Assurance):为确保软件开发过程和结果符合预期要求而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价。面向管理层,提供正确的信息,工作的对象是产品;促进和协调过程改进;预防问题。软件测试:使用人工或者自动手段来运行或测定某个系统

26、的过程,检验其是否满足规定的需求或判定预期结果与实际结果之间的差别。工作的对象是开发的软件,寻找缺陷;强调书写正式的测试文档,实现可重复的结构化软件测试;发现问题。1.1.6 1.1.6 软件测试与软件质量保证的关系软件测试与软件质量保证的关系 1 1软件测试技术的发展历史软件测试技术的发展历史在软件行业发展初期,就实施软件测试,但这一阶段不是真正意义上的软件测试,更多调试。测试没有计划和方法,测试用例的设计和选取也都是根据测试人员的经验随机进行的,大多数测试的目的是为了证明软件可以正常运行。20世纪5060年代,软件仍然处于次要位置,测试理论和方法的发展比较缓慢。随着高级语言诞生,程序的复杂

27、性远远超过了以前,测试的重点也逐步转入到使用高级语言编写的软件中来。尽管如此,由于受到硬件的制约,在计算机系统中,软件仍然处于次要位置。软件正确性的把握仍然主要依赖于编程人员的技术水平。1.1.7 软件测试技术的发展软件测试技术的发展70年代以后,软件技术的成熟和完善使得软件测试的规模和复杂度加大,软件测试也逐渐形成了一套完整的体系,逐渐走向规范化。随着计算机处理速度的提高、存储容量的增加,软件的地位变得越来越重要。随着软件开发技术的成熟和完善,软件规模越来越大,复杂度也大大增加。因此,软件的可靠性面临着前所未有的危机,给软件测试工作带来了更大的挑战,进而培养和造就了一批批出色的测试人才。1.

28、1.7 软件测试技术的发展软件测试技术的发展如今在软件产业化发展的大趋势下,人们对软件质量,成本和进度的要求也越来越高,质量的控制已经不仅仅是传统意义上的软件测试。传统软件的测试大多是基于代码运行的,并且常常是软件开发的后期才开始进行,但大量研究表明,设计活动引入的错误占软件开发过程中出现的所有错误数量的50%65%。因此,越来越多的声音呼吁,要求有一个规范的软件开发过程。而在整个软件开发过程中,测试已经不再只是基于程序代码进行的活动,而是一个基于整个软件生命周期的质量控制活动,贯穿于软件开发的各个阶段。1.1.7 软件测试技术的发展软件测试技术的发展2 2软件测试的现状软件测试的现状国外现状

29、软件测试在软件公司中占有重要地位软件测试理论研究蓬勃发展,每年举办各种各样的测试技术年会,发表了大量的软件测试研究论文,引领软件测试理论研究的国际潮流软件测试市场繁荣国内现状我国软件测试起步于“六五”期间,目前国家863、973以及大力支持软件测试的研究1990年,成立中国软件评测中心,测试服务开始发展软件测试正在逐步成为一个新兴的产业国家确定“软件评测师”的职业资格认证;“以测代评”正成为我国科技项目择优支持的一项重要举措;第三方测试机构繁荣发展1.1.7 软件测试技术的发展软件测试技术的发展 与一些发达国家相比,国内测试工作还存在一定的差距。在我国,软件测试可能算不上一个真正的产业,软件开

30、发企业对软件测试认识淡薄,软件测试人员与软件开发人员比例失调,而在发达国家和地区软件测试已经成了一个产业。但在软件测试实现方面并不比国外差,国际上优秀的测试工具,我们基本都有,这些工具所体现的思想我们也有深刻的理解,很多大型系统在国内都得到了很好的测试。1.1.7 软件测试技术的发展软件测试技术的发展1.2 1.2 软件测试软件测试的依据与人员组织的依据与人员组织1.2.1 软件测试的依据1.2.2 软件测试人员职责分配1.2.3 软件测试人员必需的素质 1.2.4 软件测试的经验511.软件质量标准ISO9000-3软件质量标准:考虑软件行业的特殊性制定,是ISO质量管理和质量保证标准在软件

31、开发、供应和维护中的使用指南。核心内容包括:合同评审需求规格说明开发计划质量计划设计和实现测试和确认验收复制、交付和安装维护1.2.11.2.1 软件软件测试的依据测试的依据522.2.软件测试规范软件测试规范软件测试规范就是对软件测试的流程过程化并对每一个过程元素进行明确的界定,形成完整的规范体系,包括:规范目的、范围、文档结构、词汇表、参考信息、可追溯性、方针、过程/规范、指南、模板、检查表、培训、工具、参考资料等等。1.2.11.2.1 软件软件测试的依据测试的依据533.软件测试国家标准GB/T9386-1988 计算机软件测试文件编制规范GB/T15532-1995 计算机软件单元测

32、试规范GB/T17544-1998信息技术软件包质量要求和测试GB/T16260.1-2003软件工程产品质量第1部分质量模型GB/T16260.2-200X软件工程产品质量第2部分外部度量GB/T16260.3-200X软件工程产品质量第3部分内部度量GB/T16260.4-200X软件工程产品质量第4部分使用质量度量GB/T18905.1-2002软件工程产品质量第1部分概述GB/T18905.2-2002软件工程产品质量第2部分策划和管理GB/T18905.3-2002软件工程产品质量第3部分开发者用的过程GB/T18905.4-2002软件工程产品质量第4部分需求方用的过程GB/T18

33、905.5-2002软件工程产品质量第5部分评价者用的过程GB/T18905.6-2002软件工程产品质量第6部分评价模块文档编制1.2.11.2.1 软件软件测试的依据测试的依据1.软件测试的组织结构和人员结构 软件测试在组织结构上一般分为功能测试组、性能测试组和文档工作组。软件测试在人员结构上一般需要有测试文档审核师、测试工程师和操作人员。1.2.21.2.2 软件软件测试人员的职责分配测试人员的职责分配工程硕士55 2.2.测试职责分配测试职责分配系统分析设计人员系统分析设计人员软件开发人员软件开发人员软件测试人员软件测试人员配置管理员配置管理员质量保证人员质量保证人员对测试过程进行对测

34、试过程进行审计审计对测试文档及测对测试文档及测试代码等进行配试代码等进行配置管理置管理提出测试需求;提出测试需求;进行测试需求跟进行测试需求跟踪;进行软件系踪;进行软件系统可测性分析;统可测性分析;确定测试的对确定测试的对象、范围和方法象、范围和方法提供软件开发计划提供软件开发计划SDP,参与测试计,参与测试计划的制定和评审,划的制定和评审,提供软件功能需求提供软件功能需求规格、需求分析、规格、需求分析、测试建议、响应测测试建议、响应测试需求、参与测试试需求、参与测试方案的评审;跟踪方案的评审;跟踪解决缺陷问题报告解决缺陷问题报告单,参与测试报告单,参与测试报告的评审。的评审。制定测试计划、方

35、制定测试计划、方案并组织评审,实案并组织评审,实现测试用例,代码现测试用例,代码和工具等设计、编和工具等设计、编写测试规程;执行写测试规程;执行测试、反馈并跟踪测试、反馈并跟踪缺陷问题报告单,缺陷问题报告单,完成测试报告并组完成测试报告并组织评审,输出测试织评审,输出测试案例、总结等经验案例、总结等经验文档文档 1.1.软件测试人员必需的基本素质软件测试人员必需的基本素质 三心二意一能力细心耐心责任心服务意识团队意识沟通能力1.2.31.2.3 软件软件测试人员必需的素质测试人员必需的素质 2.2.软件测试人员必需的知识素养软件测试人员必需的知识素养 深入理解软件测试理论 掌握各类软件测试技术

36、 接受专门的测试训练 对软件缺陷警觉性高 对缺陷出现的各种情况较熟悉 掌握多种计算机语言 掌握一般的软硬件、数据库及网络知识 对所要测试的软件的功能、结构、要求有深入的认识。1.2.31.2.3 软件软件测试人员必需的素质测试人员必需的素质 58(1 1)心理素质最重要心理素质最重要开发人员我不会犯错-任何人都可能犯错这种错误不能算作错误-质量是由用户来评价的发现我的错误是对我工作的否定-是对我的工作的帮助测试人员责任心不够,反正测试是不可能发现所有错误的职业教育+激励措施没有创造性、枯燥总结经验,培养敏锐度,提升个人价值和权威技术比开发人员差,自信心不足代表用户,决定成功的是用户满意1.2.

37、41.2.4 软件软件测试的经验测试的经验59(2 2)测试前必须明确预期的输出结果测试前必须明确预期的输出结果否则实际的输出结果很可能成为检验的标准,测试失去意义(3 3)必须检查每一个实际输出结果)必须检查每一个实际输出结果很可笑,但是却是事实:不认真检查输出结果(4 4)一段程序中存在错误的概率与这段程序中已经发现的)一段程序中存在错误的概率与这段程序中已经发现的错误数成正比错误数成正比编码规范、需求理解、技术能力、内部耦合性都会导致这种“虫子窝“现象1.2.41.2.4 软件软件测试的经验测试的经验工程硕士60(5 5)可能的情况下,避免测试自己的软件)可能的情况下,避免测试自己的软件

38、发现不了思路错误发现不了环境错误心理因素导致测试可能不够彻底和全面(6 6)依照用户的要求、配置环境和使用习惯进行测试并)依照用户的要求、配置环境和使用习惯进行测试并评价结果评价结果(7 7)测试设计决定了测试的有效性和效率,测试工具只)测试设计决定了测试的有效性和效率,测试工具只能提高测试效率能提高测试效率1.2.41.2.4 软件软件测试的经验测试的经验工程硕士61(8 8)注意保留测试设计,并注意测试设计的可重用性和说明)注意保留测试设计,并注意测试设计的可重用性和说明文档文档(9 9)测试活动要有组织、有计划、有选择)测试活动要有组织、有计划、有选择穷举测试是不可能的不充分的测试是不负

39、责任,过度的测试是浪费资源有计划的活动能提高效率(1010)不要放弃随机测试的方法)不要放弃随机测试的方法测试的不成熟性和艺术性1.2.41.2.4 软件软件测试的经验测试的经验1.1.软件测试人员的工作内容软件测试人员的工作内容u 根据软件需求规格说明书、设计说明书、代码等软件产物选取恰当的输入组合u 运行被测试对象u 输入数据u 执行操作u 查看输出结果是否和预期的结果一致,如果一致则认为被测对象没有问题,否则,则认为被测对象中可能存在缺陷u 缺陷修改完毕,验证缺陷修改,确认缺陷是否修改正确,是否引入新问题1.2.51.2.5 软件软件测试人员的工作流程测试人员的工作流程l核心工作产品核心

40、工作产品l测试用例l缺陷报告单l其他重要的工作其他重要的工作产品产品l测试计划l测试策略l测试报告l。2.2.软件测试人员的工作流程软件测试人员的工作流程1.2.51.2.5 软件软件测试人员的工作流程测试人员的工作流程 3.软件测试人员的工作目标 GMyers给出了关于测试的一些规则,可以把它看作是测试人员的工作目标:软件测试是为了发现错误而执行程序的过程。测试是为了证明程序有错,而不是证明程序无错。一个好的测试用例在于他能发现至今未发现的错误。一个成功的测试是发现了至今未发现的错误的测试。要强调的是软件测试不只是软件测试人员的工作,也是软件开发人员和软件使用者的工作。1.2.51.2.5

41、软件软件测试人员的工作流程测试人员的工作流程1.3 软件测试的生命周期与模型1.3.1 软件的开发模型1.3.2 软件测试的生命周期1.3.3 软件测试与软件开发的关系 1.经典瀑布模型经典瀑布模型 由美国Winston Royce向IEEE WESCON(Royce,Winston 1970)提交的一篇名为管理大规模软件系统的开发的论文中首次提出的。由于方法的一个阶段成瀑布流入下一个阶段,所以为“瀑布模型或线性模型”。瀑布模型有很多的变化,但都包括以下的阶段:需求分析与定义,系统设计与软件设计,系统实施与单元测试,系统集成与系统测试,系统运行与系统维护,也是软件开发的基本过程。需求分析:可行

42、性分析与软件需求分析 软件需求分析:业务需求 功能需求 非功能需求1.3.1 1.3.1 软件的开发模型软件的开发模型该处测试仅指执行测试1.3.1 1.3.1 软件的开发模型软件的开发模型n2.2.原型模型原型模型n直观、形象,更多地遵循了人们认识事物的规律,因而更容易被人们接受。n采用模拟的手段,缩短了用户和系统分析、设计人员之间的距离。n在整个系统开发过程中反馈是及时的,标准是统一的,可及时地暴露问题,确保系统实现的正确性。n 充分利用了新一代的软件工具,使得系统开发和运行的效率都大大提高。1.3.1 1.3.1 软件的开发模型软件的开发模型1.3.1 1.3.1 软件的开发模型软件的开

43、发模型1.3.1 1.3.1 软件的开发模型软件的开发模型1.3.1 1.3.1 软件的开发模型软件的开发模型3.3.增量与迭代模型增量与迭代模型增量开发增量开发迭代开发迭代开发 AnalysisDesignCodeTestDelivery of 1st incrementIncrement1AnalysisDesignCodeTestAnalysisDesignCodeTestDelivery of 2nd incrementDelivery of 3rd incrementIncrement2Increment31.3.1 1.3.1 软件的开发模型软件的开发模型风险分析风险分析风险分析风

44、险分析原型1原型2原型3可用原型建模模拟评价软件需求需求确认操作概念需求计划开发计划软件产品设计设计确认与验证集成与测试计划详细设计编码单元测试集成测试接收测试实现成本评审制订下阶段计划确定下阶段目标和约束条件风险分析、构造原型开发、验证阶段软件产品过程迭代 4.4.螺旋模型螺旋模型(风险驱动的过程模型风险驱动的过程模型,增量模型与爆布模型相结合增量模型与爆布模型相结合)1.3.1 1.3.1 软件的开发模型软件的开发模型5.5.渐进模型渐进模型1.3.1 1.3.1 软件的开发模型软件的开发模型 软件测试的生命周期分为6个阶段,前个阶段是引入错误时期,也就是开发过程中的需求规格说明、设计、编

45、码阶段,此时极易引入错误或者导致开发过程中其他阶段产生错误。后3个阶段是通过测试发现错误、时期,这需要通过使用一些适当的测试技术和方法来共同完成,主要任务是进行缺陷分类、缺陷隔离和解决缺陷。其中在修复旧缺陷的时候很可能引进新的错误,导致原来能够正确执行的程序出现新的缺陷。在软件测试生命周期的每个阶段都要完成一些确定的任务,在执行每个阶段的任务时,可以采用行之有效的结构分析设计技术和适当的辅助工具;在结束每个阶段的任务时都进行严格的技术审查和管理复审。最后提交最终软件配置的一个或几个成分(文档或程序)。1.3.2 1.3.2 软件测试软件测试的生命周期的生命周期图1-2软件测试生命周期1.3.2

46、 1.3.2 软件测试软件测试的生命周期的生命周期1 1测试与开发各阶段的关系测试与开发各阶段的关系 软件开发过程是一个自顶向下,逐步细化的过程。首先在软件计划阶段定义软件的作用域,进行软件需求分析,建立软件的数据域、功能和性能需求、约束和一些有效性准则。然后进入软件开发-软件设计和编写代码。测试过程则是依相反的顺序安排的自底向上,逐步集成的过程,低一级测试为上一级测试准备条件。首先对每一个程序模块进行单元测试,消除程序模块内部在逻辑上和功能上的错误和缺陷。再对照软件设计进行集成测试,检测和排除子系统(或系统)结构上的错误。随后再对照需求,进行确认测试。最后从系统全体出发,运行系统,看是否满足

47、要求。1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系图1-3 软件测试与软件开发过程的关系1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系 2 2测试与开发的并行性测试与开发的并行性 在软件的需求得到确认并通过评审后,概要设计工作和测试计划制定设计工作就要并行进行。如果系统模块已经建立,对各个模块的详细设计、编码、单元测试等工作又可并行。待每个模块完成后,可以进行集成测试、系统测试。并行流程如图1-4所示。1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系图1-4 软件测试与软件开发的并行性1.3.3 1.3.3 软件测试

48、与软件开发的关系软件测试与软件开发的关系3 3测试与开发模型测试与开发模型 软件测试不仅仅是执行测试,而是一个包含很多复杂活动的过程,并且这些活动贯穿于整个软件开发过程。在软件开发过程中,应该什么时候进行测试,如何更好地把软件开发和测试活动集成到一起?这是软件测试工作人员必须考虑的问题,因为只有这样,才能提高软件测试工作的效率,提高软件产品的质量,最大限度地降低软件开发与测试的成本,减少重复劳动。1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系 (1 1)V V模型模型 在传统开发过程中,测试不受重视,仅把它作为在需求分析、概要设计、详细设计及编码之后的一个阶段。在V模

49、型中,描述了一些不同的测试级别,并指出了这些级别所对应的软件生命周期中不同的阶段和测试活动和开发活动的对应关系。这是V模型的主要价值。V模型适用于所有类型的开发过程,但并不一定适用于开发和测试过程的所有方面。特别地,V模型并不是瀑布模型(线性关系)的变形。1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系软件测试与开发的V模型1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系 (2 2)W W模型模型 由于各种原因,开发的每一个环节都可能产生错误,如果坚持各个阶段的技术评审,就可尽早发现和预防错误。软件开发与测试的W模型,形象地说明了软件测试与开发的

50、同步性。应用W模型的优点在于:每个软件开发活动结束后就可以执行相应的测试。如在需求分析结束后,就可以进行需求分析测试。1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系W模型示意图 1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系 (3 3)H H模型模型 与前两种模型相比,H模型充分地体现了测试过程。H模型揭示了:软件测试不仅仅指测试的执行,还包括很多其他的活动。软件测试是一个独立的流程,贯穿软件开发周期,与其它流程并发进行。软件测试要尽早准备,尽早执行。软件测试根据被测物的不同是分层次的,不同层次的测试活动可以是按照某个次序先后进行的,但也可能

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁