一、測試大數(shù)據(jù)應用現(xiàn)狀分析 軟件測試積累了大量數(shù)據(jù),直覺上,應該有可能把這些數(shù)據(jù)存在的規(guī)律、知識、模式發(fā)掘出來,反過來指導軟件測試工程實踐。這已經(jīng)成為業(yè)界共識,而且不少人也從多年前就開始了相關研究工作,建立了不少測試樣例庫、故障庫,甚至還有更全的庫。但是到底從這些數(shù)據(jù)中發(fā)現(xiàn)了哪些有意思(我們以前沒有意識到的)的知識、模式、規(guī)律,這些課題組總是閃爍其辭,我的理解,就是沒有值得一提的東西。我見到的所謂大數(shù)據(jù)應用結果,大多都是些宏觀的分類統(tǒng)計,確切地說,連決策支持(DSS)的水平都算不上,與人們對大數(shù)據(jù)應用的期望相差甚遠,對具體的新的軟件測試項目設計的作用不大。 我想出現(xiàn)這種狀況一定是有地方出了問題,我想嘗試梳理一下。 首先,軟件測試大數(shù)據(jù)應用必須提出工程應用需求,第二,工程需求抽象、轉換為科學問題,第三,通過科學工具,包括數(shù)學工具,建模工具等解決科學問題。 比如機器人、通信協(xié)議的測試,可以把應用抽象為米莉機,就是輸入、輸出和狀態(tài)都是有限的自動機,且任意時刻只處于一種狀態(tài)中,狀態(tài)的遷移只取決于當前狀態(tài)和輸入。另一些應用的測試則可以抽象為摩爾機,即狀態(tài)轉換只依賴于輸入。接下來,通過算法尋找米莉機的同步序列或歸位序列,作為測試用例,驗證系統(tǒng)可以進入的最終狀態(tài),或是其他預期行為。 類似地,我們期望通過軟件測試數(shù)據(jù)的處理得到什么呢?我聽得最多的就是測試用例推薦,當然這也是其他領域大數(shù)據(jù)應用的目前熱點之一,互聯(lián)網(wǎng)上已經(jīng)有很多了,主要是各種商品和服務的針對性推薦。 那我們不妨想一想,我們自己學習軟件測試的過程,是不是僅僅觀察很多以前的測試用例或是軟件問題報告呢?顯然不是。對于我們這種基于需求測試模式為主的測評實驗室來說,從需求映射為測試用例的技巧才是學習的關鍵,也是評價一個測試員能力水平的重要方面。好的測試員為什么優(yōu)秀?主要體現(xiàn)在對具體需求的理解,能夠結合自己的經(jīng)驗、常識甚至直覺,提出滿足測試目標的合理的測試用例。當然,不同的測試級別對知識的要求層次差別還是很大的。根據(jù)一般的測試模型,測試級別越高,測試目標越具體。比如級別低的單元測試,只需要理解要完成的具體功能,與具體的應用沒有很大的關系,因而比較容易抽象出通用的測試經(jīng)驗,甚至自動化。相反,系統(tǒng)測試強烈依賴特定的軟件應用場景,類似的軟件用在不同的場景中,會要求差別很大的測試設計。 軟件在人們的生活中發(fā)揮著這樣重要的作用,因此保證軟件質量是至關重要的。測試是驗證任何產(chǎn)品質量的過程。舉一個紡織工業(yè)的例子:購買布匹時,我們期望布匹禁用,尺寸合適,不易掉色。在銷售布匹之前,銷售者有責任測試布匹的這些基本性質,換句話說,銷售者要對布匹的質量負責。 二、測試大數(shù)據(jù)應用推進難點 我認為更為抽象的單元測試對于測試用例推薦,一般來說更容易。但是單元測試主要還是由軟件研制單位完成,因此單元測試的用例推薦對軟件測評實驗室價值不高。對于大數(shù)據(jù)應用來說,單元測試用例推薦可能是比較好的起點,關注服務對象主要是軟件研發(fā)單位。 同時,軟件單元測試與其他測試級別相比也是最成熟的,目前唯一有效的軟件測試國際標準就是單元測試標準,針對單元測試的自動化、半自動化工具也是最豐富的,在軟件測試目前已有的四種主要方法中,包括基于規(guī)則的動態(tài)分析、基于測試數(shù)據(jù)輸入的動態(tài)測試、基于符號運算的運行時檢查、基于模型的軟件邏輯正確性驗證等,也是運用最成功的,因此大數(shù)據(jù)要想給出一些更具啟發(fā)性的推薦也是比較困難的,但是如果大數(shù)據(jù)能夠更深入地結合被測軟件單元的結構信息,換句話說,大數(shù)據(jù)不僅要使用從單元測試數(shù)據(jù)中提取的模式信息,還要使用具體被測軟件的結構或設計信息,推薦有價值測試用例的可能性更大。特別地,針對某些單元測試難度比較大的子問題,比如中斷處理、變量定義/使用路徑驗證等的測試,獲得突破的可能性更大一些??傊?,面向的問題域越寬,給出高價值測試用例的可能性越低。我想大數(shù)據(jù)的發(fā)展策略應該是從特殊到一般。以往軟件測試大數(shù)據(jù)應用效果不佳,我覺得很可能與開發(fā)策略有關。 不少人對我說,軟件測試大數(shù)據(jù)應用效果不佳的主要原因是數(shù)據(jù)不夠多,暗示只要測試數(shù)據(jù)足夠多大數(shù)據(jù)應用的效果必然改善,盡管誰也說不清多少數(shù)據(jù)才算足夠。我對這個想法深表懷疑。舉個例子,大數(shù)據(jù)也好、數(shù)據(jù)庫知識發(fā)現(xiàn)也好、人工智能、機器學習、模式識別等也好,當取得了一些重要突破后,無一例外地都把應用目標轉向股市和類似的領域。直覺上這些技術應該在股市上有所作為,因為股市數(shù)據(jù)量不可謂不大,數(shù)據(jù)中的模式不可謂不多,已有的傳統(tǒng)分析方法運用也幾乎到了極致。但是事實是,即使是紅得發(fā)紫的阿爾法狗也在中國股市潛水多時后黯然離開。從地球奔向月球是美好愿望,但是必須得有合適方法,你對自行車再挖空心思地改造,也永遠不會把你帶到月球。我想大數(shù)據(jù)也是一樣。如果軟件測試領域的復雜度可以與股市比較,再對著自行車費心思就大可不必了。關鍵是降低問題域的寬度和難度,大而化之的所謂軟件測試大數(shù)據(jù)應用,我認為目前是不可行的。 三、測試大數(shù)據(jù)應用解決方向 軟件測試的主要工作,是把軟件需求映射為軟件測試。大數(shù)據(jù)應用也可以表述為輔助測試人員,直至自動完成這個映射,大數(shù)據(jù)能力的表征也體現(xiàn)在對測試人員的輔助、啟發(fā)效果。如果給出的推薦是測試人員沒有想到,而且對測試具有重要性,則得正分;如果推薦是重復性的,比如被其他測試用例包含,則得零分;如果推薦沒有可行性或必要性,甚至對測試人員的設計產(chǎn)生干擾,則得負分。這種獎勵/懲罰機制可以構成大數(shù)據(jù)自我學習、進化的基礎。 這個機制與測試人員的成長類似。測試大綱寫好后經(jīng)過內部評審和外部評審,經(jīng)過幾輪迭代不斷完善。在理想情況下,測試人員會汲取教訓和經(jīng)驗,同類問題出現(xiàn)概率越來越小。把這個測試設計進化過程送給大數(shù)據(jù),即同一個項目的多個測試設計,以版本高低順序排序輸入給大數(shù)據(jù),呈現(xiàn)出完整進化過程,可以是大數(shù)據(jù)的一個起點。因為測試設計在評審中被提出修改意見的落實結果,本質上就是一種推薦,而且是正分推薦。 不過問題遠沒有這么簡單。測試設計評審,實際上也是評審同行背對背地進行從測試需求到測試設計的映射,并把自己的映射與被評審的測試設計產(chǎn)品進行比對,發(fā)現(xiàn)產(chǎn)品不足的過程,僅僅了解測試設計改進情況,而不知道為什么需要進行這些改進,很難獲得實質性的經(jīng)驗。因此大數(shù)據(jù)了解測試需求等依據(jù),理解測試設計多個版本的映射差異,對于大數(shù)據(jù)的模式發(fā)現(xiàn)來說可能是不可避免的。 于是下面的問題就變成大數(shù)據(jù)如何對測試需求進行理解。我聽到不少人說,測試需求的理解通過自然語言處理解決,因為現(xiàn)實世界的測試需求主要以自然語言描述的形式給出。實際上,對測試需求的理解本身對測試人員的能力要求就是很高的,很少有測試人員僅僅根據(jù)測試需求文檔就能很好理解被測軟件的,與軟件研發(fā)人員的溝通是很難避免的。這意味著大數(shù)據(jù)還要理解不同階段的軟件設計文檔、甚至系統(tǒng)設計文檔、項目技術方案、立項論證報告等等相關文件。即使這些條件都具備,通用的測試需求大數(shù)據(jù)理解也是非常困難的,可能降低難度的方向,應該是限定軟件類型、使用領域等,達到一般測試人員的平均理解水平還是有可能的。 在測試需求大數(shù)據(jù)理解上,我覺得還有兩個問題很難回避,一個是需求文檔中的圖表,一個是預期的測試環(huán)境初步想定。 圖表對于測試人員對測試需求的理解至關重要,大數(shù)據(jù)直接理解圖表中給出的豐富語義信息、結構信息、拓撲信息,我想還是有很大困難的。如果需要人工把圖表進行自然語言轉換,即使是能夠做到,對大數(shù)據(jù)的實際使用也會是個很大制約。如果這個問題沒有一個足夠滿意的解決方案,我想大數(shù)據(jù)對于軟件測試可能弄不好就是那個自行車了。 測試需求到測試設計的映射還有一個重要條件,就是測試環(huán)境的初步想定,而測試環(huán)境又是在映射過程中逐步確定的。一般來說,測試需求決定測試環(huán)境,測試環(huán)境影響測試需求。但是測試環(huán)境的確定還受到很多技術、管理、成本、進度、可用資源等多方面的制約,可能需要比較復雜的綜合考慮,既要考慮測試的充分性、有效性,還要考慮測試工程的可行性。而且測試環(huán)境的確定常常是一個逐步迭代的過程,測試任務的不同,使得通常不存在一個具體的理想目標測試環(huán)境模型。而如果要把測試環(huán)境作為測試設計大數(shù)據(jù)推薦的一部分,可能難度很大,因為測試大綱不同版本本身可能就包含測試環(huán)境的演化??赡艿慕鉀Q辦法是優(yōu)先確定測試環(huán)境,雖然這對測試人員來說也不是完全不能接受,但畢竟是對大數(shù)據(jù)的一個重要制約。 歡迎各位大佬提出意見見解,留言區(qū)等你哦! |
|
來自: 閣樓的貓s859sx > 《待分類》