系统测试架构

系统测试架构

软件测试描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

现代软件开发项目中,分工明确,基本上都会有研发、测试、QA 等角色。不同角色由于关注的视角不同,测试目标和测试方法也不完全相同。本文主要从研发、测试的视角去考量软件测试技术。

注意:

  • 为了方便,只有测试人员需要关注的测试点用【测试】标注;
  • 而只有研发人员需要关注的测试点用【研发】标注;
  • 都需要关注的测试点则不作标注。

测试方法分类

从测试设计方法分类

  • 黑盒测试【测试】 - 把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识。从软件的行为,而不是内部结构出发来设计测试。
  • 白盒测试【研发】 - 设计者可以看到软件系统的内部结构,并且使用软件的内部知识来指导测试数据及方法的选择。
  • 灰盒测试 - 介于黑盒和白盒之间。

小结:

  • 黑河测试通常针对的是软件的行为或功能,一般是测试人员主要关注的。
  • 白盒测试通常则需要对软件有一定程度的了解,一般是开发人员所关注的。
  • 灰盒测试通常是为了测试软件在特定的场景下的表现,而非主场景。

从测试的目的分类

功能测试

  • 单元测试(Unit Test) - 在最低粒度的功能/参数上验证程序的准确性,比如测试一个函数的正确性。【研发】
  • 功能测试(Functional Test) - 验证模块的功能。【测试】
  • 集成测试(Integration Test) - 验证几个互相有依赖关系的模块的功能。【测试】
  • 场景测试(Scenario Test)- 验证几个模块是否能完成一个用户场景。【测试】
  • 系统测试(System Test) - 对于整个系统功能的测试。【测试】
  • Alpha 测试 - 软件测试人员在真实用户环境中对软件进行全面的测试。【测试】
  • Beta 测试 - 也叫公测,是真实的用户在真实的环境中进行的测试。

非功能测试

  • 压力测试(Stress test) - 验证软件在超过负载设计的情况下仍能返回正确的结果,没有崩溃
  • 负载测试(Load test) - 测试软件在负载情况下能否正常工作
  • 性能测试(Performance test) - 测试软件的效能,是否提供满意的服务质量。
    • 常用技术:JMeter、JMH。
  • 软件辅助功能测试(Accessibility test) - 测试软件是否向残疾用户提供足够的辅助功能
  • 本地化/全球化测试(Localization/Globalization
  • 兼容性测试(Compatibility Test)
  • 配置测试(Configuration Test) - 测试软件在各种配置下能否正常工作
  • 可用性测试(Usability Test) – 测试软件是否好用
  • 安全性测试(Security Test)

参考资料