第一部分 軟件測試基礎(chǔ)
第 3 章? 軟件測試的常識
本章要點:
? ? ? ? ● 了解公司里測試部門的組織結(jié)構(gòu)读整,軟件測試工程師所需具備的素質(zhì),以及成為一名優(yōu)秀的測試工程師的條件睛竣。
? ? ? ? ● 掌握軟件測試和軟件質(zhì)量的關(guān)系漫雕,軟件測試和SQA的關(guān)系,軟件測試的一些基本原則拉庵。
1. 軟件測試工程師應(yīng)具備的基本職業(yè)素質(zhì)
? ? ? ?三心:細(xì)心灿椅、耐心、信心钞支。二意:服務(wù)意識茫蛹、團(tuán)隊合作意識。一能力:溝通能力烁挟。技術(shù)能力:一般黑盒測試工程師要會搭建測試環(huán)境婴洼,掌握常用的黑盒測試技術(shù);白盒測試工程師還要求具備一定的讀代碼能力撼嗓。
2. 如何成為一名優(yōu)秀的測試工程師
? ? ? ?首先打好基礎(chǔ)窃蹋,學(xué)好計算機(jī)硬件、網(wǎng)絡(luò)静稻、操作系統(tǒng)警没、數(shù)據(jù)庫等知識。掌握各種測試技術(shù)振湾,比如黑盒測試中的等價類杀迹、邊界值、因果圖等押搪,白盒測試中的語句覆蓋树酪、分支覆蓋、路徑覆蓋等大州。
? ? ? ?想要繼續(xù)提高续语,有一些操作性比較強(qiáng)的做法:
? ? ? ?① 不斷學(xué)習(xí)充電
? ? ? ?② 閱讀原版書籍
? ? ? ?③ 閱讀缺陷管理系統(tǒng)中的缺陷報告
? ? ? ?④ 閱讀高手寫的測試用例
? ? ? ?⑤ 學(xué)習(xí)產(chǎn)品相關(guān)的業(yè)務(wù)知識
3. 軟件測試和軟件質(zhì)量的關(guān)系
? ? ? ?軟件測試是保障軟件質(zhì)量的手段之一。
? ? ? ?軟件的高質(zhì)量是設(shè)計出來的厦画,而不是靠測試修補(bǔ)出來的疮茄。
4. 什么是SQA、QA
? ? ? ?SQA(Software Quality Assurance)根暑,軟件質(zhì)量保障力试,一般把從事軟件質(zhì)量保障的人員稱為QA。SQA是獨立于項目組之外的第三方監(jiān)督機(jī)構(gòu)排嫌。在公司里畸裳,SQA一般需要做以下工作:
? ? ? ? ● 通過監(jiān)控軟件開發(fā)過程來保證產(chǎn)品質(zhì)量。
? ? ? ? ● 保證開發(fā)出來的軟件和軟件開發(fā)過程符合相應(yīng)標(biāo)準(zhǔn)與規(guī)程(ISO9000或CMM)淳地。
? ? ? ? ● 保證軟件產(chǎn)品怖糊、軟件過程中存在的不符合問題得到處理帅容,必要時將問題反映給高級管理者。
? ? ? ? ● 確保項目組制定的計劃伍伤、標(biāo)準(zhǔn)和規(guī)程適合項目組需要丰嘉,同時滿足評審和審計需要。
5. SQA與測試的關(guān)系
? ? ? ? ● 測試是在發(fā)現(xiàn)問題(Detection)嚷缭,SQA是在預(yù)防問題(Prevention)饮亏。測試的時候,Bug已經(jīng)實際存在了阅爽;而SQA則需要將Bug扼殺在萌芽之前路幸。
? ? ? ? ● 理論上,測試作為軟件生命周期的一部分付翁,其過程也要受到SQA監(jiān)督简肴。
? ? ? ? ● 在國內(nèi),許多名義上的SQA做著測試的工作百侧;許多測試人員做著部分SQA的工作砰识,職位界定比較模糊。如果在小公司工作的話佣渴,往往就要身兼數(shù)職辫狼,既要把本職工作測試干好,又要做一部分SQA的工作辛润,比如進(jìn)度監(jiān)控膨处、文檔整理等工作。
6. CMM
? ? ? ?CMM砂竖,全稱為Capability Maturity Model真椿,即能力成熟度模型,是SQA用來監(jiān)督項目的一個標(biāo)準(zhǔn)質(zhì)量模型乎澄。CMM共分5級:初始級突硝、可重復(fù)級、已定義級置济、已管理級解恰、優(yōu)化級。
7. 軟件測試的一些基本原則
7.1 Zero Bug與Good Enough
? ? ? ?Zero Bug指的是軟件沒有任何Bug舟肉,Good Enough指的是只要軟件達(dá)到一定的質(zhì)量要求修噪,就可以停止測試了。
? ? ? ?Good Enough原則就是一種權(quán)衡投入/產(chǎn)出比的原則路媚。制定最低測試通過標(biāo)準(zhǔn)和測試內(nèi)容,然后具體問題具體分析樊销。關(guān)于項目組如何具體制定測試的通過標(biāo)準(zhǔn)整慎,沒有統(tǒng)一的標(biāo)準(zhǔn)答案脏款,可以參考下面的標(biāo)準(zhǔn):
? ? ? ? ● 遺留Bug數(shù)在10個以下,其中嚴(yán)重的Bug在5個以下裤园。
? ? ? ? ● 測試用例的執(zhí)行率在100%撤师,通過率為95%。
? ? ? ? ● 如果做了單元測試的話拧揽,關(guān)鍵模塊的語句覆蓋率要達(dá)到100%剃盾,分支覆蓋率要達(dá)到85%。
7.2 不要試圖窮舉測試
? ? ? ?窮舉測試指的是測試時考慮所有可能的輸入值淤袜。既然窮舉測試不好做痒谴,那就需要在測試用例上多下功夫,設(shè)計出優(yōu)秀的測試用例铡羡,用最少的測試用例達(dá)到最大的覆蓋率积蔚。
7.3 開發(fā)人員不能既是運動員又是裁判員
? ? ? ?也就是說,測試應(yīng)該由獨立的第三方機(jī)構(gòu)來完成烦周。
? ? ? ?開發(fā)者對程序的功能尽爆、接口十分熟悉,他自己幾乎不可能因為使用不當(dāng)引發(fā)錯誤读慎,這與大眾用戶的情況不太相似漱贱,所以開發(fā)人員自己測試程序難以具備典型性。軟件開發(fā)實踐證明夭委,讓別人來檢查自己的工作會發(fā)現(xiàn)更多的錯誤饱亿。
7.4 軟件測試要盡早執(zhí)行
? ? ? ?實踐證明,在大多數(shù)情況下闰靴,在需求分析階段就會產(chǎn)生缺陷彪笼,而且需求分析階段引入的缺陷是最多的,其修復(fù)成本卻是最低的蚂且,所以軟件測試應(yīng)該盡早執(zhí)行配猫,越早執(zhí)行,風(fēng)險越小杏死。
? ? ? ?要想保障軟件的質(zhì)量泵肄,必須在需求階段就開始測試,測試需求說明是否真正符合用戶的需求淑翼,測試軟件設(shè)計是否嚴(yán)格按照需求說明的要求等腐巢,這樣可以減少后期測試和維護(hù)的工作量。
7.5 軟件測試應(yīng)該追溯需求
? ? ? ?首先玄括,需求分析人員(系統(tǒng)分析師)根據(jù)用戶需求撰寫《系統(tǒng)需求規(guī)格說明書》冯丙。
? ? ? ?隨后,系統(tǒng)設(shè)計人員(系統(tǒng)架構(gòu)師)根據(jù)需求說明來設(shè)計軟件遭京,產(chǎn)生了《概要設(shè)計》和《詳細(xì)設(shè)計》文檔胃惜。
? ? ? ?接著泞莉,開發(fā)人員根據(jù)設(shè)計文檔進(jìn)行編碼。
? ? ? ?當(dāng)遇到一個軟件問題船殉,應(yīng)該去追溯它的源頭鲫趁,看看是由于編碼的錯誤、設(shè)計的錯誤利虫,還是需求說明的錯誤挨厚。
7.6 缺陷的二八定理
? ? ? ?指的是一般情況下,軟件80%的缺陷集中在20%的模塊中糠惫。通常也把缺陷的二八定理稱為缺陷的集群現(xiàn)象或是蟲子窩現(xiàn)象疫剃。
7.7 缺陷具有免疫性
? ? ? ?指的是程序員在修改完缺陷,把新版本提交給測試人員后寞钥,測試人員根據(jù)相同的測試用例進(jìn)行回歸測試慌申,其效果會大打折扣,這要求測試人員要根據(jù)新版本的特點去修改維護(hù)測試用例理郑。
注:一個值得注意的經(jīng)驗
? ? ? ?每修復(fù)3~4個缺陷蹄溉,一般就會產(chǎn)生一個新的缺陷,所以要充分注意修改錯誤所產(chǎn)生的影響和波及效果您炉。