02 黑盒测试、白盒测试

4. 静态黑盒

4.1 黑盒测试和白盒测试

黑盒测试与白盒测试是软件测试中的两种重要方式。黑盒测试把软件看作一个不透明的盒子,只关注软件的输入和输出,不考虑内部逻辑结构;白盒测试则是对软件内部结构和代码进行测试。

4.2 静态测试和动态测试

4.2.1 检查和审核

静态测试是指不运行软件,对代码、需求、设计、文档等进行审查,包括代码审查、需求审查、设计审查、文档审查等。

4.2.2 运行软件

动态测试是指运行软件,进行功能性测试,通过输入不同数据和操作来验证软件。常见的动态测试包括单元测试、集成测试、系统测试、验收测试等。

4.3 静态黑盒测试(测试产品说明书)

4.3.1 假设自己是客户

从客户角度出发,思考软件功能是否满足需求。

4.3.2 研究现有的标准和规范

参考公司惯用语和约定、行业要求、图形用户界面、安全标准等。

4.3.3 审查和测试类似软件

对比规模、复杂性、测试性、质量和可靠性、安全性等方面。

4.3.4 产品说明书检查

确保完整、准确、精确、不含糊、清晰、一致、贴切、合理、代码无关性、可测试性。

4.4 产品说明书术语检查清单

总是、每一种、所有、没有、从不:检查测试是否有违反这些规定的情况。

当然,因此,明显,显然,必然:假定条件不可接受,视为缺陷。

某些、有时、常常、惯常、经常、大多、几乎:模糊词汇的词语难以测试。

等等,诸如此类,以此类推,例如:这些话的功能无法测试,必须明确绝对。

良好,迅速,廉价,高效,小,稳定:无法量化,无法进行测试,需继续明确。

处理,进行,拒绝,跳过,排除:这些用语会隐藏大量需要说明的功能。

如果... 那么....(没有否则):缺少否则结构的陈述,要想一想没有发生会怎么样。

5. 动态黑盒测试

5.1 通过性测试和失效性测试

5.1.1 通过性测试

确认软件至少能做什么,在破坏性测试之前看一看软件的基本功能是否实现。

5.1.2 失效性测试

为破坏软件而设计和执行的测试用例。

错误提示信息可以是通过性测试,也可以是失效性测试,视具体情况而定。

5.2 等价类划分

5.2.1 边界条件与边界值

数值、字符、位置、数量、速度、地点、尺寸还包括程度词(第一个、开始、完成、最大、空、相邻、超过、在内.......)

5.2.2 等价划分考虑因素

默认值、空白、空值、零值、无输入等条件。

5.2.3 失效性测试数据

对非法、错误、不正确和垃圾数据进行失效性测试,发挥想象力。

5.3 状态测试

软件状态是指软件当前所处的条件或者模式。

5.3.1 测试软件的逻辑流程

建立状态转换图:直观展示软件状态转换。

减少测试的状态及转换的数量:每种状态至少访问一次,测试常见的状态转换,测试状态间最不常用的分支,测试所有错误状态及其返回值,测试随机状态转换。

5.3.2 失败状态测试

竞争条件和时序错乱:例如不同软件同时打开同一个文档,共享一台打印机、端口或其他,软件处于改变状态时点击鼠标,同时启动和关闭多个实例,不同程序访问同一个数据库。

重复、压迫、重负

重复测试:不断执行相同操作,检查是否存在内存泄漏。

压迫测试:软件在不理想条件下运行,如内存小,磁盘空间少等条件,观察软件对外部资源的要求和依赖程度。

重负测试:限制软件,让软件处理尽可能大的数据文件,如高并发。

5.3 其他黑盒测试技术

无经验用户软件测试

已找到软件缺陷的地方继续找

像黑客一样思考问题

凭借经验、直觉和预感

6. 静态白盒测试

6.1 静态白盒测试

在不执行软件的条件下有条理地仔细审查软件设计,体系结构和代码,找出缺陷,有时也叫结构化分析,目的是尽早发现软件缺陷。

6.2 正式审查

6.2.1 过程

确定问题(软件问题)、遵守规则(审查的代码量、花费时间、评价、角色、目标、准备、编写报告、交流、质量、小组同志化、解决方案)。

6.3 编码规范

可靠性

可读性 / 维护性

移植性

6.4 代码审查清单

数据引用错误

数据申明错误

计算错误

比较错误

控制流程错误

子程序参数错误

输入 / 输出错误

其他检查 例如:编码语言,移植性,兼容性,警告信息

缓冲区溢出属于严重安全问题。

7. 动态白盒测试

动态白盒测试是指利用插卡代码功能,和实现方式得到信息来确定哪些需要测试、哪些不需要测试、如何开展测试,也叫结构化测试。

7.1 动态白盒测试包括直接测试和控制软件

包括以下四个部分:

直接测试底层函数、过程、子策程序、和库

以完整的方式从顶层测试软件

估算执行测试时 “命中” 的代码量和具体代码,然后调整测试

7.2 动态白盒测试和调试

测试时寻找软件缺陷,调试时修复缺陷,但是也存在交叉现象。

7.3 分段测试

7.3.1 单元测试和集成测试

单元测试:在底层进行的测试。

集成测试:单元测试后,不断增加测试过程,加入越来越多的软件片段。

系统测试:整个产品(至少是主要部分)。

7.4 数据覆盖

7.4.1 数据流

在软件中完全跟踪一批数据,单元、集成、甚至系统测试都使用同一批数据。

7.5 代码覆盖

就是对代码进行 dbug

语句覆盖

代码行覆盖

分支覆盖

条件覆盖

7.6 测试桩和测试驱动

测试桩:用于模拟和替代被测组件所依赖的外部组件或服务的辅助组件,用于构建合适的测试环境。

测试驱动:用于驱动被测组件的执行,验证其行为和结果是否符合预期的代码或程序。

posted @   代码世界faq  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示