美文网首页iOS
如何在敏捷开发中推进TDD

如何在敏捷开发中推进TDD

作者: conowen | 来源:发表于2021-05-01 16:35 被阅读0次

    单元测试

    单元测试(Unit Testing)又称为模块测试,是针对程序模块来进行正确性检验的测试工作。单元就是单个程序、函数、过程等,编写程序的过程中前后很可能要进行多次单元测试。

    然而在工作中,一般都是追求快速迭代上线,基本很难做到有时间来写测试用例。虽然大家都知道单元测试的优点,也非常认同,然而现实中确很难推行下去。

    然而单元测试也是敏捷开发的一个环节,既然是敏捷,是否是我们对单元测试的认知还不够,或者没有切合实际推行单元测试,导致无法在项目中推行。

    TDD与BDD

    • 测试驱动开发(Test-Driven Development)
    • 行为驱动开发 (Behavior-Driven Development)

    一般的开发模式更偏向于BDD,以往开发需求,测试同事编写需求的测试用例,然后拉上产品、开发会进行用例评审,通过后,开发同事根据需求文档来开发需求,最后按照评定的测试用例冒烟测试和进行简单功能点测试就提测了。

    BDD的重点在于可以使用自然语言来写测试用例,常见的测试用例一般是假定一个场景、条件,然后在特定场景,应该输出一个符合预期的结果。

    而TDD就是使用开发语言来写测试用例,这个工作由基本都是由开发同事完成。

    提高认知

    需要明确一点的就是,TDD 很容易让人误解为就是先写测试后写代码。测试驱动开发,驱动的意思是由先进行软件方案设计,再写测试用例,最后写功能性的业务代码。这时候的测试用例可能就是一个方案设计的一个功能点,使用开发环境运行测试用例是失败的,因为功能代码还没开始实现。

    image.png

    所以,我们就不用再纠结先写测试用例有如何困难,理解上有偏差,我们可以把测试驱动开发更改为设计驱动开发。重点在软件方案的设计。

    TDD开发流程

    TDD的开发流程简单总结为以下几点

    • 先分解任务,大需求拆分小需求,复杂逻辑细分,降低粒度。
    • 写测试用例,聚焦于用例的注释和功能说明。
    • 实现每个细分需求的功能代码。
    • 完善单元测试用例,运行测试用例。
    • 串联所有测试用例,通过集成测试。
    • 重构并review代码。

    以下我画了一个简单的流程图,梳理一下开发流程


    image.png

    Demo

    使用一个用户登录模块的TDD开发过程来演示。
    先拆分功能点,然后设计出软件方案和流程图来。


    image.png

    TDD的用例编写如下

    image.png

    以上用例写完第一次运行肯定是fail的,因为能代码还没开始实现,接下来的步骤就是完善功能代码,串联,集成测试,重构上线。

    highlight

    • TDD的重点在于软件方案设计,功能点细分,然后使用测试用例来记录下来。
    • 测试用例即是开发文档
    • 注重重构,有测试用例的前提下,重构是成本最低的。

    相关文章

      网友评论

        本文标题:如何在敏捷开发中推进TDD

        本文链接:https://www.haomeiwen.com/subject/nagirltx.html