软件测试读书笔记(Ron.Parton著)

一、软件测试的背景

什么是软件缺陷

  • 软件未实现产品说明书要求的功能
  • 软件出现了产品说明书指明不应该出现的功能
  • 软件实现了产品说明书中未提到的功能
  • 软件未实现产品说明虽未明确提及但应该实现的目标。
  • 软件难以理解、不易使用、运行缓慢或者测试认为用户认为不好

软件缺陷产生的原因

主要原因是产品说明书,其次是因为设计过程,还有代码错误等其他原因
软件缺陷的修复费用随时间指数级地增长

软件测试员的工作是什么

软件测试员的目的是尽可能早地发现软件缺陷,并确保其得以修复。

二、软件开发的过程

软件产品的投入

  • 客户需求
  • 产品说明书
  • 进度表
  • 软件设计文档(结构文档、数据流图、状态转换图、流程图、代码注释)
  • 测试文档(测试计划、测试用例、缺陷报告、测试工具和自动测试、度量,统计和总结)
  • 代码

软件产品包含哪些部分

除了软件本身还包括帮助文件、用户手册、样本和实例、产品支持信息、图标和标志、错误提示信息、广告和宣传材料、安装、说明文件。

软件项目成员

项目经理(编写产品说明书、管理进度、进行重大决策)
架构师(整个系统的体系结构或软件设计工作)
程序员(设计编写软件并修复软件缺陷)
测试(找出并报告软件产品的问题)
技术作者(编写软件产品附带的文件和联机文档)
配置管理员(整合所有资料)

软件开发生命周期模式

  • 大爆炸模式
  • 边写边改模式
  • 瀑布模式
  • 螺旋模式

三、软件测试的实质

软件测试的术语和定义

返回结果的精确和准确,精确指返回结果的精密程度,准确指返回结果的正确程度;
确认和验证,确认指保证软件符合产品说明书的过程,验证指软件满足用户要求的过程;
质量和可靠性,可靠性是质量的一个方面;
测试和质量保证;

四、检查产品说明书

黑盒测试和白盒测试

黑盒测试又称功能性测试或行为测试,不关注软件内部结构。
白盒测试又称为透明盒测试,可以访问程序代码,通过检查代码协助测试

静态测试和动态测试

静态测试指测试不运行的部分,只是检查和审核,动态测试指通常意义上的使用和运行软件进行测试。

产品说明书的高层次审查

假设自己是客户,审查说明书是否符合自己预期;研究现有的规范和标准,审查是否符合标准;研究类似软件,积累经验

产品说明书的低层次测试技术

  • 产品说明书属性检查清单
    产品说明书应具有8个属性:完整;准确;精确、清晰;一致;贴切;合理;代码无关;可测试性;
  • 产品说明书用语检查清单
    产品说明书中出现绝对或肯定的描述;出现因此、显然、明显等带说服语气的推断词;出现有时、常常、几乎等频率词;出现等等、例如等无法测试的词;出现良好、迅速等无法量化的词;出现处理、进行等容易隐藏需要说明的功能的词;出现如果---那么的结构,但没有说明没有如果的情况;以上情况需要额外谨慎检查。

五、带上眼罩测试软件

软件测试基本方法:通过性测试和失效性测试。
选择测试用例方法:

  • 等价类划分:把软件中具有相似输入、相似输出、相似操作的划分在一组,进而缩小测试用例集。
  • 等价类划分原则:边界条件、次边界条件、空值和无效数据。
  • 对于看不到的边界,如2的幂和ascii表等,检查其次边界条件。例如软件接受用户输入1-1000范围内的数字,除其边界1和1000外,还需注意临近2的乘方次边界:14,15,16以及254,255和256。如果测试文本输入或者文本转换时,假设测试的文本框只接受a-z和A-Z的输入,其非法输入还包含ASCII表中a-z邻近的'和{以及A-Z邻近的@和[,另注:0-9的ascii码表的邻近符号为/和:。
  • 默认、空白、空值、零值和无应作为单独的等价类划分。
  • 非法、错误、不正确和垃圾数据是失效性测试,没有特定的规则。

除了测试软件的文字、数字、输入输出外,还需要进行软件的状态测试,来验证程序的逻辑流程。
软件状态测试步骤:(1)建立状态转换图,软件状态图应列出软件可能进入的每一种独立状态,软件从一中状态转入另一种状态所需的输入和条件,以及软件进入或退出某种状态时的设置条件及输出结果;(2)减少要测试的状态及转换的数量,包括以下实现方法:每种状态至少访问一次;测试看起来最常见和最普遍的状态转换;测试状态之间最不常用的分支;测试所有错误状态及返回值;测试随机状态转换。(3)定义测试用例进行具体测试,包括检查所有的状态变量(与进入和退出相关的静态条件、信息、值、功能等)。

失败状态测试

常见的失败状态测试包括竞争条件、重复、压迫和重负测试。
竞争条件指几个事件恰巧挤在一起,软件未预料到运行过程会被中断导致混乱;包括以下情形:两个不同的程序同时保存和打开同一个文档;共享同一台打印机、通信端口或其他外围设备;当软件出于读取或改变状态时按键或单击鼠标;同时关闭或启动软件的多个实例;同时使用不同的程序访问一个共同的数据库。
重复测试指不断执行同样的操作,以检查是否存在内存泄露;压迫测试指软件在不够理想的条件下运行,内存小、磁盘空间小、cpu速度慢、调制调解器速率低等,观察软件对外部资源的要求和依赖程度。重负测试使软件尽可能处理大的数据文件,发掘软件能力。

六、检查代码(静态白盒测试)

通用代码审查清单包括:数据引用错误;数据声明错误;计算错误;比较错误;控制流程错误;子程序参数错误;输入/输出错误;其他检查。

七、带上x光眼镜测试软件(动态白盒测试)

动态白盒测试又称为结构化测试,包括以下部分:(1)直接测试底层函数、过程、子函数和库;(2)以完整程序的方式从顶层测试软件;(3)从软件获得读取变量和状态信息的访问权,以确定测试与预期结果是否相同,同时强制软件以正常测试难以实现的方式运行;(4)估算执行测试时命中的代码量和具体代码,调整测试,去掉多余测试用例,补充遗漏用例。

分段测试

  • 单元测试和集成测试
    在底层进行的测试称为单元测试或模块测试,模块组合在一起进行测试称为集成测试。主要有两条途径:自底向上和自顶向下,自底向上需要编写称为测试驱动的模块调用正在测试的模块,自顶向下需要编写桩充当接口模块。
  • 白盒测试的数据覆盖及代码覆盖。代码覆盖最直接的形式称为语句覆盖,确保每一条语句至少执行一次;但即使所有语句被执行了,仍不能说遍历了软件所有路径。试图覆盖软件中所有路径称为路径覆盖,最简单的形式称为分支覆盖测试。

八、配置测试(硬件)

九、兼容性测试

兼容性测试指检查软件之间是否能够正确的交互和共享信息。

向后和向前兼容

向后兼容指可以使用软件的以前版本;向前兼容指可以使用软件的未来版本。

你可能感兴趣的:(软件测试读书笔记(Ron.Parton著))