日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
自動(dòng)化測(cè)試框架分類與思考

自動(dòng)化測(cè)試一直是敏捷開(kāi)發(fā)和敏捷測(cè)試的重要基石,也是DevOps和CI/CD必不可少的組成部分。由于不同項(xiàng)目的測(cè)試需求不同,以及各種不同的限制,導(dǎo)致需要的自動(dòng)化測(cè)試框架和工具也不同。比如很多金融和能源類的企業(yè)就傾向于選擇收費(fèi)的企業(yè)級(jí)自動(dòng)化測(cè)試框架或者工具,而新型互聯(lián)網(wǎng)企業(yè)則傾向于開(kāi)源免費(fèi)的自動(dòng)化測(cè)試框架或者工具,或者基于它們進(jìn)行二次定制開(kāi)發(fā),或者重新開(kāi)發(fā)適合自己的自動(dòng)化測(cè)試框架、工具或者平臺(tái)。

創(chuàng)新互聯(lián)專注于石林企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。石林網(wǎng)站建設(shè)公司,為石林等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

我之前寫(xiě)過(guò)一篇文章——《自動(dòng)化測(cè)試框架Cucumber和RobotFramework的實(shí)戰(zhàn)對(duì)比》僅僅針對(duì)兩種自動(dòng)化測(cè)試框架進(jìn)行了討論,卻引發(fā)了大量的討論,由此可見(jiàn)業(yè)界對(duì)于自動(dòng)化測(cè)試框架存在很多不同的理解和爭(zhēng)議。在我看來(lái),沒(méi)有任何一個(gè)自動(dòng)化測(cè)試框架是銀彈,并且適合所有類型的測(cè)試,所以“如何選擇一款適合自己的測(cè)試框架”變成為了一個(gè)首要問(wèn)題。我將自動(dòng)化測(cè)試進(jìn)行了簡(jiǎn)單的分層,見(jiàn)下圖。

自動(dòng)化測(cè)試架構(gòu)分層圖

其中測(cè)試庫(kù)和被測(cè)系統(tǒng)緊密相關(guān),所以可以選擇的范圍不是很大,也很難進(jìn)行統(tǒng)一分類。而測(cè)試框架與被測(cè)系統(tǒng)關(guān)系并不緊密,而是和技術(shù)棧,開(kāi)發(fā)流程與組織管理等關(guān)系緊密相關(guān),并且種類繁多,可選擇范圍很多,所以選擇也相對(duì)比較困難。

因此對(duì)測(cè)試框架進(jìn)行統(tǒng)一分類可以更好的幫助團(tuán)隊(duì)選擇適合自己的測(cè)試框架,從而更好進(jìn)行自動(dòng)化測(cè)試開(kāi)發(fā)。

本文根據(jù)自動(dòng)化測(cè)試用例的呈現(xiàn)方式和管理方式將其分為四種類型:函數(shù)行,單領(lǐng)域語(yǔ)言型,多領(lǐng)域語(yǔ)言型以及富文檔型。

四個(gè)類型:

1. 函數(shù)型

函數(shù)型自動(dòng)化測(cè)試框架是第一代自動(dòng)化測(cè)試框架,也是最輕量的測(cè)試框架。它只是通過(guò)函數(shù)的方式來(lái)定義測(cè)試用例,并且通過(guò)管理這些函數(shù)的調(diào)用來(lái)管理測(cè)試用例,從而快速的實(shí)現(xiàn)自動(dòng)化測(cè)試,比如xUnit等。

例子JUnit:

 
 
 
 
  1. public class DemoTest {
  2.   @Test
  3.   public void testAddWithTwoNumbers() {
  4.     //測(cè)試實(shí)現(xiàn)代碼
  5.   }
  6. }

函數(shù)型自動(dòng)化測(cè)試框架由來(lái)已久,開(kāi)發(fā)快速,運(yùn)行穩(wěn)定。雖然它相對(duì)簡(jiǎn)單與輕量,但是也存在缺點(diǎn):很難通過(guò)函數(shù)名來(lái)描述測(cè)試用例的內(nèi)容和細(xì)節(jié),并且不方便對(duì)測(cè)試用例進(jìn)行單獨(dú)管理,因?yàn)闇y(cè)試用例的描述函數(shù)名和測(cè)試實(shí)現(xiàn)通常都在一起。

2. 單領(lǐng)域語(yǔ)言型

由于函數(shù)型的自動(dòng)化測(cè)試框架很難通過(guò)函數(shù)名去描述一個(gè)測(cè)試用例的內(nèi)容。為了更清晰和容易的描述測(cè)試用例,就出現(xiàn)了單DSL型的自動(dòng)化測(cè)試框架,比如RSpec,Jasmine,Mocha,RF等。

