远程桌面服务怎么测试_快速的远程服务测试
遠程桌面服務怎么測試
測試與遠程服務交互的代碼通常非常困難。 有很多折衷因素會影響您可以編寫哪些測試以及要編寫的測試數量。 在大多數情況下,您對從服務中獲取的數據的控制為零,這使得斷言至少很難說。
不久前,我使用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")@Testpublic void get_popularity() throws Exception {Spotify spotify = new Spotify(http);assertThat(spotify.popularity("The Beatles"), is(.55f));}@Beforepublic 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。
翻譯自: https://www.javacodegeeks.com/2014/03/fast-remote-service-tests.html
遠程桌面服務怎么測試
總結
以上是生活随笔為你收集整理的远程桌面服务怎么测试_快速的远程服务测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何预防ddos网络攻击(如何预防ddo
- 下一篇: linux命令连接数据库(linux 命