Contract Testing - 契约测试

作者: MoZhou | 来源:发表于2016-11-02 01:00 被阅读2348次

    Why

    多用于微服务架构,当不同服务之间需要互调API时,传统测试无法覆盖,需要通过制定一个类似通信协议(这里叫契约)来确保内部服务正常通信

    What

    契约测试会测试外部服务的边界,以查看服务调用的输入/输出,并测试该服务能否符合契约预期。将所有的消费者契约测试结果集合起来,有助于维护者在需要时对服务作出变更(不影响消费者),并十分有助于在定义新服务提供支持。

    • 角色:消费者(Consumer) & 生产者(Provider)
    • 思想:Consumer Driven (需求驱动)
    • 具体实现:Consumer 端提供一个类似“契约”的东西(如json 文件,约定好request和response)交给Provider 端,告诉Provider 有什么需求,然后Provider 根据这份“契约”去实现
    • 具体情形:

    假设一个Provider被多个Consumer调用时,当Provider变化时,需测试对消费端得影响
    消费端/生产端 服务升级时,比如由1.0升级至2.0,那么2.0要能覆盖1.0的需求测试

    How

    作为数据的生产者,需要确保其提供的数据能够符合消费者的要求。作为数据的消费者,需要确保从生产者获取数据后,能够有效地被处理。

    具体流程图

    Usage

    可以用Pact工具来自动化把测试生成json文件作为多个服务通信的契约
    关于Pact的用法参见https://github.com/SEEK-Jobs/pact-net

    相关文章

      网友评论

      本文标题:Contract Testing - 契约测试

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