我有一個(gè)“瘋狂”的想法:在理想的情況下,如果自動(dòng)化軟件測試方面的知識(shí)積累足夠豐富,自動(dòng)化測試工具足夠先進(jìn),如果我們可以把軟件測試中積累的知識(shí),完全應(yīng)用到軟件的構(gòu)建過程中去,那么,我認(rèn)為,很多持續(xù)型項(xiàng)目不一定需要進(jìn)行軟件測試(核彈等高危行業(yè)的軟件除外)。
在邏輯世界里,不會(huì)有機(jī)器故障,軟件測試只是嚴(yán)格地重復(fù)那些足夠充分的可行性測試而已。
在大自然中,獅子的攻擊技能世代相傳,這使它們可以長期站立于食物鏈的頂端。而在軟件開發(fā)實(shí)踐中,很多軟件開發(fā)組織卻缺乏軟件測試技能的積累。
我經(jīng)常看到這樣的場景:在軟件開發(fā)完成之后,軟件測試人員根據(jù)自己的經(jīng)驗(yàn),搭建測試環(huán)境、編寫測試用例、反饋測試結(jié)果。這些工作總是從頭開始,僅有的一些可以重用的經(jīng)驗(yàn),也只是存在于測試人員的大腦中。比方說,在測試用例中指定可以輸入的邊界值、嘗試各種特殊字符等。
在理想的工作模式下,很多攻防的方案(例如,邊界值和特殊字符的處理,安全漏洞的防御方法等),都應(yīng)該是自動(dòng)化測試的一部分,根本不需要從頭建立。
換句話說,對(duì)于自動(dòng)化軟件測試來說,軟件測試中的模擬攻擊不應(yīng)該總是新鮮事物。在軟件構(gòu)建的過程中,我們應(yīng)該對(duì)以往自動(dòng)化軟件測試的成果進(jìn)行總結(jié),并把測試成果應(yīng)用到軟件的構(gòu)建過程中去。比方說,不是在測試階段才考慮邊界值和特殊字符,而是在構(gòu)建時(shí)就有針對(duì)這些問題的解決方案。安全和性能的問題也是如此。
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/僅僅在軟件生產(chǎn)結(jié)束后才進(jìn)行某些系統(tǒng)特性(例如,安全和性能)的測試是錯(cuò)誤的,這種“測試驅(qū)動(dòng)”(驅(qū)動(dòng)缺陷修復(fù)的生產(chǎn)后測試)會(huì)帶來高昂的返工成本。
容易犯錯(cuò)的“人的活動(dòng)”,可以通過另一些容易犯錯(cuò)的“人的活動(dòng)”來避免嗎?不,我不這樣認(rèn)為。只有自動(dòng)化才能避免出現(xiàn)設(shè)計(jì)之中意料之外的問題。
很多大連在線預(yù)訂軟件開發(fā)組織對(duì)于自動(dòng)化測試有一些誤解。我曾經(jīng)碰到過一家軟件公司,他們把LoadRunner錄制的腳本作為自動(dòng)化測試的唯一方案。一般來說,LoadRunner錄制的腳本基于常規(guī)的正確邏輯,這無助于幫助軟件測試人員發(fā)現(xiàn)邏輯節(jié)點(diǎn)上的缺陷。基于正確邏輯的測試是需要的,但它不是軟件測試的全部,甚至不是軟件測試的主要內(nèi)容。
另一種自動(dòng)化測試工具,AppScan,則符合軟件測試的本質(zhì)要求。