黑盒测试
- 什么是黑盒测试
- 又称功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构
- 黑盒测试方法
- 功能划分
- 等价类划分
- 边界值分析
- 因果图
- 错误推测等
什么是白盒测试
-
- 白盒测试也称结构测试或逻辑驱动测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行
- 白盒测试的主要方法
- 对应于程序的一些主要结构:语句、分支、逻辑路径、变量;白盒测试的主要方法是:
- 语句覆盖方法
- 分支覆盖方法
- 逻辑覆盖方法
- 对应于程序的一些主要结构:语句、分支、逻辑路径、变量;白盒测试的主要方法是:
- 什么是动态测试
动态测试需要在开发/测试环境或实际运行环境中运行软件,并使用测试用例去查找软件缺陷;动态测试包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等
2. 什么是静态测试
静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估.静态测试包括代码检查、程序结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行
手工测试和自动测试
a.手工测试缺点在于测试工作量大,重复多,回归测试难以实现
b.自动测试利用软件测试工具自动实现全部或部分测试工作:管理、设计、执行和报告;节省大量的测试开销,并能够完成一些手工测试无法实现的测试
- 手工完成测试的全部过程无法保证测试的科学性与严密性:
- 修改的缺陷越多,回归测试越困难
- 没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率
- 反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一
- 测试花费的时间越长,测试的严格性也就越低
- 自动测试将测试人员从反复、烦杂的测试执行中解放出来,用更多的时间进行测试设计和结果分析
- 软件测试不可能完全自动化
- 不能完成所有手工测试任务
- 无创造性且灵活性差,不能改进测试的有效性
测试流程
- 单元测试
- 集成测试
- 系统测试
- 用户验收测试
- 回归测试
单元测试
- 完成对最小的软件设计单元—模块的验证工作
- 目标是确保模块被正确地编码
- 使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误
- 通常情况下是面向白盒的
- 对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早地发现和解决不易显现的错误
- 单元测试的内容
- 接口测试
- 内部数据结构
- 全局数据结构
- 边界
- 语句覆盖,错误路径
集成测试
- 通过测试发现与模块接口有关的问题
- 目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构
- 应当避免一次性的集成(除非软件规模很小),而采用增量集成
集成测试主要内容
- API
- API/参数组合
系统测试
- 根据软件需求规范的要求进行系统测试,确认系统满足需求的要求
- 系统测试人员相当于用户代言人
- 在需求分析阶段要确定软件的可测性,保证有效完成系统测试工作
- 系统测试主要内容
- 所有功能需求得到满足
- 所有性能需求得到满足
- 其他需求(例如安全性、容错性、兼容性等)得到满足
用户验收/确认测试
- Alpha测试
- 是由用户在开发者的场所来进行的,Alpha测试是在一个受控的环境中进行的
- Beta测试
- 由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者
压力测试VS性能测试
性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程。在理想的情况下,被测软件在这个时候已经是足够稳定了
性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。
概括就是:在不同负载下(负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况;
压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的叶面3秒钟内响应;概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。
举例说明:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。