最近平臺化是一個很火的詞,都在講什么什么的平臺化,基于這種平臺化應(yīng)該怎么去制定測試策略呢仁卷,這是很值得我們?nèi)ニ伎嫉囊粋€問題同云。
系統(tǒng)的背景
最近就在做一個基于SAP的平臺化項目,項目背景如下,客戶的后臺是一個大的SAP系統(tǒng),我們需要基于這個SAP系統(tǒng)去做平臺化。
由于SAP本身提供很多服務(wù)胆萧,客戶能基于SAP去查詢很多相關(guān)的數(shù)據(jù),但是痛點在于俐东,當客戶需要去相關(guān)的一系列信息的時候跌穗,往往要登錄不同的系統(tǒng),做很多查詢虏辫,最后才能查出想要的答案蚌吸。我們的目的在基于當前SAP存在的功能,進一步做整合砌庄,能夠更加方便快捷的為用戶提供服務(wù)羹唠。
所以整體的系統(tǒng)結(jié)構(gòu)為:
1. SAP系統(tǒng),此系統(tǒng)為用戶第三方提供的系統(tǒng)
2. Platform娄昆,這個是我們需要去做的系統(tǒng)佩微,目的是為了整合SAP所提供的服務(wù),是一個基于微服務(wù)的系統(tǒng)萌焰。
3. BFF哺眯,調(diào)用platform的微服務(wù),為前端的頁面提供服務(wù)扒俯。
4. Web application奶卓,顯示給用戶的頁面一疯。
在開發(fā)過程中,我們需要從上游拉動下游進行開發(fā)---從客戶那里獲得想要的需求夺姑,然后去拉動platform和SAP的開發(fā)墩邀。對這個系統(tǒng)我們需要怎樣去做測試呢?
需要考慮的點
其實對于測試策略的制定來說盏浙,我們需要關(guān)注的點基本都是互通的磕蒲,比如Responsibility,Automation只盹,Data Management,Test Management兔院,以及risk management等等殖卑。
關(guān)于測試類型
相信大家對UI automation,API坊萝,以及單元測試和code掃描測試都已經(jīng)很熟悉了孵稽,這里我想重點說下的是SAP Regression。這個實際上有客戶提供的SAP的回歸測試十偶,我們會把相應(yīng)的這些測試放到pipline里面菩鲜,當我們修改了SAP的某些功能的時候,我們就需要去運行SAP的回歸測試惦积,確保我們的修改不會影響SAP本身的功能接校。
具體的測試類型用到什么樣的測試框架,都是與技術(shù)棧強相關(guān)的:
1. Unit test會針對前后端分別用到 Junit (backend)和Karma, Jasmine (frontend)狮崩。
2. API測試因為指在BFF層面有(其他的有契約測試覆蓋)蛛勉,而BFF本很是用java編寫的,所以我們選擇了RestAssured睦柴。
3. 前端用的是Angular js的技術(shù)棧诽凌,所以我們選擇了Nighwatch,其實對于前端來說坦敌,如果是angularjs侣诵,Protractor也是另外一個好的選擇。
4. SAP的回歸測試狱窘,由于是客戶提供的杜顺,客戶用的是newman,我們直接把腳本集成到pipline里面就好了训柴。
最后我們整理如下圖:
除了這些哑舒,我們還同時用到了契約測試和mock,為什么會用到契約測試和mock呢幻馁?
關(guān)于契約測試和mock
對月契約測試來說洗鸵,我相信大家已經(jīng)很熟悉了越锈,主要是用于微服務(wù)之間以及,bff與platform之間膘滨。對我們?yōu)槭裁催x擇mock測試原因甘凭,可以參照我另外一篇文章: 江湖郎中,你還要嗎火邓?
測試計劃
我們需要為我們項目制定測試計劃丹弱,如下圖,第一個迭代和第二個迭代與開發(fā)同步铲咨,主要用戶測試框架的搭建躲胳,和準備工作,在第二個迭代的時候開始引入了system integration test的工作纤勒。
測試環(huán)境
與一般的項目一樣坯苹,我們需要不同的環(huán)境,如下:
性能測試和安全測試
這也是我們一般所說的非功能性測試摇天,對于性能測試我們定義了一些臨時的性能指標粹湃,因為有很多不確定性因素,所以這個是要在項目持續(xù)進行修正的指標泉坐,如下圖:
關(guān)于安全性測試为鳄,我們用到是比較常用的靜態(tài)代碼掃描Fortify用于JS的安全掃描,Lapse用于Java的安全掃描。
關(guān)于風險
對于這個項目來說腕让,最大的風險就是SAP系統(tǒng)的不確定性孤钦,由此引發(fā)的考慮是,pipline如何與SAP集成记某?
1. 客戶的SAP測試系統(tǒng)是一個第三方的系統(tǒng)司训,不僅極不穩(wěn)定,這些都是短期內(nèi)很難去和客戶協(xié)調(diào)解決的問題液南,而且我們只有讀的權(quán)限壳猜,并沒有寫的權(quán)限。導(dǎo)致我們在開發(fā)platform的過程中不能很好的和SAP集成滑凉,影響開發(fā)進度统扳。
2. 當我們做完開發(fā),pipline需要執(zhí)行所有的測試畅姊,其中包括與SAP的集成測試咒钟,試想如果SAP不穩(wěn)定,那么集成測試很多時候都會因為這個失敗若未,怎樣去做持續(xù)集成朱嘴?
3. 如果我們能得到穩(wěn)定的SAP環(huán)境,如何創(chuàng)建我們需要的數(shù)據(jù)呢?
對于測試策略來說萍嬉,我們通常還要考慮到比如cases management乌昔,bug分析與管理等,這里就不再累贅壤追。重要的不是在于我們能做什么磕道,而是我們這樣做能為項目帶來什么樣的價值。