?一兼耀、 探索性測試
探索性測試可以說是一種測試思維技術(shù)压昼,最直白的定義是:同時設(shè)計測試和執(zhí)行測試。探索性強(qiáng)調(diào)測試人員的主觀能動性瘤运,拋棄繁雜的測試計劃和測試用例設(shè)計過程窍霞,強(qiáng)調(diào)在碰到問題時及時改變測試策略。
探索性測試識別軟件系統(tǒng)的目的拯坟,識別軟件系統(tǒng)提供的功能但金,識別軟件系統(tǒng)潛在的不穩(wěn)定的區(qū)域,在探索軟件系統(tǒng)的過程中記錄關(guān)于軟件的信息和問題郁季。
并且根據(jù)場景的不同冷溃,可以分成四類:自由式探索式測試、基于場景的探索式測試梦裂、基于策略的探索式測試和基于反饋的探索式測試似枕。
探索性測試,需由有經(jīng)驗(yàn)的人來實(shí)施塞琼。無論是目的的把握菠净、策略的制定、分析/設(shè)計的深入、持續(xù)探索的職能毅往,菜鳥工程師是難以勝任的牵咙。在這點(diǎn)上,資深QA會體會到自身的價值所在攀唯。
探索性測試洁桌,無法單獨(dú)評估軟件的質(zhì)量。探索性測試侯嘀,是拿來和“先設(shè)計另凌、后執(zhí)行”的基于測試用例的測試方式比較而言的。盡管有很多支持者在強(qiáng)調(diào)探索性測試在發(fā)現(xiàn)缺陷上的效率優(yōu)勢戒幔,但是考慮到探索性測試可以達(dá)到的覆蓋度和成果的不確定性吠谢,目前更多是作為經(jīng)典系統(tǒng)性測試方式的一個補(bǔ)充。
二诗茎、敏捷測試
敏捷測試(Agile testing)是測試的一種工坊,是遵循敏捷宣言的一種測試實(shí)踐:
?強(qiáng)調(diào)從客戶的角度,即從使用系統(tǒng)的用戶角度敢订,來測試系統(tǒng)王污。
?重點(diǎn)關(guān)注持續(xù)迭代地測試新開發(fā)的功能,而不再強(qiáng)調(diào)傳統(tǒng)測試過程中嚴(yán)格的測試階段楚午。
?建議盡早開始測試昭齐,一旦系統(tǒng)某個層面可測,比如提供了模塊功能矾柜,就要開始模塊層面的單元測試阱驾,同時隨著測試深入,持續(xù)進(jìn)行回歸測試保證之前測試過內(nèi)容的正確性
三把沼、回歸測試
回歸測試是指修改了舊代碼后啊易,重新進(jìn)行測試以確認(rèn)修改沒有引入新的錯誤或?qū)е缕渌a產(chǎn)生錯誤吁伺。
回歸測試作為軟件生命周期的一個組成部分饮睬,在整個軟件測試過程中占有很大的工作量比重,軟件開發(fā)的各個階段都會進(jìn)行多次回歸測試篮奄。在漸進(jìn)和快速迭代開發(fā)中捆愁,新版本的連續(xù)發(fā)布使回歸測試進(jìn)行的更加頻繁,而在極端編程(策略君注:極限編程)方法中窟却,更是要求每天都進(jìn)行若干次回歸測試昼丑。因此,通過選擇正確的回歸測試策略來改進(jìn)回歸測試的效率和有效性是很有意義的夸赫。
回歸測試是軟件測試?yán)锩娴囊粋€非常普遍的概念菩帝,考慮到軟件的“易變更性”、以及回歸測試的代價,大部分人可謂“深受其害”呼奢。沒辦法宜雀,軟件的改動往往牽一發(fā)而動全身,任何一個變更都可能帶來新問題握础;至于修復(fù)老BUG辐董,引入新BUG的情況也不算少見。
當(dāng)然禀综,在運(yùn)用層面简烘,回歸測試的策略一直是討論的重心。一般情況下定枷,可以歸為三類:
全回歸孤澎,即每次有改動,僅進(jìn)行全集的測試欠窒。這個策略可謂十分昂貴亥至,所以在沒有高自動化比率的場景下,大部分項(xiàng)目組都非常慎重贱迟,因?yàn)闄C(jī)會沒有一個項(xiàng)目具備“寬松”的人力和時間姐扮。
不回歸,即只考慮修改部分的測試衣吠、其余沒有直接改動的一概不理茶敏。盡管有些極端,但是也不乏采用這樣策略的場景缚俏;特別是時間緊惊搏、風(fēng)險較低以及代碼Review較為細(xì)致的情況。
部分回歸忧换,專業(yè)的名詞“基于風(fēng)險的回歸”恬惯,對于回歸測試的范圍進(jìn)行“優(yōu)先級”分析,采用的方法諸如:業(yè)務(wù)流分析亚茬、代碼調(diào)用結(jié)構(gòu)分析酪耳、業(yè)務(wù)日常使用頻度分析、失敗的重要性分析等等刹缝。具體的方式碗暗,下次我們另開文章討論。
于是這當(dāng)中就會引出幾個現(xiàn)象:
如果測試面臨的是存在多年的大型核心業(yè)務(wù)系統(tǒng)梢夯,那么回歸測試的工作自然是份額很大的言疗,那么測試人員在團(tuán)隊中的比例自然會高,類似于昨天推文中的測試Vs開發(fā)3:1的場景颂砸。
考慮到回歸測試的重復(fù)度噪奄,它往往是自動化測試的重點(diǎn)死姚。一方面,穩(wěn)定的功能特性勤篮、重復(fù)的工作特性往往都更加容易自動化知允;另一方面,在回歸測試的部分往往是比較重要叙谨、優(yōu)先級比較高的温鸽。
手工的回歸測試因?yàn)槠洹盁o聊性”,往往被大部分測試人員所嫌棄手负。但是涤垫,它卻也有額外的價值。很多時候竟终,不管是測試新人蝠猬,還是團(tuán)隊其他崗位的新人,最快熟悉系統(tǒng)的方式就是手工執(zhí)行回歸測試统捶∮苈可謂鍛煉新人的神器~
四、冒煙測試
這一術(shù)語源自硬件行業(yè)喘鸟。對一個硬件或硬件組件進(jìn)行更改或修復(fù)后匆绣,直接給設(shè)備加電。如果沒有冒煙什黑,則該組件就通過了測試崎淳。在軟件中,“冒煙測試”這一術(shù)語描述的是在將代碼更改嵌入到產(chǎn)品的源樹中之前對這些更改進(jìn)行驗(yàn)證的過程愕把。
在檢查了代碼后拣凹,冒煙測試是確定和修復(fù)軟件缺陷的最經(jīng)濟(jì)有效的方法。冒煙測試設(shè)計用于確認(rèn)代碼中的更改會按預(yù)期運(yùn)行恨豁,且不會破壞整個版本的穩(wěn)定性嚣镜。
冒煙測試是自由測試的一種。冒煙測試(smoketest)在測試中發(fā)現(xiàn)問題橘蜜,找到了一個Bug菊匿,然后開發(fā)人員會來修復(fù)這個Bug。這時想知道這次修復(fù)是否真的解決了程序的Bug扮匠,或者是否會對其它模塊造成影響捧请,就需要針對此問題進(jìn)行專門測試,這個過程就被稱為SmokeTest棒搜。
在很多情況下,做SmokeTest是開發(fā)人員在試圖解決一個問題的時候活箕,造成了其它功能模塊一系列的連鎖反應(yīng)力麸,原因可能是只集中考慮了一開始的那個問題,而忽略其它的問題,這就可能引起了新的Bug克蚂。SmokeTest優(yōu)點(diǎn)是節(jié)省測試時間闺鲸,防止build失敗。缺點(diǎn)是覆蓋率還是比較低埃叭。
五摸恍、集成測試
集成測試,也叫組裝測試或聯(lián)合測試赤屋。在單元測試的基礎(chǔ)上立镶,將所有模塊按照設(shè)計要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測試类早。
集成測試在系統(tǒng)測試之前媚媒,單元測試完成之后系統(tǒng)集成的時候進(jìn)行測試。集成測試主要是針對程序內(nèi)部結(jié)構(gòu)進(jìn)行測試涩僻,特別是對程序之間的接口進(jìn)行測試缭召。集成測試對測試人員的編寫腳本能力要求比較高。測試方法一般選用黑盒測試和白盒測試相結(jié)合逆日。
六嵌巷、系統(tǒng)測試
系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進(jìn)行的測試,目的是驗(yàn)證系統(tǒng)是否滿足了需求規(guī)格的定義室抽,找出與需求規(guī)格不符或與之矛盾的地方晴竞,從而提出更加完善的方案。系統(tǒng)測試發(fā)現(xiàn)問題之后要經(jīng)過調(diào)試找出錯誤原因和位置狠半,然后進(jìn)行改正噩死。是基于系統(tǒng)整體需求說明書的黑盒類測試,應(yīng)覆蓋系統(tǒng)所有聯(lián)合的部件神年。對象不僅僅包括需測試的軟件已维,還要包含軟件所依賴的硬件、外設(shè)甚至包括某些數(shù)據(jù)已日、某些支持軟件及其接口等垛耳。
七、交叉測試
為防止思維被固化飘千,審 Bug 疲勞堂鲜,各位測試人員之間相互交換測試內(nèi)容。
八护奈、滲透性測試
滲透測試 (penetration test)并沒有一個標(biāo)準(zhǔn)的定義缔莲,國外一些安全組織達(dá)成共識的通用說法是:滲透測試是通過模擬惡意黑客的攻擊方法,來評估計算機(jī)網(wǎng)絡(luò)系統(tǒng)安全的一種評估方法霉旗。這個過程包括對系統(tǒng)的任何弱點(diǎn)痴奏、技術(shù)缺陷或漏洞的主動分析蛀骇,這個分析是從一個攻擊者可能存在的位置來進(jìn)行的,并且從這個位置有條件主動利用安全漏洞读拆。
換句話來說擅憔,滲透測試是指滲透人員在不同的位置(比如從內(nèi)網(wǎng)、從外網(wǎng)等位置)利用各種手段對某個特定網(wǎng)絡(luò)進(jìn)行測試檐晕,以期發(fā)現(xiàn)和挖掘系統(tǒng)中存在的漏洞暑诸,然后輸出滲透測試報告,并提交給網(wǎng)絡(luò)所有者辟灰。網(wǎng)絡(luò)所有者根據(jù)滲透人員提供的滲透測試報告个榕,可以清晰知曉系統(tǒng)中存在的安全隱患和問題。
我們認(rèn)為滲透測試還具有的兩個顯著特點(diǎn)是:滲透測試是一個漸進(jìn)的并且逐步深入的過程伞矩。滲透測試是選擇不影響業(yè)務(wù)系統(tǒng)正常運(yùn)行的攻擊方法進(jìn)行的測試笛洛。
.
九、單元測試
是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證乃坤。對于單元測試中單元的含義苛让,一般來說,要根據(jù)實(shí)際情況去判定其具體含義湿诊,如C語言中單元指一個函數(shù)狱杰,Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等厅须》禄總的來說,單元就是人為規(guī)定的最小的被測功能模塊朗和。單元測試是在軟件開發(fā)過程中要進(jìn)行的最低級別的測試活動错沽,軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。