軟件開發(fā)出來之后一般經(jīng)過了發(fā)布,之后會(huì)上線商用,如果說此前的測試是實(shí)驗(yàn)室的驗(yàn)證的話,那么此時(shí)就是真正考驗(yàn)軟件質(zhì)量的時(shí)候了,真實(shí)的復(fù)雜組網(wǎng),海量的數(shù)據(jù),實(shí)際的用戶規(guī)模等等。在這樣的情況下,質(zhì)量不過硬的版本往往過不了關(guān),死機(jī),內(nèi)存泄露,明顯的功能遺漏,掛死,用戶體驗(yàn)差等等。此時(shí)大量問題出現(xiàn)的時(shí)候,項(xiàng)目經(jīng)理往往會(huì)問測試人員,“為什么沒有發(fā)現(xiàn)這些問題?”,作為測試經(jīng)理面對此問題,如何思考?
在《A Practitioner’s Guide to Software Test Design》的前言,有這么一段:
Today’s Testing Challenges
For any system of interesting size it is impossible to test all the different logic paths and all the different input data combinations. Of the infinite number of choices, each one of which is worthy of some level of testing, testers can only choose a very small subset because of resource constraints. The purpose of this book is to help you analyze, design, and choose such subsets, to implement those tests that are most likely to discover defects.It is vital to choose test cases wisely. Missing a defect can result in significant losses to your organization if a defective system is placed into production.
測試面臨的挑戰(zhàn)是在有限的資源下,選擇測試無窮集的子集,即“測試就是賭博”,就看怎么選擇這個(gè)子集,才能讓我們的贏面越大。
面對“為什么沒有發(fā)現(xiàn)這些問題?”這樣的問題,我們更應(yīng)該去反思版本發(fā)布前測試選擇的子集是否有所偏差,是否把資源投入到了風(fēng)險(xiǎn)最高的地方,測試設(shè)計(jì)是否存在明顯的漏洞。
什么是風(fēng)險(xiǎn)最高的地方,這就需要測試人員對于項(xiàng)目有充分的了解,對外理解軟件開發(fā)出來是給誰用的,什么樣的客戶;對內(nèi)清楚認(rèn)識(shí)軟件開發(fā)中的需求狀況,人員狀態(tài),項(xiàng)目狀態(tài)。了解清楚是給誰用的,那么就需要了解可以實(shí)際會(huì)如何使用,有條件的話到客戶實(shí)際的環(huán)境體驗(yàn)一下他們的作息時(shí)間,工作環(huán)境,軟件運(yùn)行環(huán)境等,并了解客戶的知識(shí)結(jié)構(gòu)組成(小白用戶?專業(yè)級用戶)等,收集這些信息識(shí)別出對外交付風(fēng)險(xiǎn)。軟件開發(fā)中及時(shí)掌握設(shè)計(jì)/開發(fā)人員工作狀態(tài),交付件(代碼)的質(zhì)量,項(xiàng)目的緊急程度,識(shí)別風(fēng)險(xiǎn)點(diǎn),適時(shí)調(diào)整測試策略。
測試設(shè)計(jì)是否存在明顯的漏洞? 測試人員需要掌握基本的測試設(shè)計(jì)方法,在項(xiàng)目測試測試中靈活運(yùn)用,確保把時(shí)間都花在了刀口子上,利用工具,方法減少無用功,增加贏面。
回到這個(gè)問題“為什么沒有發(fā)現(xiàn)這些問題?”,通過以上2點(diǎn),從測試的角度去分析,基本上能夠回答這個(gè)問題,理論上,所有的問題都是可以測試出來的,那么從改進(jìn)的角度我們更應(yīng)該是分析之前的盲點(diǎn),測試設(shè)計(jì)確實(shí)遺漏了?沒有充分了解客戶的需求?,策略性的放棄了?進(jìn)一步,更應(yīng)該去分析開發(fā)過程中的薄弱點(diǎn),有這么一個(gè)比喻“測試是代碼他爸,開發(fā)是代碼他媽”,問題(BUG)是開發(fā)生產(chǎn)出來的,作為父親的測試應(yīng)該嚴(yán)格的對代碼進(jìn)行‘教育’,那么分析中就必須包括回憶開發(fā)過程中漏洞,是否本身就是復(fù)雜度比較高,容易弄錯(cuò);模塊之間的交互溝通失誤等等,另外很重的一點(diǎn),摘自《軟件測試經(jīng)驗(yàn)與教訓(xùn)》,關(guān)于軟件版本發(fā)布:
請邀請你的項(xiàng)目關(guān)鍵角色和你一起分擔(dān)這種權(quán)利。