例子Jasmine:

 
 
 
 
  1. describe("The add function of the calculator can add two numbers", function() {
  2.   it("should get the sum after add two numbers", function() {
  3.     //測(cè)試實(shí)現(xiàn)代碼
  4.   });
  5. });

單領(lǐng)域語(yǔ)言型可以通過(guò)自然語(yǔ)言或者關(guān)鍵字形式的領(lǐng)域語(yǔ)言來(lái)描述測(cè)試用例,從而以一種更加易讀和理解的方式來(lái)描述測(cè)試用例。但是每個(gè)測(cè)試用例只用一句DSL語(yǔ)言,并不能很好的描述測(cè)試用例和被測(cè)場(chǎng)景,不易形成一套好的活文檔。由于它的測(cè)試用例與測(cè)試實(shí)現(xiàn)通常也是在一起的,所以也不方便對(duì)測(cè)試用例進(jìn)行單獨(dú)管理。

3. 多領(lǐng)域語(yǔ)言型

由于單DSL型框架中對(duì)于每個(gè)測(cè)試用例只能使用一句DSL來(lái)描述,并不能很好的體現(xiàn)測(cè)試用例場(chǎng)景,比如測(cè)試的前提,行為和結(jié)果等。為了能在測(cè)試用例層更為清晰的描述測(cè)試用例的行為和測(cè)試數(shù)據(jù)等型信息,出現(xiàn)了多領(lǐng)域語(yǔ)言型的自動(dòng)化測(cè)試框架,比如Cucumber,JBehave,SpecFlow,RF等。

例子Cucumber:

測(cè)試用例代碼

 
 
 
 
  1. Feature: The add function of the calculator can add two numbers
  2.   Scenario: add two numbers
  3.     Given there are two numbers  and 
  4.     When add these two numbers 
  5.     Then should get  of two numbers
  6.   Examples:
  7.     | Number 1 | Number 2 | Sum |
  8.     | 1        | 2        | 3   |
  9.     | -1       | 2        | 1   |

測(cè)試實(shí)現(xiàn)代碼

 
 
 
 
  1. Given(/^there are two numbers$/) do
  2.   //測(cè)試實(shí)現(xiàn)代碼
  3. end
  4. When(/^add two numbers together$/) do
  5.   //測(cè)試實(shí)現(xiàn)代碼
  6. end
  7. Then(/^should get sum of two numbers$/) do
  8.   //測(cè)試實(shí)現(xiàn)代碼
  9. end

多領(lǐng)域語(yǔ)言型的框架可以通過(guò)多句或者多個(gè)關(guān)鍵字的領(lǐng)域語(yǔ)言來(lái)描述一個(gè)特定的場(chǎng)景,使得測(cè)試用例更容易閱讀和理解,并且比較容易做成一套活文檔系統(tǒng)。由于測(cè)試用例和測(cè)試實(shí)現(xiàn)是分離的,還可以對(duì)測(cè)試用例進(jìn)行獨(dú)立管理。

但是缺點(diǎn)也是比較明顯的,開(kāi)發(fā)、管理和維護(hù)成本較高,并且如果沒(méi)有業(yè)務(wù)分析或者產(chǎn)品人員等非技術(shù)人員參與協(xié)作開(kāi)發(fā),那么它的投入產(chǎn)出比就很低,大家往往會(huì)認(rèn)為它是事倍功半。

4. 富文檔型

對(duì)于一些場(chǎng)景十分復(fù)雜,需要通過(guò)富文檔的方式來(lái)描述軟件測(cè)試場(chǎng)景,甚至需要一些業(yè)務(wù)流程圖或者系統(tǒng)用戶界面等,比如Concordion,F(xiàn)itnesse,Guage等。

例子 Condordion:

