软件测试的基本理论和方法1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试的对象
软件测试不等于程序测试.软件测试贯穿于软件定义和开发 的整个期间.需求分析,概要设计,详细设计,以及程序编码等 各个阶段所得到的文档,包括需求规格说明,概要设计规格 说明,详细设计规格说明以及源程序,都是软件测试的对象.
软件生存各个阶段间的确认和验证
理解正确性 表达正确性
用户要求 用户: 我要什么?
软件测试培训
测试的基本理论及方法
测试的基本理论及方法
对软件测试的误解 如何理解软件测试 软件测试的定义 软件测试的对象 测试的目的 软件测试的分类 测试类型的解释 黑盒测试的几种典型方法 测试的分类与比较
测试流程 测试规范 软件测试的文档和模版 软件系统的主要测试内
1
5 相符吗?
需求说明书
分析员: 我可以提供什么?
2 理解正确性 设计正确性 表达正确性
3
设计说明书 设计员: 我要软件做什么?
运行结果
计算机: 程序运行得到 的结果
运行正确性
4
输入正确性
源程序 程序员: 我要让计算机 怎么做?
理解正确性 编码正确性
软件配置:包括软件需求规格说明、软件设计规格说明、 源代码等; 测试配置:包括测试计划、测试用例、测试驱动程序等。 实际上,在整个软件工程过程中,测试配置只是软件配置的 一个子集。 测试工具:为提高软件测试效率,可使用测试工具支持测 试工具。例如:测试数据自动生成程序、测试结果分析程序 等。
回归测试
回归测试是指对某些已经被测试过的内容进行重新测试。每当软件 增加了新的功能,或者软件中的缺陷被修正,这些变更都有可能影 响软件原有的功能和结构。为了防止软件的变更产生无法预料的副 作用,不仅要对新内容进行测试,还要对某些老 内容进行回归测试。
Alpha 测试
一种先期的用户测试,此时系统刚刚开发完成。Alpha测试是由一个 用户或多个用户在开发环境下进行的测试,也可以是公司内部的用 户在模拟实际操纵环境下进行的受控测试,Alpha测试不能由该系统 的程序员或测试员完成。
名称
说明
静态测试
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语 法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、 软件设计说明书、源程序做结构分析、流程图分析、符号执行来找 错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例 如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、 未使用过的变量、空指针的引用和可疑的计算等。静态测试
软件测试
按是否运行 程序划分
按阶段划分
按是否查 看代码划 分 其他
静态测试 动态测试
单元测试 集成测试 系统测试 验收测试 回归测试 黑盒测试 灰盒测试 白盒测试 冒烟测试 随机测试
功能测试 性能测试
逻辑测试 界面测试 易用性测试 安装测试 兼容性测试
一般性测试 稳定性测试 负载测试 压力测试
测试类型的解释
软件需求
任何人(包括开 发人员、独立测 试人员和用户)
一般无需编写 额外的测试驱 动程序
设计文档
由开发人员兼任 测试人员的角色
需要编写额外 的测试驱动程 序
不同阶段测试作用的比较
单元测试、集成测试、系统测试、验收测试。是“从小到大”、 “由内至外”、“循序渐进”的测试过程,体现了“分而治之” 的思想。
软件测试的定义
软件测试是为了发现错误而执行程序的过程 软件测试是根据软件开发各阶段的规格说明和程序的内部
结构而精心设计一批测试用例(即输入数据及其预期的输 出结果),并利用这些测试用例去运行程序,以发现程序错误 的过程 软件测试就是在软件投进运行前,对软件需求分析、设计 规格说明和编码的终极复审,是软件质量保证的关键步骤。
单元测试的粒度最小,一般由开发小组采用白盒方式来测试, 主要测试单元是否符合“设计”。
集成测试界于单元测试和系统测试之间,起到“桥梁作用”, 一般由开发小组采用白盒加黑盒的方式来测试,既要验证“设 计”又要验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测 试,主要测试系统是否符合“需求规格说明书”。
测试软件是否易用,主观性比较强。一般要根据很多用户的测试 反馈信息,才能评价易用性。
安装与反安装 测试软件在“全部、部分、升级”等状况下的安装/反安装过程。 测试
恢复测试 测试该系统从故障中恢复过来的能力。
安全性测试 测试该系统防止非法侵入的能力。
兼容性测试 测试该系统与其它软件硬件兼容的能力。
比较测试 通过与同类产品比较,考察该系统的优点、缺点。
容及技术 WEB应用的测试 测试工作中需要注意的
问题 企业的测试策略 关于测试的几个问题
对软件测试的误解
如果发布出去的软件有质量问题,那是软件测试人员的错. 软件测试技术要求不高,至少比编程容易多了. 软件测试随便找一个能力差的人就能做. 有时间就多测试一些,来不及就少测试一些. 软件测试是测试人员的事,与开发人员无关. 设计-实现-测试,软件测试是开发后期的一个阶段
结果可用于进一步的差错,并为测试用例选取提供指导。
动态方法是指通过运行被测程序,检查运行结果与预期结果的差异, 动态测试 并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测
试实例、执行程序、分析程序的输出结果。
主要测试软件模块的源代码。一般由开发人员而非独立测试人员来 单元测试 执行,因为测试者需要懂得该单元的设计与程序实现,测试者可能
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中 逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条 件组合覆盖和路径覆盖。
是功能测试,也是数据驱动测试。 黑盒测试 基于软件需求所进行的测试。不关心软件内部结构、程序实现的算法。
灰盒测试
是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输 出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那 样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部 的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情 况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要 采取这样的一种灰盒的方法。
黑盒测试与白盒测试的比较
白盒测试:关心软件内部设计和程序实现,主要测试依据是设计 文档
黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是 需求文档
测试方式
特征
依据
测试人员
测试驱动程序
黑盒测试 白盒测试
只关心软件的外部 表现,不关心内部 设计与实现。
关注软件的内部设 计与实现,要跟踪 源代码的运行。
等价类在测试数据设计上,分为有效等价类和无效等价类。有效等 价类中的数据代表的是一组符合需求文档的正确的有意义数据。无 效等价类则正相反
等价划分方法的一种补充,由长期的测试工作经验得知,大量的错
边界条件测 误是发生在输进或输出的边界上。因此针对各种边界情况设计测试
试
Байду номын сангаас
用例,可以查出更多的错误。
测试的分类与比较
黑盒测试的几种典型方法
名称
说明
等价划分测 试
等价划分测试是根据等价类设计测试用例的一种技术。是黑盒测试 的典型方法之一,通过把被测试程序所有可能的输进数据域划分成 若干部分。从每一部分中选取少数有代表性的数据作为测试用例, 可有效减少测试次数,提高软件测试效率,缩短软件开发周期。
等价划分测试的目的就是为了在有限的测试资源的情况下,用少量 有代表性的数据得到比较好的测试效果。
需要编写额外的测试驱动程序。
集成测试 将一些“构件”集成一起时,测试它们能否正常运行。这里“构件” 可以是程序模块、客户机-服务器程序等等。
名称
说明
系统测试 测试软件系统是否符合所有需求,包括功能性需求与非功能性需求。 一般由独立测试人员执行,通常采用黑盒测试方式。
验收测试 由客户或最终用户执行,测试软件系统是否符合需求规格说明书。
可移植性测试 可移植性测试是指测试软件是否可以被成功移植到指定的硬件或 软件平台上。
用户界面是指软件中的可见外观及其底层与用户交互的部分(菜 单、对话框、窗口和其它控件)。 用户界面测试 用户界面测试是指测试用户界面的风格是否满足客户要求,文字 -UI测试 是否正确,页面是否美观,文字、图片组合是否完美,操纵是否 友好等等。UI 测试的目标是确保用户界面为用户提供相应的访 问或浏览功能。确保用户界面符合公司或行业的标准。包括用户 友好性、人性化、易操纵性测试。
压力测试 负载测试
压力测试是对系统不断施加压力的测试,通过确定一个系统的瓶颈或 者不能接收的性能点来获得系统能提供的最大服务级别的测试。是在 计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件 压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。 目的是:需要了解AUT(被测应用程序)一般能够承受的压力,同时能 够承受的用户访问量(容量),最多支持有多少用户同时访问某个功能。
如何理解软件测试
软件测试是一种有效的提高软件质量的手段,但即使在投入 上有所保证,测试也不能百分百发现所有质量隐患.况且软 件质量并不仅仅是测试出来的.
很多人认为软件测试就是运行一下软件,看看结果对不对. 但实际上,如何在有限的投入下,提高软件测试的效率和产 出是一件很见功底的事.好的测试人员不仅要掌握各种测试 技术,还要具备丰富的编程经验和对BUG的敏感.测试的复 杂之处,除了测试技术问题之外,还有测试管理问题.
负载测试(Load testing),通过测试系统在资源超负荷情况下的表现, 以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测 试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件 下的性能行为,以及持续正常运行的能力。
名称 性能测试
易用性测试
说明
测试软件在各种状况下的性能,如在正常或最大负载下的状况。 包括负载测试、压力测试。
测试不是可有可无,随心所欲的.规范化的软件开发需要对 软件测试早做计划,分配必要的时间,人力和财力等资源,并 将其作为项目管理的一个部分加以控制和协调.
开发和测试是软件项目相辅相成的两个过程,人员间的交流, 协作和配合是提高整体效率的重要因素.
软件产品开发完毕,再进行测试的观念是有悖于生命周期理 论的.软件产品质量问题越晚发现,修复的代价越大.
Beta测试
一种后期的用户测试,此时系统已经通过内部测试,大部分错误已 经改正,即将正式发行。β测试是软件的多个用户在一个或多个用户 的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测 试不能由程序员或测试员完成。
白盒测试
是结构测试,也是逻辑驱动测试。
基于软件内部设计和程序实现的测试方式。
测试的目的
关于测试的目的,一般的观点认为,测试主要是为了查找 软件中存在的错误。实际上,软件测试的目的不仅于此, 具体如下:
验证需求与设计的正确性; 发现软件存在的错误; 为软件开发商、用户确立关于软件质量的信心。
软件测试的分类
软件测试是一项复杂的系统工程,从不同的角度考虑可以 有不同的划分方法,对测试进行分类是为了更好的明确测 试的过程,了解测试究竟要完成哪些工作,尽量做到测试 的全面性。
修正BUG的代价
需求 设计
编程 内部测试 外部测试 发布
一些常识和经验之谈
测试能提高软件的质量,但是提高质量不能依赖测试。
测试只能证明缺陷存在,不能证明缺陷不存在。“彻底地测试” 难以成为现实,要考虑时间、费用等限制,不允许无休止地测试。 我们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会发作。
测试的主要困难是不知道如何进行有效地测试,也不知道什么时 候可以放心地结束测试。
每个开发人员应当测试自己的程序(份内之事),但是不能作为 该程序已经通过测试的依据(所以项目需要独立测试人员)。
80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块改 错后还会经常出错
测试应当循序渐进,不要企图一次性干完,注意“欲速则不达”。
验收测试与系统测试非常相似,主要区别是测试人员不同,验 收测试由用户执行。
开发与测试的 V 型关系
如果软件开发过程采用严格的瀑布模型,那么开发与测试有“V” 型的对应关系 。
需求开发
验收测试 系统测试
高层设计
集成测试