lsekfe 发表于 2020-7-29 09:35:00

面对100+种测试类型,如何不犯晕?

英文字母有26个,而软件测试的类型远远不止26个。
  据不完全统计,常见测试类型在100种以上。单以字母A开头的测试类型就不止10个,例如:Acceptance Testing,Accessibility Testing,Agile Testing,Ad-hoc Testing,Alpha Testing,API Testing,Automated Testing等。
  五花八门的测试类型,极大增加了我们的认知成本和沟通成本。
  为了理顺思路,也为了避免对来自不同维度的测试类型混为一谈,我们有必要明确下测试类型的划分维度。
  测试的分类标准也可以五花八门。一般认为,主要的分类维度有三种:测试的层级(Level),被测软件的可访问性(Accessibility)和测试的主题/专题(Topic)。是为软件测试三维分类框架,如下图所示。

软件测试是分层与分级的,符合著名的金字塔结构。这是最基础,也是最核心的分类方式。测试的层级划分既是基于时间的,也是基于空间的。
  从软件开发的阶段来看,按照时间顺序依次进行的是单元测试,集成测试和系统测试;从被测软件(SUT)的空间范围来看,从小往大依次也是单元测试,集成测试和系统测试。
  不同阶段,不同范围的测试有显著不同的特点。例如,测试层级越低,越容易实现自动化;测试范围越大,解决bug的成本越高。
  注意到,测试的层级(单元测试,集成测试和系统测试)是广义的概念。不同场合,它们会有不同的表现形式。例如,模块测试和组件测试都可视为单元测试,连接两个或多个组件的API接口测试,通信协议测试等,都可视为集成测试。
  测试类型划分的第二个维度是SUT的可访问性(Accessibility)。著名的白盒测试,灰盒测试和黑盒测试,正是基于这个维度划分出的。
  白盒测试会利用软件的内部结构和实现细节来设计测试。黑盒测试不关注软件内部细节,而利用软件的需求和描述来设计测试。
  SUT的可访问性决定了测试输入,从而相当程度上决定了测试方法。
  测试类型划分的第三个维度是测试的主题(Topic)。如果说前两个维度是很具体的,那么第三个维度就有些笼统。测试主题,既可以是测试的内容/目标,也可以是测试的手段/技术特征。
  例如,功能测试,性能测试,回归测试(本质上是衰退测试),安全测试,兼容性测试,国际化测试等,都是指特定的测试内容。
  又例如,Fuzzing测试,边界值测试,手动测试,自动化测试,并行测试,探索性测试,蜕变测试等,都是指特定的测试手段。
  按照主题来划分的测试类型,描述的是一个专门的测试领域。不同测试领域,瞄准的是不同的问题,往往也需要不同的技术栈。
  总的来说,测试的层级和SUT的可访问性是通用和稳定的,而测试的主题是专业和变化的。
  注意到,某个测试主题往往可以映射到一个或者多个测试层次,以及一种或多种SUT可访问性。
  例如,回归测试可以出现在单元测试,集成测试和系统测试等每一个阶段;Fuzzing测试的实现方式既可以是基于白盒的,也可以是基于黑盒的。
  对于每一种测试类型,我们可以利用上述三个维度来对它做一个基本定位。这样,面对100多种测试类型,我们是否也就不犯晕了呢?

jingzizx 发表于 2020-7-29 10:10:15

:victory:

Miss_love 发表于 2020-7-29 13:34:02

:handshake
页: [1]
查看完整版本: 面对100+种测试类型,如何不犯晕?