測試驅(qū)動

測試驅(qū)動,每一個做自動化的人都應該了解的內(nèi)容。

  • 數(shù)據(jù)驅(qū)動

在談數(shù)據(jù)驅(qū)動之前,先聊一聊錄制回訪。一直以來,錄制回訪都不那么被認可,原因不外乎以下幾個:1.應用程序必須達到一定的穩(wěn)定性,才能開始錄制測試腳本;2.錄制的測試腳本和測試數(shù)據(jù)耦合得太緊密;3.維護自動化測試腳本的成本非常高。

數(shù)據(jù)驅(qū)動的核心思想就是測試數(shù)據(jù)和測試代碼分離。

    public void login(String[][] accounts){
        for(int i = 0; i<accounts.length; i++){
            //do login
        }
    }

    public void test(){
        String[][] accounts = {{"test1", "password"}, {"test2", "password"}};
        login(accounts);
    }
    public void login(String userName, String password) {
        //login
    }

    public void test(String[] account) {
        login(account[0], account[1]);
    }

    public void executor(){
        String[][] accounts = {{"test1", "password"}, {"test2", "password"}};
        for (String[] account : accounts) {
            test(account);
        }
    }

對比上述兩段代碼,后者比前者更像數(shù)據(jù)驅(qū)動。數(shù)據(jù)驅(qū)動,是以數(shù)據(jù)來控制測試的業(yè)務流,測試數(shù)據(jù)不同所得到的測試結(jié)果也是不同的。在自動化測試框架中,數(shù)據(jù)驅(qū)動的意思是測試用例或測試套件是由外部數(shù)據(jù)集合來驅(qū)動的框架。比如上例中,我們可以把login()看作是測試實現(xiàn),test()充作測試用例,而executor()則是用不同的測試數(shù)據(jù)來驅(qū)動不同的測試場景(假設test1、test2的登陸結(jié)果不同)。

優(yōu)點:1.在應用程序開發(fā)的同時就可以同步建立測試腳本,當應用變動時,只需要修改業(yè)務功能部分的腳本;2.利用模型化的設計,避免重復的腳本,減少建立和維護腳本的陳本;3.測試輸入數(shù)據(jù)、驗證數(shù)據(jù)、預期的測試結(jié)果與腳本分開,利于修改和維護;4.自動化測試開發(fā)人員創(chuàng)建數(shù)據(jù)驅(qū)動的測試過程,測試人員可以創(chuàng)建測試數(shù)據(jù)。

缺點:1.每個腳本對應多個數(shù)據(jù)文件,這些數(shù)據(jù)文件需要根據(jù)腳本的功能類別存放在各自的目錄中,增加了使用的復雜性;2.測試人員除了需要根據(jù)具體測試數(shù)據(jù)維護相應的測試計劃,還要將這些數(shù)據(jù)寫入各個需求不同的數(shù)據(jù)文件中;3.在編輯數(shù)據(jù)文件時,必須注意測試腳本所要求的傳輸格式。

在假設測試人員不懂開發(fā)代碼的年代,數(shù)據(jù)驅(qū)動將自動化人員和測試人員的工作分開,自動化人員只負責測試的實現(xiàn),而測試數(shù)據(jù)的設計準備工作是由測試人員完成的。在現(xiàn)在自動化測試中,自動化人員和測試人員不再進行區(qū)分,但是數(shù)據(jù)驅(qū)動的思想一直都在使用。

  • 關鍵字驅(qū)動

關鍵字驅(qū)動,就是把代碼映射成關鍵字。

在對登陸功能進行測試的時候,你需要做如下幾件事情:

1) 準備相關數(shù)據(jù)

2) 發(fā)出登陸指令

3) 校驗登陸結(jié)果

上述每一步都對應一段代碼,它們都屬于關鍵字。在關鍵字驅(qū)動的自動化測試中,很多人包括我都傾向于“將一個流程作為一個指令,將流程中所涉及的所有可變因素作為指令的參數(shù)暴露”。登陸URL、用戶名、密碼都是登陸指令的參數(shù),流程封裝好了,就可以反復的進行使用。

  • 行為驅(qū)動

行為驅(qū)動中的行為,就是在一段時間內(nèi)一直被炒熱的BDD種的B(ehaviour)。它講求的是根據(jù)用戶的行為來驅(qū)動測試的實現(xiàn),還是以登陸場景為例:用戶打開頁面,輸入賬號和密碼,提交,然后校驗登陸的結(jié)果。有了這些個場景(用例),測試人員就可以開始測試(手動測試或者實現(xiàn)測試代碼)。

始終要遵循的兩個準則:1.測試數(shù)據(jù)與測試實現(xiàn)分離;2.封裝流程,將流程中涉及的所有可變因素作為參數(shù)暴露

關鍵字驅(qū)動 vs 行為驅(qū)動:描述文件的定義先后順序問題。行為驅(qū)動是先定義描述文件,然后產(chǎn)品人員與測試人員審核,腳本開發(fā)人員根據(jù)描述文件實現(xiàn)代碼;關鍵字驅(qū)動,是腳本開發(fā)人員先去寫好代碼,然后把代碼方法的關鍵字給定義后,再給產(chǎn)品人員和測試人員審核。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容