1. 軟件開發(fā)過程
軟件項(xiàng)目成員及其職責(zé):
- 項(xiàng)目經(jīng)理:自始至終驅(qū)動(dòng)整個(gè)項(xiàng)目,通常負(fù)責(zé)編寫產(chǎn)品說明書撑蚌、管理進(jìn)度昙楚、進(jìn)行重大決策。
- 體系架構(gòu)師或者系統(tǒng)工程師:產(chǎn)品小組中的技術(shù)專家扭屁,一般經(jīng)驗(yàn)豐富,可以勝任設(shè)計(jì)整個(gè)系統(tǒng)的體系架構(gòu)或軟件涩禀,他們的工作與程序員關(guān)系緊密料滥。
- 程序員:設(shè)計(jì)、編寫軟件并修復(fù)軟件中的缺陷艾船,他們與項(xiàng)目經(jīng)理密切合作制作軟件葵腹,然后與項(xiàng)目經(jīng)理和測(cè)試人員密切合作修復(fù)缺陷。
- 測(cè)試員或質(zhì)量保證(Quality Assurance屿岂,QA):負(fù)責(zé)找出報(bào)告軟件產(chǎn)品的問題践宴,他們與開發(fā)小組全部成員在開發(fā)過程中密切合作,進(jìn)行測(cè)試并報(bào)告發(fā)現(xiàn)的問題雁社。軟件測(cè)試員的目標(biāo)是盡可能早地找出軟件缺陷浴井,并確保缺陷得以修復(fù)。軟件質(zhì)量保證人員主要職責(zé)是創(chuàng)建和執(zhí)行改進(jìn)軟件開發(fā)過程并防止軟件缺陷發(fā)生的標(biāo)準(zhǔn)和方法霉撵,或者說主要職責(zé)是檢查和評(píng)價(jià)當(dāng)前軟件開發(fā)過程磺浙,找出改進(jìn)過程的方法,以達(dá)到防止軟件缺陷出現(xiàn)的目標(biāo)徒坡。
- 配置管理員或構(gòu)建員:負(fù)責(zé)把程序員編寫的代碼及技術(shù)作者寫的全部文檔資料組合在一起撕氧,合成為一個(gè)軟件包。
軟件開發(fā)常見的模式:
- 大爆炸模式:所有的精力都花在開發(fā)軟件和編寫代碼上喇完,計(jì)劃伦泥、進(jìn)度安排和正規(guī)開發(fā)過程幾乎沒有,最終產(chǎn)生的結(jié)果可能是優(yōu)秀的軟件產(chǎn)品也可能是廢品锦溪。這種模式的優(yōu)點(diǎn)是簡(jiǎn)單不脯。大多數(shù)情況下,這種模式?jīng)]有測(cè)試過程刻诊。
- 邊寫邊改模式:這種方式通常最初只有粗略的想法防楷,接著進(jìn)行一些簡(jiǎn)單的設(shè)計(jì),然后開始漫長(zhǎng)的來回編寫则涯、測(cè)試和修改過程复局,等到覺得可以了就發(fā)布產(chǎn)品。
- 瀑布模式:這種方式主要步驟是構(gòu)思——分析——設(shè)計(jì)——開發(fā)——測(cè)試——最終產(chǎn)品粟判,每一個(gè)步驟結(jié)束時(shí)亿昏,項(xiàng)目小組都組織審查,決定是否進(jìn)入下一步档礁。這種模式優(yōu)點(diǎn)是簡(jiǎn)潔角钩。該模式有三特點(diǎn):強(qiáng)調(diào)產(chǎn)品的定義、各個(gè)步驟都是分立的、無法回溯(一旦進(jìn)入某個(gè)步驟彤断,就要完成之后再進(jìn)行下一步)野舶。缺點(diǎn)是無法適應(yīng)快速變化。
- 螺旋模式:這種模式每一次循環(huán)都包含六個(gè)步驟:確定目標(biāo)宰衙、可選方案和限制條件平道;明確并化解風(fēng)險(xiǎn);評(píng)估可選方案供炼;當(dāng)前階段的開發(fā)和測(cè)試一屋;計(jì)劃下一階段;確定進(jìn)入下一階段的方法袋哼。螺旋模式包含了一點(diǎn)瀑布模式(分析冀墨、設(shè)計(jì)、開發(fā)和測(cè)試)涛贯、一點(diǎn)邊寫邊改模式(螺旋模式的每一次循環(huán))诽嘉、和一點(diǎn)大爆炸模式(從外界觀察)。
- 敏捷軟件開發(fā)Agile Software Development:又稱為快速原型弟翘、極限編程或者進(jìn)化開發(fā)等虫腋。主要思想是:通過過程和工具理解個(gè)人和交流的作用,通過全面的文檔理解運(yùn)行的軟件稀余,通過合同和談判得到客戶的協(xié)作悦冀,在計(jì)劃的執(zhí)行中做出對(duì)變更的響應(yīng)。
測(cè)試的原則
-
完全測(cè)試程序是不可能的
想要找出軟件所有的缺陷睛琳,確保軟件完美無缺盒蟆,是不可能的,原因主要有:輸入量太大师骗、輸出結(jié)果太多历等、軟件執(zhí)行路徑太多、軟件說明書是主觀的辟癌。 -
軟件測(cè)試是有風(fēng)險(xiǎn)的行為
軟件測(cè)試員無法做到完全測(cè)試募闲,所有一定會(huì)漏掉一些軟件缺陷,所以應(yīng)當(dāng)針對(duì)風(fēng)險(xiǎn)作出明智的抉擇愿待,找到最優(yōu)的測(cè)試量,使得測(cè)試不多不少靴患。 -
測(cè)試無法顯示潛伏的軟件缺陷
軟件測(cè)試可以報(bào)告軟件缺陷的存在仍侥,但是不可以報(bào)告軟件缺陷的不存在。進(jìn)行測(cè)試可以發(fā)現(xiàn)并報(bào)告軟件缺陷鸳君,但是任何情況下都不能保證軟件缺陷沒有农渊。 -
找到的軟件缺陷越多,就說明軟件缺陷越多
通常或颊,測(cè)試員很長(zhǎng)時(shí)間找不到軟件缺陷砸紊,找到一個(gè)之后會(huì)接二連三的找到更多传于。 -
軟件測(cè)試免疫力
軟件測(cè)試的越多,其對(duì)測(cè)試的免疫力會(huì)越來越強(qiáng)醉顽,所以應(yīng)該嘗試不同的測(cè)試程序沼溜,找出更多軟件缺陷。 -
并非所有軟件缺陷都要修復(fù)
根據(jù)風(fēng)險(xiǎn)決定哪些缺陷要修復(fù)游添。
2. 測(cè)試基礎(chǔ)
黑盒測(cè)試與白盒測(cè)試
- 黑盒測(cè)試:又稱為功能性測(cè)試或行為測(cè)試系草。測(cè)試人員只需知道軟件要做什么(無需知道軟件如何運(yùn)行),只要進(jìn)行一些輸入唆涝,獲得輸出找都。
- 白盒測(cè)試:有時(shí)稱為透明盒測(cè)試。測(cè)試人員可以訪問程序員的代碼廊酣,并通過檢查代碼的線索來協(xié)助測(cè)試能耻。
靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試
- 靜態(tài)測(cè)試:只測(cè)試不運(yùn)行的部分——只檢查和審核。
- 動(dòng)態(tài)測(cè)試:通常意義上的測(cè)試——使用和運(yùn)行軟件亡驰。
等價(jià)類劃分
選擇測(cè)試用例是測(cè)試人員最重要的任務(wù)晓猛,選擇測(cè)試用例的方法是等價(jià)類劃分,有時(shí)稱為等價(jià)分類隐解。等價(jià)類劃分指分步驟地把海量的測(cè)試用例集減得很小鞍帝,但過程同樣有效。在尋找等價(jià)劃分時(shí)煞茫,考慮把軟件具有相似輸入帕涌、相似輸出、相似操作的分在一個(gè)組续徽,這些組就是等價(jià)劃分蚓曼。
等價(jià)類劃分的目標(biāo)是把可能的測(cè)試用例集縮減到可控制且仍然足以測(cè)試軟件的小范圍內(nèi)。
測(cè)試邊界
提出邊界條件時(shí)钦扭,一定要測(cè)試臨近邊界的有效數(shù)據(jù)纫版,測(cè)試最后一個(gè)可能有效的數(shù)據(jù),同時(shí)測(cè)試剛超過邊界的無效數(shù)據(jù)客情。
在軟件的每一個(gè)部分不斷尋找邊界是極為重要的其弊,尋找做的越多,邊界就會(huì)發(fā)現(xiàn)的越多膀斋,可能找出的軟件缺陷就越多梭伐。
通過性測(cè)試和失敗狀態(tài)測(cè)試
- 通過性測(cè)試:包括審查軟件、描繪狀態(tài)仰担、嘗試各種合法可能性糊识、確認(rèn)狀態(tài)以及轉(zhuǎn)換正常。
- 失敗狀態(tài)測(cè)試:多任務(wù)測(cè)試和競(jìng)爭(zhēng)條件測(cè)試、重復(fù)測(cè)試(不斷執(zhí)行同樣的操作)赂苗、壓迫測(cè)試(盡可能地限制軟件的必要條件愉耙,將支持降到最低)、重負(fù)測(cè)試(盡可能提供條件讓軟件自行發(fā)揮拌滋,最大程度挖掘軟件能力)
正式審查
- 同事審查:常常在編寫代碼或者設(shè)計(jì)體系結(jié)構(gòu)的程序員之間展開朴沿,審查代碼,尋找問題和失誤鸠真。
- 走查:比同事審查更正規(guī)化悯仙,編寫代碼的程序員逐行或者逐個(gè)功能的通讀代碼,解釋代碼為什么且如何工作吠卷。審查人員聆聽敘述锡垄,提出有異議的問題。審查結(jié)束之后祭隔,表述者編寫報(bào)告說明發(fā)現(xiàn)的問題以及如何解決軟件缺陷货岭。審查人員之中至少有一位資深程序員。
- 檢驗(yàn):最正式的審查類型疾渴。與走查不同之處是——表述者不是原來的程序員千贯。其余參與者(檢查員)是從不同角度(用戶、測(cè)試或者產(chǎn)品支持)審查代碼搞坝。
編碼標(biāo)準(zhǔn)和規(guī)范
- 可靠性
- 可讀性/維護(hù)性:符合設(shè)備標(biāo)準(zhǔn)和規(guī)范的代碼易于閱讀搔谴、理解和維護(hù)。
- 移植性:代碼經(jīng)常需要在不同硬件中運(yùn)行桩撮,或者使用不同編譯器編譯敦第。
分段測(cè)試
在底層進(jìn)行的測(cè)試稱為單元測(cè)試或者模塊測(cè)試,找出底層軟件缺陷并修復(fù)店量,之后集成在一起芜果,對(duì)模塊組合進(jìn)行集成測(cè)試,不斷增加測(cè)試過程融师,加入越來越多的軟件片段右钾,直至整個(gè)產(chǎn)品或者產(chǎn)品的主要部分進(jìn)行測(cè)試,稱為系統(tǒng)測(cè)試旱爆。
代碼覆蓋
為了全面的覆蓋測(cè)試舀射,還必須測(cè)試程序的狀態(tài)以及程序流程,必須設(shè)法進(jìn)入和退出每一個(gè)模塊怀伦,執(zhí)行每一行代碼后控,進(jìn)入軟件每一條邏輯和決策分支,這種類型叫做代碼覆蓋測(cè)試空镜。
代碼覆蓋最直接的形式稱為語句覆蓋和代碼行覆蓋,代碼覆蓋測(cè)試是一種動(dòng)態(tài)白盒測(cè)試。
測(cè)試基礎(chǔ)
- 靜態(tài)黑盒測(cè)試:檢查產(chǎn)品說明書吴攒,并在軟件編寫之前找出問題张抄。
- 動(dòng)態(tài)黑盒測(cè)試:在不了解軟件如何工作的前提下進(jìn)行測(cè)試。
- 靜態(tài)白盒測(cè)試:通過正式審查和檢驗(yàn)檢查代碼的細(xì)節(jié)洼怔。
- 動(dòng)態(tài)白盒測(cè)試:看到軟件的工作方式時(shí)署惯,根據(jù)獲得的信息對(duì)軟件進(jìn)行測(cè)試。
3. 測(cè)試技術(shù)
- 配置測(cè)試:硬件配置測(cè)試镣隶,以及如何保證軟件在其設(shè)計(jì)運(yùn)行和連接得硬件上正常運(yùn)行极谊。指的是在各種硬件和軟件平臺(tái)類型以及其不同的設(shè)置情況下檢查軟件運(yùn)行的過程。
- 兼容性測(cè)試:檢查軟件之間是否能夠正確的交互和共享信息安岂,檢查軟件和其他軟件一起運(yùn)行的過程轻猖。兼容性的定義根據(jù)產(chǎn)品特性來進(jìn)行,如果測(cè)試對(duì)象是操作系統(tǒng)域那,那么要求對(duì)文字處理程序和圖形程序進(jìn)行測(cè)試咙边;如果測(cè)試對(duì)象是應(yīng)用程序,那么就需要在多個(gè)不同的品臺(tái)上進(jìn)行兼容性測(cè)試次员。
- 易用性測(cè)試:從人體工學(xué)角度败许,使得最終用戶認(rèn)為產(chǎn)品是好用的。
- 安全性測(cè)試:任何軟件都有一個(gè)安全問題——緩沖區(qū)溢出淑蔚,應(yīng)該盡可能早地發(fā)現(xiàn)問題并解決市殷。使用安全字符串函數(shù),定期研究黑客攻擊手段刹衫,做好防范醋寝。
- 自動(dòng)化測(cè)試:使用測(cè)試軟件自動(dòng)化的對(duì)軟件進(jìn)行測(cè)試。
單靠軟件測(cè)試無法保證產(chǎn)品質(zhì)量绪妹,軟件QA團(tuán)隊(duì)如何保證產(chǎn)品具有高質(zhì)量甥桂?
對(duì)項(xiàng)目進(jìn)行近似完全的控制,建立標(biāo)準(zhǔn)和方法論邮旷,有條理地仔細(xì)監(jiān)視和評(píng)估軟件開發(fā)過程黄选,對(duì)發(fā)現(xiàn)的過程問題反饋解決建議,執(zhí)行測(cè)試婶肩,擁有決定產(chǎn)品何時(shí)準(zhǔn)備發(fā)布的授權(quán)办陷。