freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于圖形遍歷算法的回歸測試方法的研究以及應用碩士學位論文-資料下載頁

2025-06-19 12:58本頁面
  

【正文】 時,遍歷的節(jié)點對都是一一對應的,沒有出現(xiàn)位置偏差。但是遍歷至節(jié)點D時,問題出現(xiàn)了。D在新的程序中已經(jīng)被刪除。因此,當左圖遍歷至節(jié)點D時,右圖實際上已經(jīng)到達了節(jié)點E,那么實際進行比較的節(jié)點對是左圖的D和右圖的E。但是正確的情況應該是,用左圖的節(jié)點D和右圖的空節(jié)點進行比較,發(fā)現(xiàn)D被刪除,接著一起遍歷至節(jié)點E。從這個例子可以看出,如果在一條通路上增加或減少一個節(jié)點,使用廣度優(yōu)先對比將導致被比較的節(jié)點對發(fā)生偏差,導致之后的節(jié)點對比較都是無效的比較。 廣度優(yōu)先對比若使用深度優(yōu)先對比算法。首先從節(jié)點A開始遍歷并對比,接著遍歷至節(jié)點B、節(jié)點C。至此時,遍歷的節(jié)點對都是一一對應的,遍歷過程一切順利。但是遍歷至節(jié)點D時,發(fā)現(xiàn)左圖的D節(jié)點是正常的語句節(jié)點,而右圖的當前節(jié)點E是終結符節(jié)點(終結符節(jié)點即控制語句的出口節(jié)點,后面會有詳細介紹)。這說明當前遍歷的通路中,有一個節(jié)點被刪除了。為了重新獲得同步,可以繼續(xù)遍歷左圖一直到發(fā)現(xiàn)終結符節(jié)點。此時,兩幅圖的遍歷又能保持一致了。 深度優(yōu)先對比綜上,作者選用深度優(yōu)先比較算法進行修改點的解析。(二)修改點檢測算法在對兩個控制流圖進行比較時,根據(jù)深度優(yōu)先對比算法,使用“邊遍歷邊比較”的方式,成對比較兩幅控制流圖的當前節(jié)點。即分別從兩個控制流圖的入口節(jié)點開始遍歷,并比較其對應的抽象語法樹信息是否相同(變量、常量、運算符)。若相同,則判斷其后繼結點的信息是否相同,若找到抽象語法樹信息不同的節(jié)點,分析其修改情況是否符合有效修改,若是,則加入修改點集合中。以下為該方法的步驟:1. 備份代碼修改前的控制流圖CFG1,并生成代碼修改后的控制流圖CFG2;被測單元在單元測試過程中,通過靜態(tài)分析獲得了對應的抽象語法樹。由抽象語法樹,進一步獲得對應的控制流圖。因此,控制流圖的節(jié)點包含了代碼對應的表達式信息。為了避免在代碼修改后由于重新進行靜態(tài)分析,而導致原控制流圖丟失,需要將代碼修改前的控制流圖進行備份,記為CFG1。當確認代碼修改完成時,系統(tǒng)對新代碼重新進行靜態(tài)分析,得到新的控制流圖,記為CFG2。此時,被測單元一共有兩個控制流圖,一個是單元測試時的控制流圖CFG1,另一個是開發(fā)人員對代碼進行修改后的控制流圖CFG2。這兩個控制流圖完整的保存了代碼修改前后的程序結構與代碼信息。2. 將CFG1和CFG2的入口節(jié)點作為當前節(jié)點對,分別記作NN2。3. 根據(jù)控制流圖產(chǎn)生時的節(jié)點序號順序,分別取當前節(jié)點對(NN2)的后繼節(jié)點作為當前節(jié)點對,即NN2的值被更新。若NN2都為程序終結符節(jié)點,則遍歷結束,否則進入步驟4;4. 比較當前節(jié)點對:1) 如果當前節(jié)點對中的兩個節(jié)點都不為終結符節(jié)點,則比較當前節(jié)點對中每個節(jié)點包含的抽象語法樹信息,即對應的表達式中的常量、變量、運算符信息,若這些信息都相同則執(zhí)行步驟A2;若不同,且當前節(jié)點被判定為有效修改節(jié)點,加入修改點集合中。2) 如果CFG1的節(jié)點N1為終結符節(jié)點,CFG2的節(jié)點N2為普通節(jié)點,則說明N2是修改后新增的,把N1的父節(jié)點作為被修改節(jié)點,加入修改點集合中,跳至步驟5。,當遍歷至節(jié)點x的false分支時,CFG1中x的后繼節(jié)點為終結符節(jié)點,而CFG2中x的后繼結點為普通節(jié)點。這說明新增了節(jié)點。例如,當原程序增加了一個分支。當遍歷完x的真分支時,發(fā)現(xiàn)CFG1中x沒有假分支的后繼節(jié)點,而CFG2中卻有后繼結點。則把此后繼節(jié)點的父節(jié)點,即分支節(jié)點x作為修改點。3) 如果CFG1的節(jié)點N1為普通節(jié)點而CFG2的節(jié)點N2為終結符節(jié)點,則說明N1對應的代碼已被刪除,把N1作為被修改節(jié)點,加入修改點集合中,跳至步驟6。,當遍歷至節(jié)點x時,CFG1中x的后繼節(jié)點為普通節(jié)點,而CFG2中x的后繼結點為終結符節(jié)點。這說明刪除了節(jié)點。例如,從原程序中刪除一個分支。當遍歷至x時,發(fā)現(xiàn)CFG1中x有后繼節(jié)點,而CFG2中卻沒有后繼結點。則把CFG1中x的后繼節(jié)點作為修改點。需要說明的是,這里舉得例子是對分支節(jié)點的增刪,但本發(fā)明并不局限于此。任何非終結符節(jié)點的增刪都可適用。5. CFG1的節(jié)點N1為終結符節(jié)點,CFG2的節(jié)點N2為普通節(jié)點,則繼續(xù)深度遍歷CFG2,直到CFG2的節(jié)點也為終結符節(jié)點為止。將這兩個終結符節(jié)賦值給當前節(jié)點對。跳至步驟3。6. CFG1的節(jié)點N1為普通節(jié)點,CFG2的節(jié)點N2為終結符節(jié)點,則繼續(xù)深度遍歷CFG1,直到CFG1的節(jié)點也為終結符節(jié)點為止。將這兩個終結符節(jié)賦值給當前節(jié)點對。跳至步驟3。圖 N1為終結符節(jié)點,N2為普通節(jié)點的示例圖圖 N1為普通節(jié)點,N2為終結符節(jié)點的示例圖圖 計算修改點的流程圖下面給出“終結符節(jié)點”的準確定義。終結符節(jié)點是某一些控制語句的出口節(jié)點。,控制語句有以下分類:1. 條件語句:if,ifelse等方式的嵌套:2. 開關語句:switch3. 循環(huán)語:for,while,dowhile4. 跳轉(zhuǎn)語句:goto,break5. 返回語句:return除了跳轉(zhuǎn)語句,其他語句都有一個執(zhí)行體。例如,if條件成立時,會執(zhí)行相應的操作,這些操作通常被放在一個大括號中;switch語句也有自己的執(zhí)行體,由一系列case關鍵字和其他語句組成。在控制流圖中,一個控制語句關鍵字就擁有一個控制語句終結符,類似于被測單元有程序入口也有程序出口,以顯式表示控制體的結束。這一類節(jié)點的命名方法通常是“控制關鍵字_out_節(jié)點序號”,如if_out_21。 確定測試切片 基本概念(一)靜態(tài)切片和動態(tài)切片程序切片技術是1979年由Mark Wciser在其博士論文中提出的一種重要程序分析和理解技術[39]。靜態(tài)切片使用靜態(tài)的數(shù)據(jù)流和控制流構造程序切片[40]。靜態(tài)切片的切片準則是語句點s及在s中出現(xiàn)的變量v。靜態(tài)切片遍歷程序的對應于s的所有執(zhí)行軌跡,主要應用于軟件理解和軟件維護領域。動態(tài)切片[41]使用動態(tài)的數(shù)據(jù)流和控制流分析法。它的切片結果依賴于程序中測試用例的具體值,取值不同就可能導致切片結果不同[41]。通過定義可知,靜態(tài)切片技術在分析出被測程序所有通路的基礎上,提取對程序某點的某個變量狀態(tài)造成影響的所有語句;而動態(tài)切片則是強調(diào)程序在某次特定執(zhí)行過程中影響變量在某點的狀態(tài)的所有語句。for(int i=0。 iMAX_CHANNEL。 i++){ pFrame[i]PlotPopupMenu = NULL。}MainFormUpdateStatus(Rc_msgPushSample, false)。if(CommDevPushSample()==ceOk ) { start_sample =true。}else{ SendErrorNum[3]++。 DisplayErrorNum()。 if(ExitSoft==false) { if(Stop_Measure_NOWarning==true) display_error(ecSendSamplingComStop)。 else display_error(ecSendSamplingComError)。for(int i=0。 iMAX_CHANNEL。 i++){ pFrame[i]PlotPopupMenu = NULL。}MainFormUpdateStatus(Rc_msgPushSample, false)。if(CommDevPushSample()==ceOk ) { start_sample =false。}else{ SendErrorNum[3]++。 DisplayErrorNum()。 if(ExitSoft==false) { if(Stop_Measure_NOWarning==true) display_error(ecSendSamplingComStop)。 else display_error(ecSendSamplingComError)。 }MeasureEnable(true)。ScreenCursor = crDefault。return。}靜態(tài)切片與動態(tài)切片的示例如下(切片準則為start_sample): 靜態(tài)切片(左)與動態(tài)切片(右)(二)前向切片和后向切片隨著軟件開發(fā)的不斷擴展,軟件測試也在不斷發(fā)展,相應的應用在軟件測試當中的切片技術也在不斷地發(fā)展,切片技術包括前向切片和后向切片。假設切片準則為s,v,指的是s語句處的v變量。前向切片是指將所有因變量v在s處取值受到影響的語句和謂詞集合在一起。而后向切片相反,它將所有影響了變量v在s處取值的語句和謂詞集合在一起。for(int n=0。 nint_time。 n++){if( tbgNone){ SeriesChartSeries[s_index]AddXY(count, aa_array[i][n]bg_array[i][n], , ColorList[][%10])。 SeriesChartSeries[s_index+1]AddXY(count, aa_array[i][n], , ColorList[][%10])。 SeriesChartSeries[s_index+2]AddXY(count, bg_array[i][n], , ColorList[][%10])。 } else{ SeriesChartSeries[s_index]AddXY(count, aa_array[i][n], , ColorList[][%10])。 } if( == tmmGrap){ SeriesChartSeries[s_index+3]AddXY(count, temp_array[i][n], , ColorList[][%10])。 } count ++。}} for(int i=0。 iSeriesChartSeriesListCount。 i++){ if(SeriesChartSeries[i]Tag==1 || SeriesChartSeries[i]Tag==2){ SeriesChartSeries[i]Active = !=tbgNone?true:false。 } if(SeriesChartSeries[i]Tag == 3){ SeriesChartSeries[i]Active = false。//==tmmGrap?true:false。 } }for(int n=1。 nint_time。 n++){ if( tbgNone){ SeriesChartSeries[s_index]AddXY(count, aa_array[i][n]bg_array[i][n], , ColorList[][%10])。 SeriesChartSeries[s_index+1]AddXY(count, aa_array[i][n], , ColorList[][%10])。 SeriesChartSeries[s_index+2]AddXY(count, bg_array[i][n], , ColorList[][%10])。 } else{ SeriesChartSeries[s_index]AddXY(count, aa_array[i][n], , ColorList[][%10])。 } if( == tmmGrap){ SeriesChartSeries[s_index+3]AddXY(count, temp_array[i][n], , ColorList[][%10])。 } count ++。}} for(int i=0。 iSeriesChartSeriesListCount。 i++){ if(SeriesChartSeries[i]Tag==1 || SeriesChartSeries[i]Tag==2){ SeriesChartSeries[i]Active = !=tbgNone?true:false。 } if(SeriesChartSeries[i]Tag == 3){ SeriesChartSeries[i]Active = false。//==tmmGrap?true:false。 } }前向切片與后向切片的示例如下(切片準則為n=1): 靜態(tài)切片(上)與動態(tài)切片(下)(三)單元回歸測試中的切片由于動態(tài)切片只適用于特定的運行過程,而回歸測試是需要測試各種可能出現(xiàn)的情況,所以不能采用動態(tài)切片的方法。而根據(jù)前向切片和后向切片的定義,可
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1