新岳乱合集目录500伦_在教室里被强h_幸福的一家1—6小说_美女mm131爽爽爽作爱

免費(fèi)咨詢電話:400 180 8892

您的購(gòu)物車(chē)還沒(méi)有商品,再去逛逛吧~

提示

已將 1 件商品添加到購(gòu)物車(chē)

去購(gòu)物車(chē)結(jié)算>>  繼續(xù)購(gòu)物

您現(xiàn)在的位置是: 首頁(yè) > 免費(fèi)論文 > 會(huì)計(jì)論文 > 基于軟件架構(gòu)的回歸測(cè)試

基于軟件架構(gòu)的回歸測(cè)試

1 回歸測(cè)試背景
  首先由于軟件總在時(shí)刻變化著,軟件的不斷演化,例如軟件的開(kāi)發(fā)、維護(hù)、升級(jí)都需要修改一些軟件的結(jié)構(gòu)和代碼,而人類對(duì)軟件的要求也從未停止過(guò)。軟件的每次改變都會(huì)引入潛在的風(fēng)險(xiǎn),這是軟件演化的缺陷。其次,人類對(duì)軟件變化有了一些新的要求,關(guān)心軟件修改后的功能是否達(dá)到預(yù)期以及原有的功能是否被損害[1-3]。
  針對(duì)以上要求,選擇使用回歸測(cè)試來(lái)解決?;貧w測(cè)試是一種驗(yàn)證已變更系統(tǒng)的完整性與正確性的測(cè)試技術(shù)。
 ?。?回歸測(cè)試的定義及意義
  回歸測(cè)試是對(duì)之前已測(cè)試過(guò)、經(jīng)過(guò)修改的程序進(jìn)行重新測(cè)試,以保證該修改沒(méi)有引入新的錯(cuò)誤或者由于更改而發(fā)現(xiàn)之前沒(méi)有發(fā)現(xiàn)的錯(cuò)誤。
  回歸測(cè)試的意義是:(1) 保證軟件維護(hù)時(shí)未更改的代碼功能不會(huì)受到影響。(2) 保證軟件模塊區(qū)域和持續(xù)維護(hù)過(guò)程與回歸測(cè)試的協(xié)作關(guān)系,使得回歸測(cè)試成為一個(gè)每月、每周、每日的常規(guī)活動(dòng)。(3) 實(shí)現(xiàn)軟件整個(gè)生命周期的測(cè)試。
 ?。?回歸測(cè)試
  首先簡(jiǎn)單介紹傳統(tǒng)的基于代碼的回歸測(cè)試選擇方法的作用,以便了解軟件架構(gòu)回歸測(cè)試選擇方法的基礎(chǔ)。關(guān)注于選擇性的回歸測(cè)試方法,然后再重新采用相同的邏輯步驟來(lái)提出一種基于軟件架構(gòu)的回歸測(cè)試方法(在第四部分提出)。
  回歸測(cè)試的目的在于驗(yàn)證修改的軟件并確定不會(huì)在先前測(cè)試的代碼中出現(xiàn)新的錯(cuò)誤。傳統(tǒng)的方法是把它分解為兩個(gè)階段。(1) 測(cè)試軟件P相對(duì)于一種指定的測(cè)試集T。(2) 當(dāng)推行了一種新版本P′時(shí),對(duì)已修改的版本P′的回歸測(cè)試提出P′相對(duì)于測(cè)試組T′是正確的可靠性。
  在最簡(jiǎn)單的回歸測(cè)試方法中,有一種叫做復(fù)制所有的測(cè)試。T′中包含T中的所有在T中的測(cè)試用例,并且P′ 運(yùn)行在T′上。在回歸測(cè)試選擇方法上,T′被選出作為一種跟T相關(guān)的子集,假設(shè)有t∈T,t包含于T′,如果它有可能在P′中生成的結(jié)果與在P中不同。對(duì)不同回歸測(cè)試選擇方法的實(shí)證研究和分析在文獻(xiàn)[4]中提出,加上對(duì)不同行為的識(shí)別需求。
  本文著重研究如何為P′選擇一種相關(guān)的測(cè)試用例子集,又叫做回歸測(cè)試選擇問(wèn)題,描述一種回歸測(cè)試選擇方法,它是在軟件架構(gòu)層面上而不是在代碼層面上。換句話說(shuō),用選擇架構(gòu)化的層面測(cè)試用例代替選擇代碼層面的測(cè)試用例。
  4 基于軟件架構(gòu)的回歸測(cè)試
  基于軟件架構(gòu)的回歸測(cè)試包含以下兩個(gè)階段:(1) 基于軟件架構(gòu)的測(cè)試。特別地,應(yīng)用一種基于軟件架構(gòu)的一致性測(cè)試方法。(2) 基于軟件架構(gòu)的回歸測(cè)試選擇。這個(gè)階段被分解以滿足目的1和目的2。
  圖1總結(jié)了基于軟件架構(gòu)一致性和回歸測(cè)試所需要的行為。本文主要研究基于軟件架構(gòu)的回歸測(cè)試。
 ?。矗?基于軟件架構(gòu)的一致性測(cè)試
  這項(xiàng)工作是基于軟件架構(gòu)一致性測(cè)試的一般框架的,目的是測(cè)試已給出的軟件架構(gòu)實(shí)施的一致性。
  這個(gè)框架分為5個(gè)步驟,如圖1中間的部分所示。
  第0步:它開(kāi)始于軟件架構(gòu)規(guī)范的拓?fù)鋵W(xué)和行為學(xué),這里的行為通過(guò)一種基于機(jī)器的形式體系狀態(tài)來(lái)模仿。下面,利用標(biāo)簽的過(guò)渡(LTS)來(lái)模仿組件的行為。
  第1步:提出了一個(gè)通過(guò)觀測(cè)得到的方法為了實(shí)現(xiàn)一種測(cè)試標(biāo)準(zhǔn),這種標(biāo)準(zhǔn)來(lái)源于與測(cè)試目的相關(guān)視角在軟件架構(gòu)中,而是把無(wú)關(guān)的行為從這個(gè)視角中隱藏起來(lái)。標(biāo)簽的過(guò)渡(LTS)模型被提取出來(lái),就產(chǎn)生了一種抽象標(biāo)簽的過(guò)渡(ALTS),用來(lái)說(shuō)明只有這樣高層的行為/組件是需要測(cè)試的。
  第2步:一種基于架構(gòu)層面的測(cè)試用例(ATC)以架構(gòu)事件的有序序列被定義了,這種事件是當(dāng)一個(gè)確定的初始事件執(zhí)行的時(shí)候期望發(fā)生的架構(gòu)事件。此定義分解為兩個(gè)關(guān)鍵詞:行為序列,它代表了所期望的行為和初始事件,它是允許發(fā)生的結(jié)構(gòu)化輸入。獲得一個(gè)ATCs充分集合需要得到一個(gè)合適的包含了ALTS完整路徑的集合[5]。
  第3步:自然地,這樣的ATCs與可執(zhí)行的代碼層面測(cè)試用例截然不同,因?yàn)樵谲浖軜?gòu)和代碼之間的差距。處理這個(gè)問(wèn)題通過(guò)一種“繪圖”方法,它能夠?qū)④浖用婧瘮?shù)的測(cè)試轉(zhuǎn)化為代碼層面測(cè)試用例。
  第4步:最后,代碼運(yùn)行在可識(shí)別的測(cè)試用例上。通過(guò)分析執(zhí)行的蹤跡來(lái)決定系統(tǒng)在所選擇的結(jié)構(gòu)測(cè)試中實(shí)施得是否正確,采用結(jié)構(gòu)化的模型作為一種測(cè)試數(shù)據(jù)庫(kù)來(lái)識(shí)別代碼用例成功或失敗。
  這樣的方法已經(jīng)得到公認(rèn),但是重復(fù)的測(cè)試行為對(duì)于系統(tǒng)的發(fā)展而言無(wú)疑花銷太大了,因此需要以更少花銷開(kāi)發(fā)一種基于軟件架構(gòu)的測(cè)試方法。本文提出一種方法來(lái)處理系統(tǒng)的發(fā)展,重復(fù)使用原始的測(cè)試結(jié)果來(lái)重新測(cè)試已修改的結(jié)構(gòu)并以更少的花銷來(lái)完成。
 ?。矗?目的1:測(cè)試對(duì)于初始軟件架構(gòu)P′的一致性
  讓假設(shè)基于軟件架構(gòu)一致性的測(cè)試已經(jīng)提出P符合已給出的軟件架構(gòu)的一致性。當(dāng)P進(jìn)化到P′之后,如何來(lái)測(cè)試P′對(duì)于相同架構(gòu)的一致性。采用的方法是將基于軟件架構(gòu)測(cè)試方法和現(xiàn)存的基于代碼的回歸測(cè)試方法相融合的。通過(guò)一種行為圖表,代碼層面的回歸測(cè)試能夠與基于軟件層面的一致性測(cè)試相融合來(lái)選擇一個(gè)新的測(cè)試套組T′:



 ?。粒?產(chǎn)生圖表P,大多數(shù)普通的用于代碼回歸測(cè)試的方法是為了通過(guò)圖表來(lái)結(jié)構(gòu)化地表達(dá)P。在修改之后,P′也被描述成一張圖表。在軟件架構(gòu)中,圖表也通過(guò)組合成分行為的LTS模型來(lái)獲得,同時(shí)在結(jié)構(gòu)中結(jié)構(gòu)化那些成分組織。
 ?。拢喊眩牵泻停牵小湎啾容^,在基于回歸測(cè)試的傳統(tǒng)代碼中,通過(guò)比較P和P′的代碼圖表,識(shí)別代碼的改變?cè)鯓佑绊懙綀D表中。在軟件架構(gòu)中,這種改變根據(jù)在LTS中節(jié)點(diǎn)和邊來(lái)識(shí)別。
 ?。茫河涗浉采w范圍,通過(guò)測(cè)試用例的執(zhí)行測(cè)試歷史記錄被構(gòu)建出來(lái)。通過(guò)測(cè)試用例在P上執(zhí)行代碼的過(guò)程,記錄一連串的節(jié)點(diǎn)/電弧。
 ?。模簻y(cè)試用例選擇P′。從測(cè)試歷史和圖表比較中積累的信息被應(yīng)用于識(shí)別將要在P′中再次運(yùn)行的T中的測(cè)試用例。如果在t∈T中P的執(zhí)行包含了在P′中修改的節(jié)點(diǎn),那么t需要在P′中重新運(yùn)行。
  一旦T′被選擇了,t′∈T′就在P′中運(yùn)行并把結(jié)果收集起來(lái),然后和一種數(shù)據(jù)庫(kù)相比較來(lái)確定測(cè)試是失敗還是成功。與基于傳統(tǒng)代碼方法的一種主要的區(qū)別是,在基于軟件架構(gòu)回歸測(cè)試的數(shù)據(jù)庫(kù)是軟件結(jié)構(gòu)自己本身。事實(shí)上,當(dāng)t′在P′中運(yùn)行的時(shí)候,如果它的執(zhí)行不允許所期望的情況再次出現(xiàn),那么測(cè)試會(huì)失敗。更多情況,代碼層面的測(cè)試用例總是被形式化的函數(shù)和結(jié)構(gòu)化的需求驅(qū)動(dòng)得很好。
  期望從這個(gè)方法中得到的好處有兩層:(1) 作為傳統(tǒng)的回歸測(cè)試,為P′減少了測(cè)試套組的規(guī)模,剪掉了所有在P′中不需要被再次應(yīng)用的那些測(cè)試。(2) 當(dāng)發(fā)現(xiàn)了一致性錯(cuò)誤的時(shí)候,能夠搜集關(guān)于如何來(lái)適應(yīng)初始架構(gòu)的信息。
  4.3 目的2:測(cè)試進(jìn)化得到的架構(gòu)的一致性
  讓再次假設(shè)基于軟件架構(gòu)一致性測(cè)試已經(jīng)聲明了P的實(shí)施應(yīng)符合已給出的軟件架構(gòu)。采用的方法是根據(jù)比較兩者的架構(gòu)的規(guī)范來(lái)識(shí)別軟件結(jié)構(gòu)改變/未改變的位置。結(jié)構(gòu)和行為的改變都被考慮在內(nèi)。特別的,對(duì)于S和S″的LTSs被比較之后的區(qū)別通過(guò)兩張圖表(利用一種“diff”算法)來(lái)識(shí)別。在一次與基于回歸測(cè)試傳統(tǒng)代碼相似的改革中,無(wú)論什么時(shí)候一個(gè)ATC在S″中被修改的LTS軟件架構(gòu)中遍歷一次的時(shí)候,它需要在S″中重新測(cè)試。圖1(最左邊)總結(jié)了目的2如何通過(guò)不同的行為被意識(shí)到。
 ?。幔?新的軟件架構(gòu)規(guī)則。演變的系統(tǒng)S″被結(jié)構(gòu)化的規(guī)則提出。
 ?。猓?測(cè)試標(biāo)準(zhǔn)。測(cè)試標(biāo)準(zhǔn)(之前應(yīng)用在S中)被用在S″上。
 ?。悖?比較。架構(gòu)的規(guī)則與識(shí)別出的拓?fù)涓淖兿啾容^(也就是增加的/刪除的組件或修改的配置)和行為的改變(也就是經(jīng)過(guò)改變的部件)
 ?。洌簽椋印暹x擇結(jié)構(gòu)化的測(cè)試用例。那些來(lái)自于軟件架構(gòu)的被結(jié)構(gòu)的改變影響的ATCs被選擇在P″上重新測(cè)試,為了S″的實(shí)施。注意到任何在這步丟棄的ATC都可以代表很多被消除的代碼層面的測(cè)試用例,因此很大程度上減少了重復(fù)測(cè)試的花銷。
  e: 識(shí)別代碼層面測(cè)試用例。一旦已經(jīng)識(shí)別了需要用在S″中的回歸測(cè)試ATCs,為了S″需要把架構(gòu)的測(cè)試用例轉(zhuǎn)化到代碼層面的測(cè)試用例,以便為了P″選擇T″。這一步類似于在第三步中基于軟件架構(gòu)的測(cè)試。
 ?。妫?測(cè)試執(zhí)行。在T″已經(jīng)被S″選擇之后,需要在P″中運(yùn)行T″然后評(píng)估執(zhí)行基于軟件架構(gòu)回歸測(cè)試的結(jié)果。這一步跟第四步中基于軟件架構(gòu)的測(cè)試很相似。

服務(wù)熱線

400 180 8892

微信客服