软件质量保证与测试 第六章 系统测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
压力测试总是迫使系统在异常的资源配置下运行。 例如: ①当中断的正常频率为每秒1~2次时,运行每秒产生 10个中断的测试用例; ②定量地增长数据输入量,检查对数据处理的反应 能力; ③运行需要最大存储空间(或其他资源)的测试用 例; ④运行可能导致虚拟机崩溃或对磁盘进行大数据量 存取操作的测试用例。
功能测试的主要内容
1. 2. 3. 4. 5. 程序安装、启动正常,有相应的提示框、错误提示等 每项功能符合实际要求 系统的界面清晰、美观 菜单、按钮操作正常、灵活,能处理一些异常操作 能接受正确的数据输入,对异常数据的输入有提示、容 错处理等 6. 数据的输出结果准确,格式清晰,可以保存和读取 7. 功能逻辑清楚,符合使用者习惯 8. 系统的各种状态按照业务流程而变化,并保持稳定 9. 支持各种应用的环境 10.能配合多种硬件周边设备 11.软件升级后,能继续支持旧版本的数据 12.与外部应用系统的接口有效
系统测试的类型、方法
① ② ③ ④ ⑤ 功能测试 回归测试 性能测试 安全性测试 容错性测试
⑥ ⑦ ⑧ ⑨ ⑩
兼容性测试 可靠性测试 恢复性测试 疲劳测试 用户界面测试
6.1 系统级功能测试
功能测试属于黑盒测试技术范畴,可以在单元测 试、集成测试、系统测试中进行。 • 单元级功能测试的目的 • 系统级功能测试的目的 (P137)
本章所述均为系统级功能测试。
功能测试的步骤
① 为所有的功能需求(其中包括隐含的功能需求) 加以标识; ② 为所有可能出现的功能异常进行分类分析并加以 标识; ③ 对前面表示的功能需求确定优先级。 ④ 对每个功能进行测试分析,分析其是否可测、采 用何种测试方法、测试的入口条件、可能的输入、 预期输出等等。 ⑤ 是否需要开发脚本或借助工具录制脚本。 ⑥ 确定要对哪些测试使用自动化测试,对哪些测试 使用手工测试。
6.5 容错性测试
容错测试是一种对抗性的测试过程。要测试软件 出现故障时,如何进行故障的转移与恢复有用的 数据。 故障转移(Failover)是确保测试对象在出现故障 时,能成功地将运行的系统或系统某一关键部分 转移到其它设备上继续运行,即备用系统就将不 失时机地“顶替”发生故障的系统,以避免丢失 任何数据或事务,不影响用户的使用。
6.3 性能测试
8、性能测试的方法和技巧 ① 四种负载类型 ② “flat”测试 ③ ramp-up测试 ④ 峰谷测试 ⑤ 随机加载
性能测试的方法和技巧
(1)“Flat”测试: 一次加载某个数量的用户,然 后在预定的时间段内持续运行。
性能测试的方法和技巧
(2)Ramp-up测试: 有规律地逐渐增加用户,每几秒增加一些 新用户,交错上升。ramp-up测试不能产生精确和可重现的 平均值,这是因为由于用户的增加是每次一部分,系统的 负载在不断地变化。其优点是,可以看出随着系统负载的 改变,测量值是如何改变的据此选择要运行的flat测试 的范围。
不影响软件原有功能的正确性。
回归测试
一旦程序某些区域 被修改了,就可能影 响其它区域,导致受 影响的区域出现新的 缺陷源自文库回归缺陷)。 如果这时没有回归测 试,产品就带着这样 的回归缺陷被发布出 去了,造成严重后果。 回归测试就是为了发 现回归缺陷而进行的 测试。
直接影 响区域
修改
被测系统
修改
新增加的 代码
功能性测试 vs.安全性测试
功能性测试:
软件做它应该做的事,验证正确的输出。 不正确的输出 /行为 / 缺陷(Bug) 软件不做它不应该做的事, 应用输入验证,
安全性测试:
没有不安全的事情发生。
在测试软件系统中对危险防止和危险处理设
施进行的测试,以验证其是否有效
安全性缺陷(漏洞,脆弱性,Vulnerability)
6.5 容错性测试
容错性测试(Fault-tolrent test)是检查软件在 异常条件下自身是否具有防护性的措施或者某种灾 难性恢复的手段。 包括两个方面: 输入异常数据或进行异常操作,以检验系统的保 护性。如果系统的容错性好的话,系统只给出提 示或内部消化掉,而不会导致系统出错甚至崩溃。 灾难恢复性测试。通过各种手段,让软件强制性 地发生故障,然后验证系统已保存的用户数据是 否丢失、系统和数据是否能尽快恢复。
压力测试中加压的方法: ① 增加并发用户数 ② 增加每秒请求处理的事务数 ③ 增加中断次数
6.4 安全性测试
安全性测试检查系统对非法侵入的防范能力。 安全测试期间,测试人员假扮非法入侵者,采用 各种办法试图突破防线。 任务: ① 想方设法截取或破译口令; ② 专门开发软件来破坏系统的保护机制; ③ 故意导致系统失败,企图趁恢复之机非法进入; ④ 试图通过浏览非保密数据,推导所需信息等等。
软件性能的认识-开发人员角度
架构设计是否合理 数据库设计是否存在问题 代码是否需要优化,如SQL语句 如何通过调整设计和代码实现,或如何通 过调整系统设置提高软件的性能表现
19
6.3 性能测试
3、性能测试常用术语的理解(P153) 在线用户 虚拟用户 并发用户 用户并发数量 思考时间 负载模式
软件性能的认识-用户角度
软件对用户操作的响应时间,如用户提交一个 查询操作、打开一个web页面的链接等、业务可用 度,或者系统的服务水平如何。
业务排队等待
所有设备运转正常?
极慢的响应时间 发怒的用户
业务是否可用??
软件性能的认识-系统管理员角度
并发压力 服务器端资源使用情况 是否存在性能瓶颈 系统可扩展性如何
6.3 性能测试
1、软件性能与性能测试 软件性能覆盖面广泛,对一个系统而言,包括 执行效率、资源占用、稳定性、安全性、兼容 性、可扩展性、可靠性等等。 性能测试用来保证系统运行后的性能满足用户 需求。性能测试在软件质量保证中起重要作用。 2、不同角度对软件的性能认识 用户角度 系统管理员角度 开发人员角度
6.3 性能测试
4、软件性能的生命周期
全新系统 开发
需求 分析
概要 设计
详细 设计
编码 实现
上线
运营维护
性能基点 投资预测
性能实现 性能调整
性能 验收
性能 保持
6.3 性能测试
5、性能测试的目标 ① 评价系统当前性能 • 系统刚上线,处于试运行,用户需要确定当前系统是否满 足验收要求 • 系统已经运行一段时间,如何保证能够一直具有良好的运 行性能 ② 寻找瓶颈,优化性能 • 用户提出业务操作响应时间长,如何定位问题,调整性能 • 系统运行一段时间后,速度变慢,如何寻找瓶颈,进而优 化性能 ③ 预测系统未来性能,可扩展性 • 系统用户数增加时,当前系统是否能满足需求,如果不能, 需要进行哪些调整?增加应用服务器?提高数据库服务器 的配置?或是需要对代码进行调整?
6.3 性能测试
6、性能测试的步骤 ① 确定性能测试需求 ② 根据测试需求,选择测试工具和开发相应的测试 脚本 ③ 建立性能测试负载模型,就是确定并发虚拟用户 的数量、每次请求的数据量、思考时间、加载方 式和持续加载的时间等 ④ 执行性能测试 ⑤ 结果分析,并提交性能测试报告
6.3 性能测试
7、性能测试的要点 ① 测试环境应尽量与产品运行环境保持一致,应单 独运行尽量避免与其他软件同时使用。 ② 性能测试一般使用测试工具和测试人员编制测试 脚本来完成。 ③ 性能测试的重点在于前期数据的设计与后期数据 的分析。 ④ 性能测试的用例主要涉及到整个系统架构的问题, 所以测试用例一旦生成,改动一般不大,所以做 性能测试的重复使用率一般比较高。
如何进行系统测试
系统测试过程要经历以下几个阶段: 1、计划阶段:制定测试计划 2、设计阶段:对系统进行详细的测试分析,然后设 计一些典型的,满足测试需求的测试用例;同时给 出系统测试的大致过程。 3、实施阶段:使用当前的软件版本进行测试脚本的 录制工作,确定软件的基线。 4、执行阶段:根据系统测试计划和事先设计好的系 统测试用例,以及一定测试规程进行测试脚本的回 放。 5、评估阶段:进行评估,以确定系统测试是否通过。
性能测试的方法和技巧
(3)峰谷测试:某个时间用户数量很大,突然降 到很低,然后,过一段时间,又突然加到很高,反 复几次。借助这种方式的测试,容易发现资源释放、 内存泄漏等问题。
性能测试的方法和技巧
(4)随机加载方式 由随机算法自动生成某个数量范围内变化的、动态 的负载。
6.3 性能测试
9、压力测试 也称负载测试、强度测试。 压力测试通过模拟实际应用的软硬件环境及 用户使用过程的系统负荷,逐渐加载或一次性 加载,长时间或超大负荷地运行软件,以测试 系统的性能、可靠性和稳定性,并试图找出系 统性能的瓶颈和异常的地方。
系统测试的目的在于通过与系统的需求定义比 较,检查软件是否存在与系统定义不符合或与之 矛盾的地方,以验证软件系统的功能和性能等满 足其规约所指定的要求。 最终目的是为了确保软件产品能够被用户或操 作者接受。测试的主要目标不再是找出缺陷,而 是证明其性能。 系统测试属于黑盒测试范畴,不再对软件的源 代码进行分析和测试。
两种级别的安全性: ① 系统级别的安全性:核实只有具备系统和应 用程序访问权限的操作者才能访问系统和应 用程序。 ② 应用程序级别的安全性:核实操作者只能访 问其所属用户类型已被授权访问的那些功能 或数据。例如:用户权限、数据输入验证、 敏感数据加密、数据存储安全性、用户口令、 验证系统的日志文件是否得到保护、„„ 两者之间的关系: (P168)
安全性测试的范围
安全功能测试 (Security Functional Testing): 数据机密性、完整性、可用性、不可否认性、身 份认证、授权、访问控制、审计跟踪、委托、隐 私保护、安全管理等
安全漏洞测试 (Security Vulnerability
Testing):从攻击者的角度, 以发现软件的安全 漏洞为目的。安全漏洞是指系统在设计、实现、 操作、管理上存在的可被利用的缺陷或弱点
系统测试的组织和分工
测试组组长:组织测试; 测试分析员:负责设计和实现测试脚本和测试用例; 测试者:负责执行测试脚本中记录的测试用例。 同时可以邀请客户代表参与系统测试,可以与 客户建立一个良好的平台,并且得到反馈信息。 过程:搭建好系统测试的软、硬件平台制定软件 测试计划(与开发人员多多沟通)系统测试提 交系统测试的大量输出的拷贝文档(包括测试结果 记录表格、系统测试日志和全面的系统测试总结 报告)。
软件测试方法和技术
第6章 系统测试
第6章 系统测试
6.0 什么是系统测试
6.6 兼容性测试
6.7 可靠性测试
6.1 系统级功能测试
6.2 回归测试
6.8 恢复性测试
6.9 疲劳测试
6.3 性能测试
6.4 安全性测试 6.5 容错性测试
6.10 用户界面测试
6.0 什么是系统测试
系统测试就是将已经集成好的软件系统,作为 整个计算机系统的一个元素,与计算机硬件、外 设、某些支持软件、数据和人员等其它系统元素 结合在一起,在实际运行(使用)环境下,对计 算机系统进行一系列的组装测试和确认测试。 系统测试的根本任务就是要证明被测系统的功 能和结构的稳定性;还要有一些非功能测试,如 性能测试、压力测试、可靠性测试等等。
功能测试的方法
• • • • • 等价类划分法 边界值分析法 错误推测法 因果图法 组合分析法
6.2 回归测试
回归测试: 回归测试是指修改了旧代码后,重新进行测试以
确认修改没有引入新的错误或导致其它代码产生错
误。 回归测试的目的 : 所做的修改达到了预定的目的,如错误得到了改 正,新功能得到了实现,能够适应新的运行环境等;
修改
间接影 响区域
回归测试策略及方法
① 再测试全部用例 ② 基于风险选择测试
③ 基于操作剖面选择测试
④ 再测试修改的部分
P150
回归测试的组织和实施
1. 通过代码相依分析,识别软件中被修改的部分; 2. 从原有测试用例库中,排除不适用的测试用例, 建立新的测试用例基线库T0; 3. 基于风险和操作剖面选择相结合,从新的测试 用例基线库中选择测试用例构造有效的套件, 测试被修改的软件 4. 若回归测试套件达不到所需的覆盖要求,必须 补充新的测试用例,则生成新的测试用例集T1; 5. 用T1测试修改后的软件。