软件测试 -- 入门 5 软件测试方式
Posted Rolei_zl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试 -- 入门 5 软件测试方式相关的知识,希望对你有一定的参考价值。
任其事必图其效;欲责其效,必尽其方。(承担工作,必定要考虑工作成效;想要求得工作成效,必定要用尽多方法尝试,以求最佳。) -- 欧阳修
方法:为达到某种目的而采取的途径、办法。 -- 百度汉语
1. 静态测试
静态测试,指不执行测试程序,基于系统源码,参考各类标准、说明书和文档(如,开发语言手册、编码规范、需求规格说明书、设计说明书),结合静态测试执行者开发经验,通过审阅、检查分析源程序的语句、结构、过程、函数、方法,验让并确认系统程序是否存在错误。静态测试可以发现程序逻辑设计和编码错误。一般会提供检查列表供参考,通过工具或人工实现。
- 工具
> 开发工具编译时完成对代码的基本语法检查
> 编码规则可以借助第三方工具按配置规则进行检查
> 安全检查工具可以对代码的安全性进行静态检查
- 人工
> 审查(Inspection):开发者提交资料,由专业人员按说明书和标准对代码规则、业务逻辑进行检查
> 走查(Walkthrough):由开发者对代码进行说明,评审参与者根据说明提问并判断代码是否存在缺陷
> 同行评审(PeerReview):由开发者同行执行,参考系统标准,与开发者工作在一起确认代码实现逻辑是否正确、代码是否符合规范要求
开发者可以通过不断积累的开发经验,形成新的静态测试规则,不断充实检查列表。
2. 动态测试
动态测试。指执行被测程序,通过系统反馈和表现,将系统执行结果与预期的结果(需求/设计说明)进行比较,确认系统是否满足功能需求要求;同时分析系统执行效率,确认系统是否达到系统非功能需求要求(性能,安全性,易用性,可用性)。
动态测试需经过,测试用例/场景设计、执行、结果验证、问题跟踪、分析报告4个步骤完成。
动态测试按执行方式不同分为人工测试和自动化测试。
- 人工测试
> 所设计的测试用例/场景的执行由人工完成。通过人为的外部操作(鼠标、键盘、手柄、话筒等)触发系统功能运行,记录系统表现(录屏、截图)和结果,对比预期结果与实际结果以记录、上传、确认、跟踪问题。
> 优势:应对变化响应快,测试方法调整速度快
> 缺势:人会产生疲惫、懈怠,对缺陷的敏感度降低,对反复验证的测试执行速度慢
> 适用:单元测试,功能测试,数据流测试,验收测试;探索式测试,业务测试
- 自动化测试
> 使用工具模拟人工对系统的操作步骤和流程,将原来由人工执行的操作,通过自动化测试程序(录制或开发),由机器按预设的步骤、流程执行,对比预期结果与实际结果,输出执行日志、记录执行结果。
> 优势:执行速度快,过程记录细致(基于自动化测试程序设计),执行过程无偏差
> 缺势:需要掌握开发技能,开发周期长,对系统变化响应慢(需要二次开发)
> 适用:冒烟测试,回归测试,性能测试,安全测试
无论是人工测试还是自动化测试,测试思想(怀疑?批判?全面?)是测试人员的核心竞争力,对测试人员至关重要。
测试终极目标是提升软件质量,证明软件系统在设定的、可控的范围内可靠、可信。
测试的首要任务是发现问题,在系统实际运行之前发现问题,在用户发现问题之前发现问题。
工具辅助测试执行,目标是更加高效的发现问题,善用工具,善于偷懒,善于快乐做事。
3. 白盒、黑盒、灰盒测试
白盒、黑盒、灰盒测试的区别在于测试执行过程中是否了解程序结构、接触程序源代码。
- 白盒测试
> 逻辑测试方法。基于对程序结构、内部逻辑及程序源代码的了解,对程序内在的程序结构、函数、方法进行验证,判断程序实现是否满足需求和设计要求。
> 白盒测试从程序结构入手,设计测试用例,覆盖全部程序语句、判定、分支、路径执行,判断程序实现是否满足要求,是否存在缺陷。
> 白盒测试一般由程序设计者或开发者执行,白盒测试更能发现程序深层隐藏的缺陷,特别是架构、安全和性能问题
> Unit测试(单元测试)常使用白盒测试方法,assert断言是常用的单元测试语句
> 常用白盒分为 6 种覆盖方法,设计足够多的用例
- 语句覆盖,每条语句至少执行一次
- 判定(分支)覆盖,每个判定(真、假)至少执行一次
- 条件覆盖,满足每个判定的每一类条件至少执行一次
- 路径覆盖,覆盖程序所有可能的路径组合
- 判定/条件覆盖,每个判定、每类条件至少执行一次
- 组合覆盖,每个判定条件产生结果的所有组合条件至少执行一次
参考,......
- 黑盒测试
> 系统功能测试方法。不了解系统结构和实现方法,基于需求和设计操作程序执行(后台程序或GUI界面),或完全无序的执行程序,验证系统操作输入后实际结果与预期结果是否一致
> 黑盒测试基于需求规格说明书和系统设计书设计测试用例,覆盖系统功能性和非功能性要求,验证系统功能实现是否正确、输出是否满足定义、界面展示是否完整
> 黑盒测试一般由独立的测试人员完成(没有人心甘情愿的承认自己的程序有问题),更贴近现实环境和用户对程序的操作方式,更易于发现代码层到展示层产生的缺陷
> 黑盒测试执行更直接、更简单,能有效模拟实际场景操作,易用性测试、可用性测试常用黑盒测试模拟实现
> 每次程序更改、更新、提交都需执行黑盒测试,确保程序变动未影响到系统外在表现,称之为回归测试,使用工具可以减少回归测试执行的人工工作量、提高执行效率
> 常见的黑盒测试包括:冒烟测试、猴子测试、走廊测试、功能测试、集成测试、系统测试、易用性测试、场景测试、探索式测试、随面测试、性能测试等
- 灰盒测试
> 灰盒测试介于白盒测试与黑盒测试之间,即考虑系统实现的内部逻辑,又兼顾系统的外部输入输出表现
> 灰盒测试以需求和设计说明书为基准,同时特别关注详细设计说明书中各函数的定义和实现,通过内部逻辑的了解,设计出更多、更有效的测试用例,提高测试覆盖率
> 灰盒测试兼顾白盒测试的逻辑验证 和 黑盒测试的功能界面验证,比单纯的白盒测试和黑盒测试更加适用和有效。
以上是关于软件测试 -- 入门 5 软件测试方式的主要内容,如果未能解决你的问题,请参考以下文章