测试基础
什么是软件测试
使用人工和自动手段来运行或测试某个系统的过程。
为什么做软件测试
软件测试在项目的不同阶段有着不同的作用。
- 为了使用户在使用产品时有更好的体验感。
- 为了使系统运行更加稳定、安全。
- 为了在系统正式封板上线之前可以找到更多的缺陷,减少损失。(编码阶段)缺陷预防。
测试基本原则
- 测试是上下文相关的
- 穷尽测试是不可能的
- 测试尽早介入
- 杀虫剂悖论
- 缺陷群集性
- 测试证明存在缺陷
- 无错谬误
冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试执行者是版本编译人员。
软件测试类型
功能测试
验证功能实现是否符合产品需求规格。
性能测试
测试系统资源使用情况与预定义目标的差距。
性能测试收集的信息:
- CPU使用情况
- IO使用情况
- 内存使用情况
- 信道使用情况
- 每个模块执行时间百分比
- 每个模块等待IO完工的百分比
- 指令随时间的跟踪路径
- 每一组指令页换入和换出的次数
- 系统反应时间
- 系统吞吐量,即每个时间单元的处理数量
- 所有主要指令的单元执行时间
负载测试
通过不断对被测对象施加负荷,观察被测对象在不同负荷下的性能表现。
测试的是系统整体。
压力测试
调查系统在资源超负荷情况下的表现。
主要验证系统的可靠性,找到系统薄弱环节。测试的是系统中的各个模块。
容量测试
使系统承受超额的数据容量来测试它是否能够正确处理,能发现系统效率方面的问题。
安全性测试
一些功能性的安全性问题:
- 没有口令是否可以登录到系统中?
- 各级用户权限划分是否合理?
- 错误和文件访问是否适当的被记录?
- 系统配置数据能否正确保存?系统故障时能否恢复?
安全性测试内容:
- 系统的登录
- 用户管理
- 防火墙
- 系统数据
- WEB安全性,如WEB的加密、解密、数字签名等
- 数据库的安全性
- 内部通信协议
- 系统防病毒测试
GUI测试
针对系统GUI界面进行测试。
测试主要包括两方面:
- 界面实现与界面设计吻合情况
- 界面交互处理的正确性
可用性测试
一些测试人员应当关注的可用性问题:
- 过于复杂的功能或者指令。
- 困难的安装过程。
- 错误信息不准确或者过于简单。
- 用户被迫去记住太多信息。
- 语法、格式和定义不一致。
安装卸载测试
安装测试的目的是找出软件在安装过程中出现的错误。不仅是找软件软件本身的错误,还要找安装文档的错误。
异常测试
系统异常测试又叫系统容错和可恢复性测试。通过人工干预手段使系统产生软、硬件异常,检查系统异常前后的功能、运行状态。
文档测试
文档测试的目标是验证用户文档是正确的并且保证操作手册的过程能够正确工作。
网络测试(接口测试)
在网络状态下和其他设备对接,保证设备对接正常。
网络测试考察系统的处理能力、系统兼容性、系统稳定可靠性以及用户使用等方面。
稳定性测试
目的是评价系统在一定负荷情况下、长时间的运行情况。包括系统在一定负荷下,再增加新的业务,原有的业务是否受影响,新的业务是否能正常工作,系统资源有无泄漏,数据有无不一致的情况,系统性能是否会降下来。
兼容性测试
软件测试方法
测试方法分类:
- 黑盒测试、白盒测试和灰盒测试
- 静态测试和动态测试
- 人工测试和自动化测试
白盒测试
分析程序内部构造,并根据内部构造设计测试用例来对内部控制流程进行测试。可完全不顾程序整体功能实现。
白盒测试是基于程序结构的逻辑驱动测试。
为什么要进行白盒测试?
- 可以发现内部逻辑控制问题
- 在编译前就可以找到问题,发现后解决问题成本低
白盒测试常用技术:
- 静态分析:控制流分析、数据流分析、信息流分析
- 动态分析:逻辑覆盖测试(分支测试、路径测试)、程序插装等
逻辑覆盖方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
黑盒测试
把被测对象看做一个黑盒子,只考虑其整体特性,不考虑具体实现。
常见的黑盒测试类型:
- 功能性测试
- 容量测试
- 负载测试
- 恢复性测试
灰盒测试
如果既利用被测对象的整体特征信息,又利用被测对象内部具体实现信息,采用的就是灰盒测试方法。
典型的灰盒测试有:集成测试和系统测试是借助的log信息。
静态分析技术
功能
检查软件的表示和描述是否一致,没有冲突或者没有歧义,它瞄准的是纠正系统在描述、表示和规格上的错误,因此是任何进一步测试执行的前提。
测试考虑点
- 考虑程序是否满足编码规范,语法上是否具有一致性和完整性。
- 考虑文档描述是否规范、准确,便于查阅。
- 考虑程序与文档之间的一致性。
人工测试和自动化测试
软件测试流程
软件测试流程
- 测试计划阶段 ------- 测试计划
- 测试设计阶段 ------- 测试方案
- 测试实现阶段 ------- 测试用例、测试规程
- 测试执行阶段 ------- 测试报告
主要的测试文档
- 测试计划:指明测试规范、方法、资源,以及相应测试活动的时间进度安排表的文档。
- 测试方案:指明为完成软件或软件集成特性的测试而进行的设计测试方法的细节文档。
- 测试用例:指明为完成一个测试项的测试输入、预期结果、测试执行条件等因素的文档。
- 测试规程:指明执行测试时测试活动序列的文档。
- 测试报告:指明执行测试结果的文档。
- 测试日报:每天执行情况的记录和总结。
测试工程师系统测试各阶段任务
- 软件需求阶段:评审软件需求规格说明书。
- 软件设计阶段:评审软件概要设计说明书、软件详细设计说明书、协助编写系统测试计划。
- 软件编码阶段:设计系统测试用例、准备测试资源(测试工具、测试环境)、开发测试脚本、开发测试工具、准备测试数据。
- 软件测试阶段:执行测试用例、提交缺陷单、跟踪缺陷、回归测试、提交测试报告。