測(cè)試用例代碼,其中包含部分測(cè)試代碼,比如斷言等,其中concordion.css使用的是官方樣例代碼

 
 
 
 
  1.   
  2.     

    Test Demo

  3.     

     Test the add function of  the calculator can add two numbers 

  4.     

     The Caculator:

  5.     
      
  6.     
  7.       

    Examples

  8.       
  9.         
  10.           
  11.           
  12.           
  13.         
  14.         
  15.           1
  16.           2
  17.           3
  18.         
  19.         
  20.           -1
  21.           2
  22.           1
  23.         
  24.       
  25. Number 1 Number 2 Sum
  26.     
  •   
  • 測(cè)試用例呈現(xiàn)文檔:

    測(cè)試用例中的函數(shù)實(shí)現(xiàn)代碼:

     
     
     
     
    1. @RunWith(ConcordionRunner.class)
    2. public class CaculatorFixture {
    3.   public String addWithTwoNumbers(String number1, String number2) {
    4.     //測(cè)試實(shí)現(xiàn)代碼
    5.   }
    6. }

    (注:雖然說(shuō)最新版的Concordion已經(jīng)支持MarkDown了,從而降低了一些開(kāi)發(fā)成本,但是其對(duì)MarkDown的特性支持有待增加。所以如果需要更為豐富的文檔形式,仍然需要使用HTML來(lái)開(kāi)發(fā)測(cè)試用例。)

    富文檔型的框架比多領(lǐng)域語(yǔ)言型擁有更為豐富的文檔,更容易閱讀和理解,從而能做成說(shuō)明書(shū)式的活文檔,使得所有角色的人都能審閱。并且其測(cè)試用例和測(cè)試實(shí)現(xiàn)也是分離的。但是當(dāng)前業(yè)界存在的富文檔型測(cè)試框架的易用性和協(xié)作性都還不是很好,導(dǎo)致其開(kāi)發(fā),管理和維護(hù)成本相比前三種是最高的。并且當(dāng)沒(méi)有其它各個(gè)角色來(lái)協(xié)同開(kāi)發(fā),管理和維護(hù)時(shí),其投入產(chǎn)出比也是最低的,所以它在行業(yè)中的使用率也是很低的。這類測(cè)試框架在易用性和協(xié)作性方面還有很大的發(fā)展空間,并且也是自動(dòng)化測(cè)試框架和活文檔系統(tǒng)的一個(gè)重要的發(fā)展方向。

    思考與選擇

    自動(dòng)化測(cè)試的代碼實(shí)現(xiàn)層一般是與編程語(yǔ)言強(qiáng)相關(guān)的,而主流的編程語(yǔ)言比較少,所以選擇比較容易:一般建議選擇團(tuán)隊(duì)大部分成員都熟悉的編程語(yǔ)言(這樣可以促使整個(gè)團(tuán)隊(duì)來(lái)對(duì)自動(dòng)化測(cè)試進(jìn)行開(kāi)發(fā)和維護(hù))或者是有特定測(cè)試庫(kù)的編程語(yǔ)言(比如需要使用Scapy時(shí)就只能選擇基于Python的自動(dòng)化測(cè)試框架)。當(dāng)確認(rèn)自動(dòng)化測(cè)試開(kāi)發(fā)語(yǔ)言后,真正的問(wèn)題是如何在如此眾多的自動(dòng)化測(cè)試框架里面選擇合適自己的自動(dòng)化測(cè)試框架。選擇方法可以根據(jù)以上四種類型來(lái)進(jìn)行選擇,從而縮小選擇范圍。

    如果團(tuán)隊(duì)只是需要快速實(shí)現(xiàn)自動(dòng)化測(cè)試,沒(méi)有知識(shí)的傳遞問(wèn)題,也不需要與業(yè)務(wù)分析和產(chǎn)品經(jīng)歷等非技術(shù)人員進(jìn)行協(xié)作開(kāi)發(fā)時(shí),可以選擇函數(shù)型自動(dòng)化測(cè)試框架。

    如果為了解決知識(shí)傳遞問(wèn)題,讓測(cè)試用例更可讀和易懂,并且沒(méi)有非技術(shù)人員參與協(xié)作開(kāi)發(fā),這時(shí)可以選擇單領(lǐng)域語(yǔ)言型。

    如果為了進(jìn)一步解決和非技術(shù)人員協(xié)作開(kāi)發(fā)的問(wèn)題,并且想有一套簡(jiǎn)版的活文檔,可以選擇多領(lǐng)域語(yǔ)言型自動(dòng)化測(cè)試框架。

    如果為了讓測(cè)試用例擁有更為豐富的表現(xiàn)力,比如包含一個(gè)流程圖來(lái)說(shuō)明被測(cè)場(chǎng)景的流程,或者使用不同的格式或者表格來(lái)描述用例的細(xì)節(jié),以及擁有一套豐富的活文檔,這時(shí)就可以使用富文檔型。不過(guò)由于當(dāng)前的富文檔型測(cè)試框架在編寫(xiě)用例時(shí)需要一定的技能,所以非技術(shù)人員很難直接參與協(xié)作編寫(xiě)。并且其編寫(xiě)以及維護(hù)成本更高,可能使得自動(dòng)化測(cè)試開(kāi)發(fā)人員使用的意愿也不是很高。參考自動(dòng)化測(cè)試工具選項(xiàng)金字塔:

    當(dāng)確認(rèn)了測(cè)試框架類型之后,比如只有一個(gè)可選項(xiàng)(Java->函數(shù)型->JUnit),那么就直接使用了,但是如果存在多選項(xiàng)(JavaScript-> 單領(lǐng)域語(yǔ)言型->Jasmine vs Mocha),就還需要對(duì)其進(jìn)行深入比較,從而最終選擇自己適合的自動(dòng)化測(cè)試框架。

    【本文是專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號(hào):思特沃克,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】


    網(wǎng)頁(yè)題目:自動(dòng)化測(cè)試框架分類與思考
    文章出自:http://m.5511xx.com/article/dppcdse.html