首页 > 编程知识 正文

性能测试挡板什么意思,mock模拟接口测试

时间:2023-05-05 04:21:42 阅读:159989 作者:853

mock的使用方法和时机:

)在单元测试/接口测试中,测试对象依赖于其他对象,这些对象结构复杂、耗时或根本无法结构化(未交付) )。

)我们只测试对象内部的逻辑质量,不关心依存对象的逻辑正确性和稳定性

根据以下两个原则进行mock。 这样,mock的投入产出比是最高的。

)不需要mock所有的依赖方,只mock结构复杂且结构费时的依赖方

)2)对于分层自动化,高层测试设计可以基于以下假设:

低层测试保证了低层对象的质量,上层对低层的依赖可以mock

mock可以在打开挡板的同时模拟返回数据。

测试驱动开发(TDD )可以在接口实现之前编写接口测试。 在开发过程中将测试添加到自动化测试环境中。

防止系统b错误导致的测试错误

在系统b的开发进度中不会影响测试,如果定义了接口mock,即使b没有开发,也可以进行测试

虽然有些接口通过较慢的操作处理复杂的逻辑,但mock可以快速返回,提高测试效率

模拟在APP应用中不容易构建的对象和比较复杂的对象,使测试顺利进行

mock的缺点在于,在很多情况下,不能完全模拟服务器的所有可能的返回情况。 另外,mock撤销相关公司后,环境整体的连接性可能无法测试。

Mock的要点

模拟对象的概念是希望创建能够使用特定参数调用特定方法并返回预期结果的替代实际对象的对象。

桩是指用于替换特定功能的段。 桩程序可用于模拟现有程序的行为,或临时替换未完成的开发程序。

例如有获取温度的函数。

publicdoublegettemperature (string position ) double ret=temperature read (position ); }

但是,TemperatureRead函数调用特定的硬件设备,但硬件设备没有准备好。

我们可以用Stub代替

publicdoubletemperatureread (string position ({ return 28; }

stub:forreplacingamethodwithcodethatreturnsaspecifiedresult

mock:astubwithanexpectationsthatthemethodgetscalled

将Mock对象设置为预期执行时会发生什么,例如返回特定值、抛出异常或触发事件,或调用特定次数。

设定预测和验证预测同时进行。 预计设置将在调用测试类函数之前完成,验证将在之后进行。 所以,首先设定预期结果,然后验证预期结果是否正确。

这是最大的好处吧。 创建Mock后,可以在创建服务接口之前编写服务测试。 这样就可以在开发过程中将测试添加到自动化测试环境中。 这意味着,仿真可以实现测试驱动的开发。

这类似于上面的点; 为不存在的代码创建测试。 但是,前面提到的是开发人员编写测试程序,这里是测试团队编写。 当还没有什么要测量的东西时,测试团队怎么做测试? 模拟和模拟测试! 这意味着,当服务借口需要测试时,实际上QA团队已经有了完整的测试组件。 一个团队不会等待另一个团队的完成。 这特别突出了模拟的利益型。

Mocks非常高效,因此Mocks可以创建概念证书,将其用作图像,也可以用作考虑生成项目的演示程序。 这为决定项目是否即将进行提供了强有力的基础,但最重要的是提供实际的设计决策。

这个好处不是实际利益之一,而是作为必要时的“救生圈”使用。 你遇到过这种情况吗? 朴素的蝴蝶试图测试service接口,但service需要通过防火墙进行访问。 防火墙无法为你打开,或者需要认证才能访问。 遇到这种情况时,可以在可以访问的地方使用MockService进行替代。 这就是“救生圈”功能。

在某些情况下,出于某种原因,可能需要允许从外部源(如合作伙伴或客户)访问测试系统。 由于这些原因,其他人也可以访问敏感信息。 此外,您可能只是想允许访问某些测试环境。 在这种情况下,如何向合作伙伴或客户提供测试系统进行开发或测试呢? 最简单的是,无论是来自你的网络还是客户的网络,都提供mock。 soapUI mock的配置非常简单,可以在soapUI中运行,也可以作为war包发布到java服务器。

在某些情况下,您可能希望测试系统的一部分,而不受系统其他部分的影响。 其他系统部分会干扰测试数据,从而影响通过数据采集获得的测试结果。 可以使用mock删除系统相关的模拟,但需要测试的部分除外。 隔离这些mocks后,mocks将变得非常简单、可靠,并且可以迅速预见。 这提供了一个测试环境,可以删除随机行为,具有重复模式,并可以监视特殊系统。

Mockito是一个简单而受欢迎的Mock框架。 这有助于创建Mock对象并保持单元测试的独立性。

>使用它只需要在 Maven 中添加依赖即可。

org.mockitomockito-all2.0.2-beta

class CreateMock {

@Beforepublicvoidsetup() {

mockUserDao = mock(UserDao.class);

userService =newUserServiceImpl();

userService.setUserDao(mockUserDao);

}}

class CreateMock {

@Mock

UserDao mockUserDao;

@InjectMocks

privateUserServiceImpl userService;

@Before

publicvoidsetUp() {

//初始化对象的注解

MockitoAnnotations.initMocks(this);

}  }

参考:https://blog.csdn.net/wwh578867817/article/details/51934404

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。