软件测试环境备份
测试工作的过程中,可能随时会出现意料之外的情况
备份位置
- 低重要度的备份文件可以放置在本地系统盘或其他分区。
- 中等重要度的备份文件应当放置在外部存储介质,并且将多份备份文件存放至不同的位置。
- 高重要度的备份文件必须多份、异地存放,避免因火灾、地震等不可抗力造成备份数据丢失。
软件测试的策略
在软件测试计划的指导下,根据被测项目的特定环境约束而制定的软件测试的原则、方式、思路等方法的集合。
- 如果未能做到测试软件所有可能的情况,则软件就是有风险的。
- 如果软件在交付后由用户发现了错误或缺陷的话,此时的负面代价是最大的。
- 将发生各种意外的可能性尽可能的降低至可控范围。
- 提前进行风险评估,针对风险的不同选择恰当的测试方法。
- 找到最佳测试量,选择资金花费与剩余错误缺陷数量相平衡的位置终止测试。
软件测试的方法
静态测试
不实际运行被测试的软件,仅静态检查程序代码、软件界面等
主要检查程序代码、软件界面是否与需求文档中符合、测试用户手册与需求说明文档是否完全符合实际需求
程序代码主要考察以下三点
- 代码风格
- 静态结构分析,检查算法是否有优化空间,程序逻辑是否错误
- 代码质量,使用人工或软件工具检查代码质量是否符合设计标准
静态结构分析,是将程序内部函数调用关系和控制流图进行抽象
静态测试阶段的主要活动
- 检查算法逻辑是否正确。
- 检查模块接口是否正确。
- 检查函数是否对输入参数进行了合法性检查。
- 检查程序能否对异常或错误进行适当的处理。
- 检查代码表达式与语句是否准确并且不存在二义性。
- 检查常量与全局变量的使用是否符合规范。
- 检查标识符的使用是否符合规范。
- 检查程序代码风格的一致性、规范性。
- 检查代码是否仍然可以继续优化 (算法效率是否足够高)。
- 检查代码注释是否完整且规范,是否可以准确的反映代码功能。
动态测试
实际运行被测试的软件,向其中输入测试数据,检查实际输出结果与预期结果是否相符
动态测试主要包括:
- 功能确认、接口测试
- 覆盖率分析
- 性能分析
- 内存分析
白盒测试
白盒测试 (亦称程序员测试、结构测试、逻辑驱动测试):指的是需要完全了解软件的结构与处理过程,按照软件的内部逻辑来测试软件
着重于检查软件的内部结构、逻辑、循环与路径中存在的错误与缺陷
黑盒测试
黑盒测试 (亦称用户测试、功能测试、数据驱动测试)
只检查软件功能是否满足规格说明文档
自动化测试
功能性自动化测试工具
- QuickTest Professional
- Rational Robot
- Compuware QARun
性能自动化测试工具
- LoadRunner
- MS WAS
- Rational Robot
软件测试用例
向被测试软件提供的有关测试目标、输入数据、操作方式、测试环境、预期结果以及测试脚本等必要信息的特定集合。
可以参照已有的软件测试用例模板来编写新的待测软件的测试用例。根据待测软件的不同对最终的测试用例进行相应的调整。
测试用例需要保证简洁性、正确性
软件测试用例的基本格式
- 软件名称
- 软件版本
- 功能模块名称
- 测试标题
- 测试目的
- 测试数据
- 测试输入
- 操作步骤
- 预期结果
黑盒测试常用方法
- 等价类划分法,每个细分区域中选取一个有代表性的测试数据
- 边界值分析法
- 因果图法
- 决策表法
- 错误推测法
- 正交试验法
- 场景法
白盒测试常用方法
白盒测试技术中的
边界值测试一般用于检查程序代码中的数组是否越界、变量是否溢出等错误。
逻辑驱动覆盖主要分为以下几种(按强弱顺序排行):
- 条件组合覆盖(最强)
- 判定-条件覆盖
- 条件覆盖
- 判定覆盖
- 语句覆盖(最弱)
语句覆盖
制定足够多的软件测试用例,使得软件中的每一个代码语句至少都能被执行一次的软件测试方法。这是一种效果较差的逻辑驱动覆盖测试方法。
判定覆盖
制定足够多的软件测试用例,使得软件中的每一个分支至少都能被执行一次
条件覆盖
使得软件中的每一个判定条件都获得各种可能的取值
判定-条件覆盖
判定中的每一个条件都获得各种可能的取值,同时使得软件中的每一个分支至少都能被执行一次的软件测试方法。
条件组合覆盖
使得软件中的所有条件的各种组合都能被至少执行一次
软件缺陷
一般情况下,满足以下情况之一,即可称为软件缺陷:
- 软件未实现产品说明文档中要求的功能。
- 软件出现了产品说明文档中明确指出了的 “不应当出现” 的错误。
- 软件实现了产品说明文档中未要求实现的功能。
- 软件未实现产品说明文档中未要求实现、但是实际上应当实现的功能。
- 软件难以使用、不易使用、运行缓慢或最终用户不满意。