手機(jī)版WPS 手機(jī)版wps免費(fèi)下載
2022-11-29
更新時(shí)間:2022-04-03 14:42:17作者:未知
在當(dāng)前靜態(tài)分析技術(shù)對于分析算法有著重要的影響,由于其方法比較復(fù)雜這就出現(xiàn)了精度不高,因此本文針對在靜態(tài)分析中存在的實(shí)際問題進(jìn)行具體的研究,能夠從其問題中提出改進(jìn)的方案,并且采用動(dòng)態(tài)分析技術(shù)構(gòu)造Java程序的動(dòng)態(tài)調(diào)用圖,文章中采用k-類方法后向切片計(jì)算修改影響的集合,之進(jìn)行具體的試驗(yàn),提高了精度,該技術(shù)的革新便于在大型Java程序中進(jìn)行應(yīng)用,改善了測試效果。
由于大部分軟件是面向?qū)ο蠓椒ň帉?,逐漸的形成了回歸測試技術(shù),面向技術(shù)中,其對象之間是一種繼承和組合的關(guān)系,并且各個(gè)對象之間是通過消息相互影響的,本文在研究影響分析算法中,是在程序靜態(tài)分析技術(shù)的基礎(chǔ)上進(jìn)行的,針對其中存在的問題以及在靜態(tài)分析中精度不高的現(xiàn)狀具體的改善,研究出了動(dòng)態(tài)分析技術(shù)構(gòu)造程序的類成員防火墻,提高了分析精度,同時(shí)降低了計(jì)算的復(fù)雜程度,這樣就促進(jìn)了修改影響分析技術(shù)的應(yīng)用效果。
1 基于動(dòng)態(tài)信息的修改影響
為了提高計(jì)算的精度,改善計(jì)算的復(fù)雜程序,這就提出了動(dòng)態(tài)信息的修改影響分析,首先在獲得動(dòng)態(tài)信息中,一般需要在程序中插樁,促進(jìn)程序能夠正常的將信息進(jìn)行輸出,這就需要在設(shè)計(jì)中將編譯后的Java字節(jié)碼程序插樁,然而本文在實(shí)施的過程中采用的是將每個(gè)方法插樁,來記錄調(diào)用信息,在設(shè)計(jì)中其動(dòng)態(tài)信息的修改影響分析的原理是:如圖1所示,在進(jìn)行插樁后的Java程序設(shè)計(jì)中,能夠根據(jù)輸出執(zhí)行軌跡信息并且構(gòu)造出動(dòng)態(tài)調(diào)用圖,然后進(jìn)行修改影響分析,最終得出需要重新測試的模塊,保障了高效的回歸測試。
2 動(dòng)態(tài)信息調(diào)用圖的設(shè)計(jì)
由于軟件測試在開銷中應(yīng)用的范圍比較廣,這就提出了軟件回歸測試,其中該軟件是指針對修改之后的軟件進(jìn)行測試,然后需要達(dá)到修改后能夠完成新的功能測試,并且在修改之后能否引入新的錯(cuò)誤。但是在設(shè)計(jì)的過程中由于各個(gè)程序之間的元素關(guān)系比較復(fù)雜,這就需要在設(shè)計(jì)中提出詳細(xì)的分析方法,能夠使其在使用中對于整個(gè)程序進(jìn)行重新測試,從此注重軟件的后期開發(fā)以及軟件的維護(hù)階段,能夠頻繁并且在少量修改的狀態(tài)下使用軟件,在使用中每次修改時(shí)都要重新運(yùn)行全部的測試,這就導(dǎo)致了軟件開發(fā)和維護(hù)的效率比較低,這種形式就是修改影響分析。因此在修改影響分析中其主要的目的是提高測試的效率,降低測試的費(fèi)用,簡化測試的程序,本文提出了動(dòng)態(tài)信息的修改設(shè)計(jì),采用的是動(dòng)態(tài)信息調(diào)用圖,對程序中函數(shù)調(diào)用關(guān)系的一種靜態(tài)描述,節(jié)點(diǎn)表示的是具體的函數(shù)關(guān)系,邊表示的是函數(shù)之間的調(diào)用關(guān)系,由于虛函數(shù)主要是針對函數(shù)調(diào)用點(diǎn)來研究的,因此在設(shè)計(jì)中必須要根據(jù)運(yùn)行時(shí)接受對象的實(shí)際類型以及確定出函數(shù)調(diào)用的目標(biāo)之后具體進(jìn)行,當(dāng)遇到如果在編譯期對虛函數(shù)調(diào)用點(diǎn)時(shí)采用的是不同靜態(tài)處理的方式,這種處理方式是通過靜態(tài)分析來構(gòu)建函數(shù)調(diào)用圖,并且在程序的設(shè)計(jì)中進(jìn)行實(shí)際的函數(shù)調(diào)用分析,建立一定的模擬器程序函數(shù)調(diào)用圖來分析,但是針對虛函數(shù)調(diào)用點(diǎn)在應(yīng)用中,需要在靜態(tài)調(diào)用圖不精確的結(jié)果。
然而本文在研究動(dòng)態(tài)調(diào)用圖中,將其作為一種修改影響分析的對象,并且給予靜態(tài)調(diào)用圖的基礎(chǔ)上進(jìn)行,在程序的設(shè)計(jì)中將其從程序執(zhí)行的動(dòng)態(tài)信息中構(gòu)造調(diào)用圖,直接從程序中進(jìn)行,該技術(shù)采用的是執(zhí)行信息,然后修改之后的精度卻比靜態(tài)調(diào)用圖高,在簡化了程序中,提高了效率。動(dòng)態(tài)調(diào)用圖在設(shè)計(jì)中,重點(diǎn)是對構(gòu)造算法具體確定,在確定出具體的節(jié)點(diǎn)以及邊的信息之后,根據(jù)節(jié)點(diǎn)來將軌跡中記錄的調(diào)用信息加入動(dòng)態(tài)調(diào)用圖中,在實(shí)施的過程中采用先進(jìn)后出的方式進(jìn)行,在遇到了標(biāo)志為in的節(jié)點(diǎn)后,將其表示的方法被調(diào)用,然后將算法從所有的軌跡中提出出來,并且將調(diào)用的信息構(gòu)造出新的動(dòng)態(tài)調(diào)用圖。
3 修改影響分析算法
通過分析設(shè)計(jì),最終得出了動(dòng)態(tài)調(diào)用圖,然后進(jìn)行修改影響分析,在后向切片來計(jì)算修改影響集合過程。在定義為k-類方法后向切片,然后令E是一個(gè)程序,并且將給定的切片準(zhǔn)則確定,在設(shè)計(jì)中具體的規(guī)定,其中具體的算法是:當(dāng)BSLice(E)m,k={m′|(m′→km)∈DCG},m′→k,m是m′到m中存在著一條長度是k的可達(dá)路徑,并且m′屬于切片集合,當(dāng)且僅當(dāng)m′在動(dòng)態(tài)調(diào)用圖中存在著一條長度是k的可達(dá)路徑到達(dá)m。然而在設(shè)計(jì)中,后切片是BSLice(E)m中的元素與m是調(diào)用關(guān)系,將修改影響分析設(shè)定為:當(dāng)m′調(diào)用m,那么m的修改影響分析就會(huì)影響到m′,但是m′卻不會(huì)影響到m,其中k表示的是調(diào)用層次對修改的影響關(guān)系,當(dāng)與 靠近時(shí),其中產(chǎn)生的影響關(guān)系就比較大,之后設(shè)定的k層之后就不會(huì)影響。但是在BSLice(E)m,k中,其計(jì)算方法是標(biāo)準(zhǔn)的圖,最終可達(dá)到算法,在修改之后達(dá)到了影響集合的效果,這就形成了修改影響分析技術(shù)。將其算法表示為:
輸入:動(dòng)態(tài)信息調(diào)用圖,被修改的方法是集合M,并且調(diào)用層是k;
輸出:修改影響集合是affectedM
For each mi∈M do|
affectedM=affectedM∪BSLice(E)m,k
通過具體的算法設(shè)計(jì),將Java程序進(jìn)行研究,進(jìn)行引入錯(cuò)誤,設(shè)定k=4之后,進(jìn)行新測試方法,通過程序開發(fā)人員和測試人員具體設(shè)定的。具體的試驗(yàn)結(jié)果如表1:
程序 方法/個(gè) 修改的方法數(shù)量/個(gè) 修改影響集合的大小 遺漏的需要重新測試的方法數(shù)量/個(gè)
TK-simulate 543 6 35 1
Automata-Graph 742 5 52 2
通過上述實(shí)驗(yàn)結(jié)果表明:在使用動(dòng)態(tài)信息調(diào)用圖中,能夠改善修改影響分析的效率,并且提高了使用的價(jià)值,在該軟件的設(shè)計(jì)以及應(yīng)用中提高了測試的效率。
4 結(jié)束語
通過分析軟件回歸測試,進(jìn)行修改之后實(shí)施測試,當(dāng)遇到了沒有分析方法時(shí),需要對設(shè)計(jì)修改之后的軟件進(jìn)行重新測試,避免軟件在開發(fā)以及維護(hù)中受到影響,因此針對這種現(xiàn)狀,改善了精度不高以及靜態(tài)分析中存在的不足,結(jié)果構(gòu)造出了Java程序的動(dòng)態(tài)調(diào)用圖,為促進(jìn)我國大型Java程序測試的具體應(yīng)用做出了有效的保障,提高了軟件的應(yīng)用效果。