《一種測(cè)試覆蓋分析方法與系統(tǒng)》的實(shí)踐和思考一

隨著年紀(jì)增長(zhǎng),記性越來(lái)越差,現(xiàn)在把之前寫(xiě)的專(zhuān)利《一種測(cè)試覆蓋分析方法與系統(tǒng)》的實(shí)踐、思考和技術(shù)實(shí)現(xiàn)過(guò)程記錄下來(lái),以便思考和學(xué)習(xí),繼續(xù)深入。

PS:想法基于“沖天炮”,主要邏輯寫(xiě)在Oracle Procedure存過(guò),具有一定的獨(dú)特(約束)性,但是實(shí)現(xiàn)的想法涉及很多方面的工具和技術(shù)。)

想法來(lái)源于一些項(xiàng)目需要:

1. 由于需求變更,需要表變更或者調(diào)整存過(guò),需手工梳理存過(guò)和修改的配置文件;

2. 由于“沖天炮”技術(shù)升級(jí),配合程序修改,需提供測(cè)試入口菜單;

3. 根據(jù)服務(wù)接口的登記情況,通知上下游修改;

4. 自動(dòng)化的測(cè)試腳本關(guān)聯(lián)程序。

“沖天炮”是一個(gè)非常棒(非前后端分離)的框架,易學(xué)好使實(shí)用,愧于本人水平所限,把基于“沖天炮”搭建的系統(tǒng)想象為這樣:

菜單程序鏈路圖.jpeg

然后根據(jù)XML的信息、程序內(nèi)容嵌套的“調(diào)用”關(guān)鍵字(forward、include、form等等),生成菜單程序鏈路。

開(kāi)始的實(shí)現(xiàn),通過(guò)啟發(fā)式的雙向?qū)挾葍?yōu)先搜索,發(fā)現(xiàn)程序鏈路圖的規(guī)模很大,菜單-程序-程序之間——多對(duì)多的網(wǎng)絡(luò)關(guān)系,當(dāng)時(shí)通過(guò)內(nèi)存和文件方式存儲(chǔ),一直無(wú)法滿(mǎn)足日常使用的需要。后來(lái)采用NoSQL的Neo4j存儲(chǔ)鏈路節(jié)點(diǎn),去重寫(xiě)鏈路生成和遍歷,效果滿(mǎn)足日常使用的需求。

此時(shí)得到一份菜單為入口的菜單程序鏈路圖,生成了所有菜單經(jīng)過(guò)的程序、存儲(chǔ)過(guò)程和涉及的表的關(guān)聯(lián)圖。該方法有局限性,純文本分析和XML解析,容易把多余的程序鏈路生成,改進(jìn)想法通過(guò)系統(tǒng)運(yùn)行的日志,還原菜單運(yùn)行過(guò)程中的程序鏈路。

為了實(shí)現(xiàn)測(cè)試覆蓋分析,想法是基于各種Guard系列(PageObject 模式)的自動(dòng)化測(cè)試框架,自動(dòng)生成自動(dòng)化腳本(Velocity實(shí)現(xiàn)),人工只需配置數(shù)據(jù)和斷言:

1)Oracle Procedure的存過(guò)單元測(cè)試;

2)底層是Java程序的系統(tǒng)內(nèi)部和外部調(diào)用接口;

3)菜單頁(yè)面的UI是基于Selenium和SikuliX的封fuzzer先建立測(cè)試案例,自動(dòng)化測(cè)試腳本與程序鏈路的關(guān)系(手動(dòng)),然后
捕捉到代碼變化(Java git tool)或者表結(jié)構(gòu)變化,便可完成通過(guò)菜單鏈路調(diào)用自動(dòng)化測(cè)試,同時(shí)測(cè)試覆蓋的統(tǒng)計(jì)依賴(lài)沖天炮自帶,jacoco,還有利器antrl。
實(shí)踐中,自動(dòng)化測(cè)試的能力得到擴(kuò)展:ui幫助實(shí)現(xiàn)ie兼容性測(cè)試;基于owasp的 top10 payloads實(shí)現(xiàn)接口測(cè)試和存過(guò)單元測(cè)試的安全能力;基于覆蓋率反饋和魯棒性的思考,引入了fuzzer data generator,提升測(cè)試覆蓋率,fuzzer的斷言非常不易,做過(guò)基于機(jī)器學(xué)習(xí)做數(shù)據(jù)分類(lèi)和結(jié)果聚類(lèi),在小的接口測(cè)試結(jié)果樣本沒(méi)有較好的準(zhǔn)確率, 大神指導(dǎo)過(guò)有深度學(xué)習(xí)的方法還沒(méi)嘗試;一直沒(méi)有了解基于AFL的測(cè)試覆蓋反饋?zhàn)鰂uzz 也沒(méi)完整用oss-fuzz做0day。
過(guò)程中,觀察到測(cè)試問(wèn)題反饋,需求描述,開(kāi)發(fā)進(jìn)度,項(xiàng)目質(zhì)量,測(cè)試覆蓋的關(guān)系,用jieba做了這些內(nèi)容的NLP,然后暴力knn,發(fā)現(xiàn)一些有趣的東西,但是模型是有問(wèn)題的,跟項(xiàng)目其他特征如工作量,人數(shù),關(guān)聯(lián)系統(tǒng)等特征來(lái)重建模型。
既然需要更多資源和語(yǔ)聊,特意用scrapy寫(xiě)了spider,基于itchat搭了一個(gè)基于規(guī)則的應(yīng)答機(jī)器人,本意是作為入口查看爬蟲(chóng)數(shù)據(jù),結(jié)果發(fā)現(xiàn)如果基于常見(jiàn)開(kāi)發(fā)測(cè)試運(yùn)維問(wèn)題做智能應(yīng)答,豈不美事,規(guī)則易建,智能難做。
待續(xù)…

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

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

  • 曾經(jīng)有個(gè)朋友告訴我:在對(duì)的時(shí)間來(lái)到對(duì)的地方遇見(jiàn)對(duì)的人就是幸福。 小李去年在利群超市地下開(kāi)了個(gè)賣(mài)衣服的小店。她以前...
    木子果兒閱讀 229評(píng)論 0 2
  • 十二月,南方的冬天來(lái)得很慢,像是貪玩的孩童流連在色彩斑斕的糖果店鋪,結(jié)果一轉(zhuǎn)頭才發(fā)現(xiàn)被時(shí)間遠(yuǎn)遠(yuǎn)地落在了后頭。亞熱帶...
    影落青苔閱讀 953評(píng)論 7 7
  • 2018年1月8號(hào) 這場(chǎng)雪期待了好久。 去年12月的某一天,下雪了,但不是我所想象中的那場(chǎng)雪,那場(chǎng)雪下...
    沐沐子手?jǐn)z記閱讀 281評(píng)論 0 0

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