远程桌面服务怎么测试_快速的远程服务测试

远程桌面服务怎么测试

测试与远程服务交互的代码通常非常困难。 有很多折衷因素会影响您可以编写哪些测试以及要编写的测试数量。 在大多数情况下,您对从服务中获取的数据的控制为零,这使得断言至少很难说。

不久前,我使用VCR库针对远程服务编写了一些Ruby测试。 VCR解决了上述问题。 它记录了测试套件的HTTP交互,以便在以后的运行中重播它们。 快速和可重复的测试是显而易见的好处。

这个星期,我想知道Java是否也是如此。 事实证明,有Betamax可以做到这一点。 实际上,Betamax是VCR的Groovy端口,可以与任何JVM语言一起使用。

Betamax在您和目标主机之间安装代理,在tape上记录每个请求和响应,并为已知请求重放tape 。 它适用于任何遵循Java代理设置的HTTP客户端,也适用于诸如Apache HttpClient和WSLite之类的不兼容Java代理设置的客户端。

在JUnit测试中,可以将Betamax用作方法级的TestRule 。 在应该记录和重放的每个测试方法上,您都放置了@Betamax记录器并设置了磁带。

考虑下面的示例,其中我使用Spotify Metadata API来获得艺术家的欢迎。 在此示例中,我使用Apache HttpClient库并将其配置为Betamax。

public class SpotifyTest {
  @Rule public final Recorder recorder = new Recorder();

  private final DefaultHttpClient http = new DefaultHttpClient();

  @Betamax(tape = "fixtures/popularity")
  @Test
  public void get_popularity() throws Exception {
    Spotify spotify = new Spotify(http);
    assertThat(spotify.popularity("The Beatles"), is(.55f));
  }

  @Before
  public void setUp() throws Exception {
    BetamaxRoutePlanner.configure(http);
  }
}

在编写此代码时,甲壳虫乐队的流行度为.55,但由于此数字基于用户的意见,因此很有可能会发生变化。 使用Betamax磁带将获得相同的响应(只要请求不变),并允许声明0.55以使其受欢迎。

HTTPS

正如我向您展示的那样,Betamax使用代理或包装器类正确记录并重放任何HTTP通信(如示例中所示)。 还支持HTTPS,但是当您在基于代理的设置中使用Betamax时,HTTPS可能会更有趣。 使用包装器可以正常工作。

HTTPS和基于代理的设置的问题显然是代理无法在标准HTTPS通信中拦截数据。 这就是我们信任HTTPS的原因。

Betamax可以解决这个问题。 您可以在Betamax Recorder上启用sslSupport 。 如果您的客户端代码可以使用SSL证书链断开了,则可以进行此工作。

同样,当您使用基于代理的设置时,这实际上只是一个问题。 使用客户端包装程序可以直接在API调用上启用Betamax,从而简化HTTPS通信。

自己尝试

Betamax可以帮助您为远程服务的客户端编写快速且可重复的单元测试。 对我最有益的是,由于消除了远程通信,因此测试速度非常快。 断言特定的值可能会有所帮助,尽管我个人比较喜欢这些测试的基于属性的样式(例如,流行度必须为> = 0和<= 5的数字)。

下次您与远程服务进行交互时,请尝试Betamax。

参考: Software Craft博客上的JCG合作伙伴 Bart Bakker提供的快速远程服务测试

翻译自: https://www.javacodegeeks.com/2014/03/fast-remote-service-tests.html

远程桌面服务怎么测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值