集成測試的思路 軟件測試
對于集成測試,初學者往往比較模糊,到底怎么測?是不是把兩個模塊連在一起,然后采用單元測試的技術,測試這個更大的模塊?
我們都知道,集成測試關注的是模塊之間的接口。那么可以將“接口”作為切入點?v觀模塊之間的接口,我們可以歸納為以下幾種類型,下面一一介紹一下。
1、通信協議:兩個模塊之間通信采用的是標準的或者自定義的(網絡)協議;
協議中即包含數據部分,又包含控制部分;有些實現將數據與控制分離,如FTP;而大部分實現將數據與控制通過一條鏈路來傳遞,往往通過不同的消息包進行分離。
2、調用關系:模塊A調用模塊B,實際上是由模塊A向模塊B發出了一條控制指令,這里數據傳遞體現的不是很明顯,往往體現為參數與返回值,它們可以認為是控制的副本。
3、文件、數據庫、隊列、第三方中間件等:表現的主要是數據的傳遞,其中的控制體現的不明顯。
4、共享資源:比如共享一段“存儲區域”,其中涉及的關鍵資源主要是“鎖”了;這樣的兩個模塊在運行時往往分布到不同的進程或者線程中,表現為對資源的競爭,以及數據的共享。
5、同步:一個模塊的運行需要另外一個模塊的觸發,雙方往往存在“信號”等通知機制,也可以理解為一種特殊的控制方式。
OK,現在切入點有了,我們可以將被測系統歸類(以上的分類),找出其中的數據接口與控制接口。
接下來的做法與一般的測試思路沒有什么不同。
首先,將數據接口與控制接口分解——需要傳遞哪些數據?存在哪些控制指令?
然后,找出數據與指令中的變數所在;如數據(協議包)中的字段的取值,指令的參數變化等;
接下來,將變數劃分等價類,找出每類的代表,就是我們的測試數據了——我們的目標是:讓每類數據流與控制流均通過接口一次,從而實現接口測試的完全性;
最后,就是考慮如何生成這些測試數據了。往往需要對應到集成后“大模塊”的輸入與輸出。
談了很多,上面的內容更多的關注了實現。下面我們要考慮另外一個側面——業務。
模塊之間的聯系(接口)往往是為了體現業務上的關聯。大家都知道,關聯本身也是有很多屬性的。如關聯點(每個模塊)都存在一個角色,關聯有多重性(multiplicity)——即模塊A在運行時可能對應多個模塊B的實例。
我們找到了測試的另外一個切入點,模塊的集成能否準確體現業務上的關聯?各個模塊是否具備其角色的全部屬性和接口,模塊之間的關聯關系如何打破?關聯的多重性是否有效?
當然,集成測試不會太關心業務或者需求,那是系統測試的事了。但此時想想,往往能夠得到意外的收獲。
太多的關注功能,往往忽略其他。有時我們不得不考慮接口的性能,尤其對于系統關鍵接口。接口的性能測試越早進行越好。如果等到系統測試時做,可能接口外面封裝了太多的代碼,影響性能問題的精確定位。
文章來源于領測軟件測試網 http://www.kjueaiud.com/