qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          動手寫一個Remoting接口測試工具

           基于.NET開發分布式系統,經常用到Remoting技術。在測試驅動開發流行的今天,如果針對分布式系統中的每個Remoting接口的每個方法都要寫詳細的測試腳本,無疑非常浪費時間。所以,我想寫一個能自動測試remoting接口的小工具InterfaceTester。而且,當分布式系統中的某個remoting接口出現bug時,該小工具可以提交需要模擬的數據,以便在調試remoting服務的環境中,快速定位和解決bug。
            InterfaceTester運行起來后的效果如下圖:
            1.如何使用
            (1)首先,填上要測試的并且是已經發布的Remoting服務的地址信息。
            (2)選取要測試的remoting接口所在的程序集,一般是一個dll。選定程序集后,InterfaceTester會自動搜索該程序集中定義的所有接口,并將其綁定到“接口類型”的下拉列表。
            (3)從 “接口類型”的下拉列表中選擇要測試的接口。選定接口后,InterfaceTester會自動搜索該接口中定義的所有方法,并將其綁定到“目標方法”的下拉列表。
            (4)從 “目標方法”的下拉列表中選擇要測試的方法,InterfaceTester會根據該方法所要求的參數,自動生成參數錄入界面。
            (5)在參數錄入界面上,輸入用于測試的參數的值,然后,點擊“調用”按鈕, InterfaceTester便會調用上述指定地址的remtoing服務的指定接口的指定方法,如果調用的方法有返回值,則會在“調用返回”的panel上顯示該值。如果返回的不是一個簡單類型,而是一個對象,則“調用返回”的panel上將會以xml的形式顯示這個對象的各個屬性值。
            2.實現原理
            就這個小工具的實現而言,主要用到的技術就是反射(reflection)。另外,需要注意的就是,根據參數的類型,生成錄入界面。具體細節大家可以參見源碼。目前,InterfaceTester支持的被測試方法的參數類型是有限制的:
            (1)支持簡單的數據類型,像string、int、bool等。
            (2)支持List<>、I List<>、IDictionary<,>、Dictionary<,>等集合類型。
            (3)支持簡單的數據結構的class(如像Point、自定義的Entity等)。
            3.源碼解決方案
            下載源碼并用VS打開后,解決方案下有三個項目:InterfaceTester、DemoInterface、DemoService。
            (1)InterfaceTester項目是我們本文的主角:用于remoting接口測試的小工具。
            (2)DemoInterface和 DemoService則是為了試試小工具而構建的一個小demo。 DemoInterface定義了發布的remoting服務的接口, DemoService則是發布的remoting服務。
            在試用時,先啟動 DemoService項目,再啟動InterfaceTester,就可以試試我們的小工具功能了。

          posted on 2014-05-23 10:08 順其自然EVO 閱讀(248) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 资源县| 山丹县| 安图县| 定边县| 桑日县| 丰都县| 兰考县| 甘孜| 宜阳县| 乐业县| 清水县| 大洼县| 德化县| 宁阳县| 中西区| 乐亭县| 嘉兴市| 民县| 沙洋县| 武宁县| 扎鲁特旗| 福建省| 榆社县| 和静县| 陆川县| 铜陵市| 晋城| 大埔区| 怀宁县| 普兰县| 上饶市| 葫芦岛市| 怀化市| 昌黎县| 定远县| 唐河县| 个旧市| 玉山县| 龙南县| 福清市| 涟水县|