你有沒有過下面的經(jīng)歷:
- 在谷歌瀏覽器輸入一個(gè)網(wǎng)址,出來一個(gè)錯(cuò)誤提示:“不支持當(dāng)前瀏覽器胶台,請用IE訪問”...
- 換成IE赡矢,重新打開該網(wǎng)站杭朱,輸入用戶信息注冊一個(gè)新用戶,隨后收到一封注冊成功郵件吹散,里邊直接包含剛剛注冊的密碼...
- 用注冊的用戶名密碼登錄進(jìn)去弧械,又不知道所需要的功能入口在哪里...
- 翻遍了一層又一層的菜單,終于找到了入口空民,進(jìn)去打開的是一個(gè)列表刃唐,足足等了2分鐘才加載完成...
- 從列表中找到自己需要的那個(gè)信息,點(diǎn)擊“查看詳情”界轩,卻顯示一堆亂碼...
一次性碰到上面的各種當(dāng)然屬于極端現(xiàn)象画饥,但我敢說,你一定碰到過其中的問題不止一次浊猾,而且碰到了一定很郁悶抖甘。這些都是軟件缺陷,分別是兼容性葫慎、安全性衔彻、易用性、性能和功能方面的缺陷偷办,一旦出現(xiàn)將會(huì)給企業(yè)和用戶帶來不同嚴(yán)重程度的影響米奸。
這種糟糕的體驗(yàn)有沒有使你產(chǎn)生想去優(yōu)化的沖動(dòng)?你是否想知道如何幫助軟件開發(fā)團(tuán)隊(duì)開發(fā)出缺陷更少的軟件產(chǎn)品爽篷?如果你的回答是肯定的,那么請跟我一起來做QA吧:)
QA是什么慢睡?
狹義的理解就是軟件測試逐工,軟件測試工程師常被稱為QA;廣義上漂辐,QA就是在軟件開發(fā)過程中做好軟件質(zhì)量分析和保證的人員泪喊。
QA的職責(zé)有哪些?
下面結(jié)合一個(gè)簡單的例子說明QA的職責(zé):生產(chǎn)杯子髓涯。
1. 理解和澄清業(yè)務(wù)需求
需求是軟件開發(fā)的源頭袒啼,需求的正確性、合理性對軟件開發(fā)的質(zhì)量有著至關(guān)重要的作用纬纪。QA的一個(gè)很重要的職責(zé)就是澄清需求蚓再、驗(yàn)證需求合理性,并且?guī)椭鷪F(tuán)隊(duì)一致理解需求包各。
需求包括功能需求摘仅,也包括各種非功能需求:性能、安全问畅、易用性娃属、兼容性等六荒。所謂理解和澄清業(yè)務(wù)需求,就是需要把業(yè)務(wù)相關(guān)的功能和非功能需求都搞清楚了矾端。
對于生產(chǎn)杯子的例子掏击,QA需要搞清楚杯子的功能有哪些:普通的盛水、加熱秩铆、保溫砚亭、帶吸管等等。杯子的功能可能還遠(yuǎn)不止這些豺旬,這就需要發(fā)散性思維钠惩,去挖掘可能得用途并進(jìn)行確認(rèn)、測試族阅。除了功能需求以外篓跛,還有要考慮的非功能需求可能有:材質(zhì)耐熱性、耐摔性坦刀、跟各種液體的兼容性愧沟、安全性(是否有毒?是否可以砸傷人鲤遥?)……
注意
需求的澄清是個(gè)過程沐寺,并不是在開始開發(fā)和測試之前要搞清楚所有的需求(這也是不可能的),同時(shí)可以在開發(fā)和測試過程中不斷去澄清需求盖奈、優(yōu)化業(yè)務(wù)流程混坞。
2. 制定策略并設(shè)計(jì)測試
澄清了需求,還得知道怎么去驗(yàn)證軟件產(chǎn)品是否滿足了需求钢坦,這就需要制定測試策略究孕,并根據(jù)策略設(shè)計(jì)測試。大概說來爹凹,需要確定測試范圍厨诸、測試階段,覆蓋要求的測試范圍都需要什么類型的測試(功能與非功能等)禾酱,在每個(gè)階段采用什么測試方法微酬,手動(dòng)測試和自動(dòng)化測試的分配比例,如何設(shè)計(jì)手動(dòng)和自動(dòng)化測試的測試用例颤陶,用什么工具實(shí)現(xiàn)功能颗管、性能和安全測試的自動(dòng)化等。
對于杯子來說滓走,確定需求之后忙上,針對每一項(xiàng)需求指標(biāo)需要確認(rèn)可能采取的不同測試方法,需要考慮如何測試盛水和加熱功能闲坎、如何測試耐摔性(直接摔嗎疫粥?)茬斧、以及如何測試安全性等等。
可以參考測試四象限和測試金字塔等模型來制定測試策略梗逮,并根據(jù)產(chǎn)品發(fā)布周期制定具體的測試計(jì)劃项秉、設(shè)計(jì)測試內(nèi)容。
注意
設(shè)計(jì)測試慷彤,不僅是指設(shè)計(jì)測試用例娄蔼。
四象限和金字塔只是個(gè)參考,不可以生搬硬套底哗,而且有些內(nèi)容稍有爭議岁诉,但參考價(jià)值還是很大的。
3. 執(zhí)行和實(shí)現(xiàn)測試
根據(jù)制定的測試策略和測試計(jì)劃跋选、設(shè)計(jì)好的測試用例涕癣,執(zhí)行手動(dòng)的驗(yàn)收測試和探索式測試等,實(shí)現(xiàn)和執(zhí)行功能和非功能的自動(dòng)化測試前标,統(tǒng)計(jì)和生成測試結(jié)果報(bào)告坠韩。
對于生產(chǎn)的杯子,根據(jù)設(shè)計(jì)的測試方案對產(chǎn)品(半成品)進(jìn)行測試炼列,可能的方式有:往里加水只搁,直接摔到地板上,加熱至100攝氏度俭尖,往里注入硫酸等氢惋。測試之后,統(tǒng)計(jì)和生成杯子的測試結(jié)果報(bào)告稽犁,內(nèi)容包括但不限于測試樣品集明肮、測試方法、測試結(jié)果缭付、成功率等。
4. 缺陷管理
測試之后循未,必然會(huì)發(fā)現(xiàn)很多的缺陷陷猫,對這些缺陷進(jìn)行有效的管理是QA們一個(gè)非常重要的職責(zé)之一。缺陷管理包括以下內(nèi)容:
記錄缺陷
發(fā)現(xiàn)缺陷以后的妖,QA需要盡自己所能去調(diào)查缺陷绣檬,收集所有跟缺陷相關(guān)的信息,包括不限于出現(xiàn)的環(huán)境(操作系統(tǒng)嫂粟、瀏覽器和不同的測試環(huán)境等)娇未、重現(xiàn)步驟、屏幕截圖星虹、日志等零抬,并將這些信息簡單清晰的記錄下來镊讼。確定嚴(yán)重性和優(yōu)先級
嚴(yán)重性是指缺陷發(fā)生對用戶所產(chǎn)生影響的嚴(yán)重程度,優(yōu)先級是指需要修復(fù)的緊急程度平夜,通常需要結(jié)合嚴(yán)重性和發(fā)布計(jì)劃等來確定蝶棋。新QA往往比較容易混淆這兩個(gè)概念,注意它們是有區(qū)別的忽妒,優(yōu)先級高的嚴(yán)重性不一定高玩裙,而嚴(yán)重性高的往往優(yōu)先級比較高。具體需要根據(jù)產(chǎn)品和項(xiàng)目實(shí)際情況來確定段直。分析和跟蹤缺陷
開發(fā)人員修復(fù)缺陷之后吃溅,QA需要測試和驗(yàn)證缺陷,很多時(shí)候缺陷被驗(yàn)證之后就沒人管了鸯檬,但缺陷的生命周期并沒有結(jié)束决侈,后面還有非常重要的分析和跟蹤階段。在這個(gè)階段京闰,QA要分析缺陷產(chǎn)生的原因颜及,影響的功能模塊,過去一段時(shí)間以來的發(fā)展趨勢等蹂楣,根據(jù)這些分析結(jié)果制定下一階段避免和減少同樣缺陷產(chǎn)生所需要采取的行動(dòng)措施俏站,并且跟蹤行動(dòng)執(zhí)行的詳細(xì)情況。
注意
缺陷分析是非常重要的一個(gè)環(huán)節(jié)痊土,但卻很容易被忽略肄扎。關(guān)于缺陷管理的更多詳細(xì)內(nèi)容請參考我的另一篇文章《軟件缺陷的有效管理》。
再來看看杯子的例子赁酝,執(zhí)行一番測試之后犯祠,可能發(fā)現(xiàn)如下缺陷:
- 容積為100毫升的量杯只能盛水80毫升
- 杯子表面不夠光滑但不影響使用
- 清水倒進(jìn)去水變成酸的了
第一個(gè)是嚴(yán)重的功能缺陷,第二個(gè)屬于UI問題酌呆,第三個(gè)可能是一個(gè)非常嚴(yán)重的安全性問題衡载。QA需要將這些缺陷報(bào)告,并根據(jù)嚴(yán)重性和產(chǎn)品流程等來安排優(yōu)先級隙袁,督促開發(fā)人員及時(shí)修復(fù)高優(yōu)先級的缺陷痰娱。缺陷修復(fù)并重新測試沒問題之后,要分析統(tǒng)計(jì)菩收,找出產(chǎn)生缺陷的環(huán)節(jié)梨睁,并采取措施防止下一批杯子出現(xiàn)同樣的問題。
5. 質(zhì)量反饋和風(fēng)險(xiǎn)意識
軟件產(chǎn)品的質(zhì)量不是QA這一個(gè)角色能保證的娜饵,而是需要整個(gè)開發(fā)團(tuán)隊(duì)所有人員齊心協(xié)力坡贺,共同為質(zhì)量負(fù)責(zé)。QA作為質(zhì)量分析保證的主力軍,對產(chǎn)品質(zhì)量需要有更清晰的認(rèn)識遍坟,及時(shí)識別質(zhì)量風(fēng)險(xiǎn)拳亿,并反饋給整個(gè)團(tuán)隊(duì)。
將質(zhì)量相關(guān)因素可視化出來政鼠,是反饋給團(tuán)隊(duì)的較為有效的方式风瘦。質(zhì)量可視化包括但不限于cycle time、自動(dòng)化測試覆蓋率公般、缺陷分析報(bào)告万搔、錯(cuò)誤日志分析、網(wǎng)站分析工具統(tǒng)計(jì)報(bào)告官帘、性能監(jiān)控?cái)?shù)據(jù)瞬雹、安全掃描結(jié)果、用戶反饋刽虹、產(chǎn)品環(huán)境下的缺陷統(tǒng)計(jì)等酗捌,可以根據(jù)項(xiàng)目和產(chǎn)品具體情況具體定義。
定期或者不定期的把這些可視化結(jié)果反饋給團(tuán)隊(duì)涌哲,有助于形成團(tuán)隊(duì)對質(zhì)量的統(tǒng)一認(rèn)識胖缤,發(fā)揮團(tuán)隊(duì)每個(gè)成員對于質(zhì)量保證的主觀能動(dòng)性,從而一起制定和調(diào)整下一階段的質(zhì)量保證策略阀圾。
測試了一批杯子之后哪廓,將杯子的質(zhì)量相關(guān)情況反饋給團(tuán)隊(duì),內(nèi)容可能是:
- 最近這批杯子出現(xiàn)的缺陷明顯比上一批少初烘,可以鼓勵(lì)團(tuán)隊(duì)再接再厲涡真;
- 這批杯子出現(xiàn)了很多嚴(yán)重缺陷,那么就需要組織團(tuán)隊(duì)一起討論問題根源肾筐,考慮采取措施防止問題重復(fù)出現(xiàn)哆料;
- 某一批杯子等待很久才可測,需要分析原因吗铐,采取改進(jìn)行動(dòng)东亦;
- 這一批杯子生產(chǎn)效率明顯比以前有提高,同樣可以確認(rèn)效率提高的原因唬渗,后續(xù)可以以此為參考持續(xù)改進(jìn)和提高典阵。
QA的必備技能要求
硬技能之扎實(shí)的計(jì)算機(jī)基礎(chǔ)
軟件測試的概念雖然已經(jīng)出現(xiàn)多年,但QA或者軟件測試工程師還是被很多人誤認(rèn)為就是簡單的點(diǎn)擊應(yīng)用程序進(jìn)行測試谣妻,是一項(xiàng)沒有技術(shù)含量的工作。其實(shí)卒稳,從前面對QA職責(zé)的描述蹋半,大家可以看到,QA的技能要求還是蠻高的充坑,其中非常關(guān)鍵的一項(xiàng)就是具備扎實(shí)的計(jì)算機(jī)基礎(chǔ)减江,具備基本的編碼能力和數(shù)據(jù)庫操作能力染突。
只有了解系統(tǒng)的工作原理,才能更好的去驗(yàn)證系統(tǒng)的完備性辈灼,發(fā)現(xiàn)問題才能更快更有效的初步定位份企。因此,下次有人問你為啥選擇軟件測試行業(yè)巡莹,千萬別說是因?yàn)樽约杭夹g(shù)不行司志,那樣會(huì)被鄙視的。
各項(xiàng)軟技能
從QA的職責(zé)要求可以看出降宅,做好QA還需要多方面的軟技能:
- 快速理解業(yè)務(wù)的能力:通常豐富的領(lǐng)域知識和快速學(xué)習(xí)新事物的能力可以幫助快速理解業(yè)務(wù)骂远。
- 分析能力和定位問題的能力:執(zhí)行測試和定位缺陷的過程中,這種能力非常重要腰根。
- 良好的溝通表達(dá)能力激才,包括口頭和書面溝通:QA需要跟客戶、需求人員额嘿、開發(fā)人員等不同角色溝通以更好的完成工作瘸恼,良好的溝通將會(huì)事半功倍。
- 踏實(shí)册养、認(rèn)真东帅、細(xì)心:每一個(gè)測試、每一個(gè)缺陷都需要認(rèn)真的對待捕儒,容不得半點(diǎn)浮躁冰啃,這些技能無需細(xì)說。
當(dāng)然刘莹,除此之外阎毅,能在QA職業(yè)道路上有良好的發(fā)展,極其重要的一點(diǎn)是對軟件質(zhì)量相關(guān)工作有濃厚的興趣点弯。
寫在最后
QA在一個(gè)軟件開發(fā)團(tuán)隊(duì)扇调,能與需求人員一起分析需求,能與開發(fā)人員一起編寫測試抢肛,能給團(tuán)隊(duì)和客戶詳細(xì)展示系統(tǒng)功能狼钮,還能更新整個(gè)產(chǎn)品/項(xiàng)目的質(zhì)量狀態(tài),是比PM更為了解產(chǎn)品/項(xiàng)目的人捡絮,聽起來就很厲害熬芜,對不對?
是的福稳,QA就是這么神圣的工作涎拉!你心動(dòng)了嗎?