Skip to content

软件测试有哪些?

Ma Ping edited this page Jun 25, 2021 · 26 revisions

所有的测试都应该能追溯到某个用户需求

软件测试按阶段一般分为四个阶段:单元测试、集成测试、系统测试、验收测试。其中,单元测试和集成测试属于白盒测试,系统测试和验收测试属于黑盒测试。

1. 单元测试(开发人员)

单元测试(Unit Testing)是对软件中的最小可验证单元(函数级)进行检查和验证。

2. 集成测试(开发人员)

集成测试(Integration Testing)是在单元测试的基础上,测试系统的各个模块以及各个模块之间的接口关系。

3. 系统测试(测试人员)

系统测试(System Testing)是在集成测试的基础上,测试整个系统的功能。 测试人员需要了解系统的各个模块功能,准备测试用例。

系统测试分为功能测试和非功能测试。

3.1 功能测试

功能测试(Functional Testing)是测试软件的各项功能是否达到客户要求。 功能测试包括如下测试:

  • 安装测试(Installation Testing):测试软件在各个平台安装的测试。
  • 回归测试(Regression Testing):在修改 Bug 或功能更新之后,为了确保所作改动不会影响已有功能而进行的测试。
  • 冒烟测试(Smoke Testing):在对某个新版本进行系统大规模测试之前,先测试一下软件的基本功能。
  • 高可用性测试(High Availability Testing):测试集群中当主节点发生故障时从节点继续响应请求的能力,99.999%。
  • 容灾测试(Disaster Recovery Testing):测试灾难发生后,将生产平台恢复到正常运行的能力。
  • 兼容性测试(Compatibility Testing):测试软件可以在不同的硬件、操作系统、浏览器、网络环境、屏幕尺寸上正常运行。

3.2 非功能测试

非功能测试(Non-Functional Testing)是在功能测试的基础上,考察软件在给定负载的情况下的性能表现,因此也称为性能测试。

为了真实掌握软件上线后的性能,非功能测试的测试环境应该和生产环境一致。

非功能测试通常包括如下测试:

  • 负载测试(Load Testing):测试软件在满足预期指标的负载情况下的工作状况,了解系统的最佳并发数,找出系统瓶颈,建议测试时长 1 小时。
  • 压力测试(Stress Testing):测试软件在强负载情况下的工作状况,了解系统的最大并发数,找出系统临界点,建议测试时长 1 小时。
  • 耐力测试(Endurance Testing):测试软件在一段较长时间内持续保持最佳并发数的工作情况,建议测试时长 24 小时。
  • 尖峰测试(Spike Testing):测试软件在脉冲负载下的工作情况,测试时长 1 小时。
  • 扩展性测试(Scalability Testing):测试软件在集群模式下的负载增长情况,考察增长是否接近线性,测试时长 1 小时。
  • 可靠性测试(Reliability Testing):测试软件在给定时间内,给定环境下的无错运行的概率。怎么测?引入捣乱的猴子测试?
  • 易用性测试(Usability Testing):测试用户使用软件时是否感觉方便。
  • 安全性测试(Security Testing):测试软件对非法入侵的防范能力。
  • 配置测试(Configuration Testing):测试软件在不同软硬件配置下的性能。

负载测试可以依据迭代周期或者固定每周/每两周/每月执行一次,用于及时发现系统的性能问题。

同时获取系统的性能指标:CPU、内存、网络带宽、响应时间、TPS、IOPS,作为横向对比参考依据。

执行负载测试时,应该逐渐递增并发请求数量,比如:100,200,300,等等,找出系统加速时间、稳定时间、减速时间,并绘制图表:纵轴:资源消耗、吞吐量、响应时间、错误率;横轴:并发请求。同时监控系统的性能指标:CPU、内存、网络带宽、响应时间、TPS、IOPS,作为横向对比参考依据。 对于响应时间的统计,应从均值、.90、.99、分布等多个角度统计,而不仅仅是给出均值。

4. 验收测试(业务人员)

验收测试(Acceptance Testing)是在系统测试的基础上,针对用户需求、业务场景进行的测试。

参考资料:

  1. Load Test: https://www.perfmatrix.com/what-is-load-test/
  2. 性能规范参考指标: https://blog.csdn.net/aiduo4911/article/details/101280109
  3. 性能测试基础知识: https://www.cnblogs.com/lu-tao/p/11235306.html
  4. 冒烟测试和回归测试的区别 https://www.cnblogs.com/Abby123/p/6612148.html
  5. 浅谈容灾测试 https://www.cnblogs.com/imyalost/p/8290567.html
  6. 功能测试 https://www.jianshu.com/p/180cfbe8ed48
  7. 软件系统测试的主要分类有哪些?https://jingyan.baidu.com/article/20095761fbcc90cb0721b438.html
  8. 谈谈 API 测试 https://www.jianshu.com/p/b162bc71f8da
  9. 单元测试,集成测试概念与各种工具介绍 https://blog.csdn.net/xiaominggunchuqu/article/details/75007348