欢迎光临散文网 会员登陆 & 注册

5.1 测试驱动开发

2023-07-17 15:19 作者:xlorne  | 我要投稿


    测试驱动开发(Test-Driven Development,TDD)是一种软件开发方法论,其核心理念是在编写代码之前先编写测试代码。TDD鼓励开发人员在编写实际代码之前先定义测试用例,然后逐步编写足够的代码来满足这些测试用例,以此驱动代码的开发过程。

    本章节的内容主要是强调测试的重要性,而非重点介绍测试驱动开发的方法论,自动化的测试是软件开发过程中非常重要的环节,但是我们在软件开发过程中却经常的忽略这个环节。

自动化的测试,可以满足软件的如下几个关键要素:

  1. 自动化测试是代码质量的主要保障手段

  2. 领域驱动设计设计中将业务模型设计从数据库设计中转移出来,即是为了模型的设计,其实也是为了满足模型的测试方便。

  3. 自动化测试是实现软件可持续维护的重要保障方式

  4. 自动化测试也是CI/CD过程中非常重要的过程。

    甚至有些时候能否实现自动化测试,比能否完成功能更重要。从今天我们开始有一个认知,即没有自动化测试脚本的代码,不能算是开发完成的功能。

    假如我们开发一个财务系统,那么自动化的测试就显得非常重要,因为没有自动化测试作为质量的保障,就好比是在裸奔,我们虽然实现了一个功能,可能对账目数据产生影响。但是就只有财务数据重要吗?实际任何系统上产生的一次错误其产生损失不仅仅只是功能本身所产生的错误影响,还需要花费更大的成本去功能、以及修复数据产生的印象等一系列的连锁错误,但是在没有自动化测试作为保障的前提下,谁又能够保证自己开发的功能就是没有问题的呢?

     我之前发朋友圈说了一个话题,如果智造一架飞机的话,应该先做什么?而我的答案是先要做飞机的模拟测试环境。因为总不能上天了再发现就已经晚了。

下面我给大家演示一下vscode代码的自动化测试效果:

https://github.com/microsoft/vscode


UI可以通过UI的测试框架来测试,例如html测试可以采用Selenium技术

业务模块测试可以采用JUnit的测试方式去测试

对应第三方不可控的服务,可以采用mock的方式来模拟测试。

性能测试可以采用JMeter实现自动化的性能测试


从技术角度来说,今天没有不可自动化测试的东西了,除非自己不想去做。


     当然对应集成测试,或许因为环境等方面的问题影响,存在一定的局限性,但是倘若我们能够保证自己模块的准确性的,其实就已经非常成功了,对于集成测试环境层面的影响,可以考虑采用容器化的技术来保持环境的一致性,然后再编写集成测试的自动化脚本。


5.1 测试驱动开发的评论 (共 条)

分享到微博请遵守国家法律