需要做哪些测试

作者:王蒙
标签:测试,分工
简介:开发过程中需要做哪些测试,测试工作如何分工。

目标读者

技术经理

问题

  • 要做哪些测试,每种测试由什么特点,每种测试由谁来执行

  • 敏捷开发

    • TDD
    • BDD

解决办法

软件开发要做哪些测试:

  • Acceptance test(验收测试)

    把软件当做黑盒做测试,确保软件实现了当初设计的功能。这部分测试,不是由开发者做的,是由 QA staff 或者客户去做的。

  • Unit test(单元测试)

    针对类函数功能的测试,单元测试由开发人员来写,是 TDD(Test Driven Development, 测试驱动开发) 的基础。

  • Functional test

    重点测试整体的功能而不是每个代码单元。和 acceptance test 的不同在于 acceptance tests 完全是使用用户接口做测试。Functional tests 可以不必从用户接口做测试。比如测试 HTTP 服务时,使用浏览器访问(模拟用户的使用)就是 acceptance tests。使用 Postman 直接整 HTTP 请求去测试,就是 Functional tests。

  • Integration test(集成测试)

    重点测试不同软件部件之间是否如预期的那样交互。

  • Load and performance testing(性能测试)

    performance testing 很难,不同机器之间 CPU ,Memory 和 IO 性能不同会影响程序的性能。就算是同一台机器 CPU, Memory 和 IO 性能也不是一层不变的。

  • Code quality testing(代码质量测试)

    • PEP8 规范
    • Complexity metrics(复杂度)
    • 代码覆盖率
    • 编译时 warning 的数量
    • 文档是否够全

开发者主要做的是 Unit test(单元测试)

敏捷开发:为了应对快速变化的需求,敏捷开发的方法大行其道(软件工程方法论是众说纷纭,很有争议的)。在敏捷开发中 TDD 和 BDD 是被广泛认可的两种方法。

TDD:先写(单元)测试用例,再写实现。保证所有函数都有测试用例。(实际开发中,100% 覆盖所有代码的测试还是几乎没有)

BDD:BDD 和 TDD 的不同在于,BDD 的测试用例接近于自然语言,理想情况下是由产品经理写测试用例的。当前几乎所有语言都有 BDD 的测试框架,Python 中 BDD 测试框架有:

对于 Python BDD 我所知甚少。

测试过程中很用到很多 工具