--- title: 系统测试架构 date: 2019-12-10 17:00:00 order: 09 categories: - 设计 - 架构 - 综合 tags: - 架构 - 设计 - 测试 permalink: /pages/a32bd53e/ --- # 系统测试架构 > 软件测试描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 > > 现代软件开发项目中,分工明确,基本上都会有研发、测试、QA 等角色。不同角色由于关注的视角不同,测试目标和测试方法也不完全相同。本文主要从研发、测试的视角去考量软件测试技术。 > > 注意: > > - 为了方便,只有测试人员需要关注的测试点用【测试】标注; > - 而只有研发人员需要关注的测试点用【研发】标注; > - 都需要关注的测试点则不作标注。 ## 测试方法分类 ### 从测试设计方法分类 - **黑盒测试【测试】** - 把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识。从软件的行为,而不是内部结构出发来设计测试。 - **白盒测试【研发】** - 设计者可以看到软件系统的内部结构,并且使用软件的内部知识来指导测试数据及方法的选择。 - **灰盒测试** - 介于黑盒和白盒之间。 > 小结: > > - 黑河测试通常针对的是软件的行为或功能,一般是测试人员主要关注的。 > - 白盒测试通常则需要对软件有一定程度的了解,一般是开发人员所关注的。 > - 灰盒测试通常是为了测试软件在特定的场景下的表现,而非主场景。 ### 从测试的目的分类 #### 功能测试 - **单元测试(Unit Test)** - 在最低粒度的功能/参数上验证程序的准确性,比如测试一个函数的正确性。【研发】 - 常用技术:[**junit4**](https://github.com/junit-team/junit4)、[**junit5**](https://github.com/junit-team/junit5)、[**mockito**](https://github.com/mockito/mockito)、[**assertj-core**](https://github.com/joel-costigliola/assertj-core) - **功能测试(Functional Test)** - 验证模块的功能。【测试】 - **集成测试(Integration Test)** - 验证几个互相有依赖关系的模块的功能。【测试】 - **场景测试(Scenario Test)**- 验证几个模块是否能完成一个用户场景。【测试】 - **系统测试(System Test)** - 对于整个系统功能的测试。【测试】 - **Alpha 测试** - 软件测试人员在真实用户环境中对软件进行全面的测试。【测试】 - **Beta 测试** - 也叫公测,是真实的用户在真实的环境中进行的测试。 #### 非功能测试 - **压力测试(Stress test)** - 验证软件在超过负载设计的情况下仍能返回正确的结果,没有崩溃 - **负载测试(Load test)** - 测试软件在负载情况下能否正常工作 - **性能测试(Performance test)** - 测试软件的效能,是否提供满意的服务质量。 - 常用技术:[**JMeter**](https://jmeter.apache.org/)、JMH。 - **软件辅助功能测试(Accessibility test**) - 测试软件是否向残疾用户提供足够的辅助功能 - **本地化/全球化测试(Localization/Globalization**) - **兼容性测试(Compatibility Test)** - **配置测试(Configuration Test)** - 测试软件在各种配置下能否正常工作 - **可用性测试(Usability Test)** – 测试软件是否好用 - **安全性测试(Security Test)** ## 参考资料 - [软件测试 (一) 软件测试方法大汇总](https://www.cnblogs.com/TankXiao/archive/2012/02/20/2347016.html) - [Java 微基准测试框架 JMH](https://www.xncoding.com/2018/01/07/java/jmh.html)