Loading

契约测试Pact(二)

微服务测试对测试人员意味着什么

 

 每个服务承担一定的职责,服务尽可能地小,但是还需要达到一定的规模。对于项目做出向微服务转变的决策时,测试人员要用于提出质疑,要不要做这样的转变

 服务之间通常通过rest api来连接

 每种服务不一定提供界面。对测试人员意味着不一定能够从UI对系统进行完整测试,这就对API级别的集成化测试提出了要求

 微服务通常还可以划分为更小的模块,在对微服务进行测试时可以从不同的模块着手,进行相应的模块测试。

 

微服务给测试带来的挑战

总体的测试策略

 确保从各个维度上,无一遗漏的对微服务进行全面的测试,既要确保我们对系统各个层面的覆盖度,又要确保我们的测试执行效率,从而保证CI/CD的顺利实施。

 测试策略的正确实施,工具和技术固然重要,但是我们需要注意更为重要的人的因素,测试人员要在团队中树立质量第一的意识

 不能为了测试而测试,要以用户为核心,把有限的资源用在刀刃上,对于测试层次、流程以及用例的设计,要有的放矢

 

微服务给测试带来的挑战

 服务/模块/层次(layer)之间存在复杂的依赖性

 不同的服务可能会在不同的环境/设置下运行

 涉及多个服务的UI端到端测试(End-to-End测试,简称E2E测试)非常容易出错

 测试结果可能取决与网络的稳定性

 故障分析的复杂度会随着服务的增加而提高

 与交付周期不同的开发团队之间的交流成本

 

面对上述挑战,我们测试团队需要采用什么样的测试原则

 自动化

 层次化

 可视化

 

 

采用的主要测试方法

单元测试(Unit Test)

集成测试(Intergration Test)

组件测试(Component Test)

契约测试(Contract Test)

端到端的测试(End-to-end Test)

探索测试(Exploratory Test)

 

 

 【单元测试】:

测试最小的可测单元,验证他们能否按照预期进行表现

 

 

 【集成测试】

验证组件之间的交互路径

 

 

除了外部通信还有内部数据

 

 

 【组件测试】

在系统内部,对单个组件或者微服务个体使用Test doubles替换外部依赖来进行测试

 

验证的是微服务是否能够起到预期的作用

需要我们把微服务周边所有的依赖全部模拟化,服务正常运行以后(把外部模拟化),站在外部来看,这些服务可以正常运行(能否正常输入输入输出)

 

 

 【契约测试】

在组件的外部,验证关联组件之间契约的正确性

 

 

对于我们的服务来说,比如被测区域需要外部服务的数据,他才能够正常动,那么对我我们这个内部服务来说我们是“消耗数据”,即【消费者】;那对于外部给它提供数据的服务来说,它是一个【提供者】,也叫【生产者】(producer)

 

【契约测试】:就是看生成者服务和消费者服务,他们之间进行通信,传递数据,那他们之间传递数据的这个协作(机制)是否恰当,生产者提供的内容,是否能满足被测服务(消费者)预期。

比如说:去食堂买饭,我今天点了一份鱼香肉丝,我发出的请求是【鱼香肉丝】,那么生产者把鱼香肉丝做好以后,他提供给我(消费者),给我的如果不是鱼香肉丝,那就不符合我这个契约测试的要求,没法满足我这个消费者的需求。

 

 【端到端测试】

在系统的外部,验证整个系统的业务功能满足设计的需求

 

粉色圈内的所有测试就是端到端测试

 

 【探索测试】

        探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

 

 

 

 

posted @ 2020-05-19 09:44  Binzichen  阅读(310)  评论(0编辑  收藏  举报