- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从测试原理上分为:白盒测试、黑盒测试。 白盒测试:是通过程序的源代码进行测试而不使用用 户界面。这种类型的测试需要从代码句法发现内部代 码在算法,溢出,路径,条件等等中的缺点或者错误, 进而加以修正。 黑盒测试:是通过使用整个软件或某种软件功能来严 格地测试, 格地测试, 而并没有通过检查程序的源代码或者很清 楚地了解该软件的源代码程序具体是怎样设计的。测 试人员通过输入他们的数据然后看输出的结果从而了 解软件怎样工作。在测试时,把程序看作一个不能打 开的黑盆子,在完全不考虑程序内部结构和内部特性 的情况下,测试者在程序接口进行测试,它只检查程 序功能是否按照需求规格说明书的规定正常使用,程 序是否能适当地接收和正确的输出
软件生存各个阶段间的确认和验证
用户要求机: 程序运行得到 的结果
1 4
运行正确性 输入正确性
需求说明书 分析员: 我可以提供什么? 2 理解正确性 设计正确性 表达正确性 3 理解正确性 编码正确性 源程序 程序员: 我要让计算机 怎么做?
软件测试的定义
软件测试是为了发现错误而执行程序的过 程 软件测试是根据软件开发各阶段的规格说 明和程序的内部结构而精心设计一批测试 用例(即输入数据及其预期的输出结果),并利 用例(即输入数据及其预期的输出结果),并利 用这些测试用例去运行程序, 用这些测试用例去运行程序,以发现程序错 误的过程. 误的过程.
从整体的角度可以分为单元测试、集成测试、系统测试、 确认测试。 单元测试:是针对软件设计的最小单位— 单元测试:是针对软件设计的最小单位—程序模块,进行 正确性检验的测试工作。一般包括逻辑检查、结构检查、 接口检查、出错处理、代码注释、输入校验、边界值检查。 单元测试的依据是系统的详细设计;一般由项目组开发人 员自己完成。 集成测试:在单元测试的基础上,将所有模块按照设计要 求组装进行测试。一般包括逻辑关系检查、数据关系检查、 业务关系检查、模块间接口检查、外部接口检查。 系统测试:系统测试是在所有单元、集成测试后,对系统 的功能及性能的总体测试。 确认测试:模拟用户运行的业务环境,运用黑盒测试方法, 验证软件系统是否满足用户需求或软件需求说明书中指明 的软件特性(功能、非功能)上的。
修正BUG的代价
需求
设计
编程
内部测试 外部测试
发布
一些常识和经验之谈
测试能提高软件的质量,但是提高质量不能依赖测试。 测试只能证明缺陷存在,不能证明缺陷不存在。“ 测试只能证明缺陷存在,不能证明缺陷不存在。“彻 底地测试” 底地测试”难以成为现实,要考虑时间、费用等限制, 不允许无休止地测试。我们应当祈祷:软件的缺陷在 产品被淘汰之前一直没有机会发作。 测试的主要困难是不知道如何进行有效地测试,也不 知道什么时候可以放心地结束测试。 每个开发人员应当测试自己的程序(份内之事),但 是不能作为该程序已经通过测试的依据(所以项目需 要独立测试人员)。 80-20原则:80%的缺陷聚集在20%的模块中,经常出 80-20原则:80%的缺陷聚集在20%的模块中,经常出 错的模块改错后还会经常出错 测试应当循序渐进,不要企图一次性干完,注意“ 测试应当循序渐进,不要企图一次性干完,注意“欲 速则不达” 速则不达”。
软件测试的对象
软件测试不等于程序测试. 软件测试不等于程序测试.软件测试贯穿于 软件定义和开发的整个期间.需求分析, 软件定义和开发的整个期间.需求分析,概要 设计,详细设计, 设计,详细设计,以及程序编码等各个阶段所 得到的文档,包括需求规格说明, 得到的文档,包括需求规格说明,概要设计规 格说明,详细设计规格说明以及源程序, 格说明,详细设计规格说明以及源程序,都是 软件测试的对象. 软件测试的对象.
正确理解测试的目的十分重要。如果认为测试的目的是为了说明程序中 没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地选用一些 不易暴露错误的测试示例。这样的测试是不真实的。 为什么需要测试?因为软件中有Bug。 为什么需要测试?因为软件中有Bug。 为什么软件中有Bug?以下是一些原因: 为什么软件中有Bug?以下是一些原因: (1)开发人员不太了解需求,不清楚应该“做什么”和“不做什么”, 常常做不合需求的事情,因此产生了Bug。 常常做不合需求的事情,因此产生了Bug。 (2)软件系统越来越复杂,开发人员不太可能精通所有的技术,如果 不能正确地使用技术,将产生Bug。 不能正确地使用技术,将产生Bug。 (3)技术文档普遍比较糟糕,文档本身就有Bug,导致使用者产生更多 )技术文档普遍比较糟糕,文档本身就有Bug,导致使用者产生更多 的Bug。 Bug。 (4)软件需求、设计报告、程序经常发生变更,每次变更都可能产生 新的Bug。 新的Bug。 (5)任何人在编程时都可能犯错误,导致程序中有Bug。 )任何人在编程时都可能犯错误,导致程序中有Bug。 (6)人们常处于进度的压力之下,急忙之下容易产生Bug,尤其是在期 )人们常处于进度的压力之下,急忙之下容易产生Bug,尤其是在期 限临近之际。 (7)人们过于自信,喜欢说“没问题”,不真实的“没问题”将产生 真正的问题。
测试的分类
从测试方法的角度可以分为手工测试和自动化 测试。 手工测试:不使用任何测试工具,根据事先设 计好的测试用例来运行系统,测试各功能模块 自动化测试:利用测试工具,通过编写测试脚 本和输入测试数据,自动运行测试程序。目前 最常用的自动化测试工具是基于GUI的自动化 最常用的自动化测试工具是基于GUI的自动化 测试工具,基本原理都是录制、回放技术。
设计说明书 设计员: 我要软件做什么?
测试的目的
测试的目的是寻找错误, 测试的目的是寻找错误,并且是尽最大可能 找出最多的错误.在选取用例时, 找出最多的错误.在选取用例时,考虑那些易 于发现程序错误的数据; 一个好的测试用例在于发现至今未发现的 错误; 错误; 一个成功的测试是发现了至今未发现的错 误的测试. 误的测试.
黑盒测试方法主要有等价类划分、边界值分析、错误推测法等。 等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集), 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集), 然后从每一个子集中选取少数具有代表性的数据作为测试用例. 然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法 是一种重要的,常用的黑盒测试用例设计方法. 是一种重要的,常用的黑盒测试用例设计方法. 设计测试用例时,要同时考虑这两种等价类.因为, 设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合 理的数据,也要能经受意外的考验. 理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高 的可靠性. 的可靠性. 边界值分析: 长期的测试工作经验告诉我们, 长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的 边界上,而不是发生在输入输出范围的内部. 边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设 计测试用例, 计测试用例,可以查出更多的错误。 错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性 的设计测试用例的方法.错误推测方法的基本思想: 的设计测试用例的方法.错误推测方法的基本思想: 列举出程序中所有 可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例 如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中 在单元测试时曾列出的许多在模块中常见的错误. 曾经发现的错误等, 这些就是经验的总结. 还有, 曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据 为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生 的情况. 输入表格为空格或输入表格只有一行. 错误的情况. 错误的情况. 可选择这些情况下的例子作为测试用例。
软件测试培训内容
什么是软件测试 软件测试对象 测试的目的 测试的分类 功能测试方法与内容 测试策略 测试流程及相关文档 测试人员的基本素质 测试驱动开发介绍
什么是软件测试
软件测试是一种有效的提高软件质量的手段, 软件测试是一种有效的提高软件质量的手段,但即使在投 入上有所保证,测试也不能百分为百发现所有质量隐患. 入上有所保证,测试也不能百分为百发现所有质量隐患.况 且软件质量并不仅仅是测试出来的. 且软件质量并不仅仅是测试出来的. 很多人认为软件测试就是运行一下软件,看看结果对不对. 很多人认为软件测试就是运行一下软件,看看结果对不对. 但实际上,如何在有限的投入下, 但实际上,如何在有限的投入下,提高软件测试的效率和产 出是一件很见功底的事. 出是一件很见功底的事.好的测试人员不仅要掌握各种测 试技术,还要具备丰富的编程经验和对BUG的敏感. 试技术,还要具备丰富的编程经验和对BUG的敏感.测试的 复杂之处,除了测试技术问题之外,还有测试管理问题. 复杂之处,除了测试技术问题之外,还有测试管理问题. 测试不是可有可无,随心所欲的. 测试不是可有可无,随心所欲的.规范化的软件开发需要对 软件测试早做计划,分配必要的时间,人力和财力等资源, 软件测试早做计划,分配必要的时间,人力和财力等资源,并 将其作为项目管理的一个部分加以控制和协调. 将其作为项目管理的一个部分加以控制和协调. 开发和测试是软件项目相辅相成的两个过程, 开发和测试是软件项目相辅相成的两个过程,人员间的交 流,协作和配合是提高整体效率的重要因素. 协作和配合是提高整体效率的重要因素.
从软件特性上分为功能测试和性能测试。 功能测试:是指为了确保软件系统功能实现的正 确性,完整性和其他特性而进行的测试。 性能测试:是指为了评估软件系统的性能状况, 和预测软件系统性能趋势而进行的测试和分析。
功能测试方法与内容
1、数据输入测试:向系统输入数据或输入数据库操作命令时,一般 是测试系统对数据库中数据操作的过程。 数据类型测试:由于不同的数据库系统对数据类型要求的不同,在定 义数据库表时,也规定了数据字段的数据类型。测试步骤和方法:在 系统的数据维护功能界面上,录入或修改数据时,特意输入非系统设 计的数据类型,检查系统是否可以接受,若不能接受则检查是否满足 了系统在这方面的设计要求,如即刻清除非法内容、输入焦点不能到 下一输入位置、出现系统自定义的提示信息、不允许出现开发工具的 报错信息等。若系统可以接受并保存,则要看数据库表的字段类型设 计是否与用户或习惯上不一致,并且要注意其他模块在调取该数据时, 是否有特定要求。 边界值测试:根据数据取值范围的要求,输入符合取值范围的数据、 取值范围的上、下限和超过取值范围的数据。注意,除要测试数据库 系统本身数据类型取值范围外,还要根据软件系统设计中的一些特定 要求,设计测试用例来测试。