十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
一
創(chuàng)新互聯(lián)成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),成都響應(yīng)式網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:028-86922220
我在面試時(shí),經(jīng)常會(huì)出一道簡(jiǎn)易計(jì)算器需求的編程題,完了之后再讓寫一下這個(gè)需求的用例,題目看起來很簡(jiǎn)單,但是幾乎可以把我想了解到的基礎(chǔ)測(cè)試?yán)碚撊慷己w了。
今天我還拿這個(gè)例子來實(shí)操下在《測(cè)試人員參與需求評(píng)審的價(jià)值是什么?》中提到的需求評(píng)審關(guān)注點(diǎn)。
比如我現(xiàn)在是產(chǎn)品的角色,我給的需求描述是這樣的:
現(xiàn)在有一個(gè) PC 客戶端的命令行工具,這個(gè)工具可以接收三個(gè)命令行參數(shù),其中,前兩個(gè)是數(shù)字,最后一個(gè)是運(yùn)算符,運(yùn)算符只支持加減乘除四種,工具的功能就是把前兩個(gè)數(shù)字使用運(yùn)算符做下運(yùn)算,然后輸出運(yùn)算結(jié)果。
下面是模擬針對(duì)這個(gè)需求的需求評(píng)審。
二
先是需求合理性的討論。
測(cè)試:「命令行的計(jì)算器,干嘛用的,為啥不用系統(tǒng)自帶的計(jì)算器?」
產(chǎn)品:「恩,目前是演示環(huán)節(jié),先不用考慮使用者,請(qǐng)忽略這個(gè)問題。」
測(cè)試:「為啥是命令行工具?命令行的可控性太差,建議改成 GUI 實(shí)現(xiàn)。」
產(chǎn)品:「本次針對(duì)的是特定的 Geek 群體,習(xí)慣于命令行操作,而且市面上已經(jīng)有很多 GUI 的實(shí)現(xiàn)工具了?!?br/>測(cè)試:「前面兩個(gè)是數(shù)字,最后是運(yùn)算符,不太符合操作習(xí)慣,建議把運(yùn)算符放中間?!?br/>產(chǎn)品:「恩,這個(gè)我們回去考慮下?!?br/>測(cè)試:「確定只需要支持加減乘除么?是不是功能太弱了?」
產(chǎn)品:「這是第一版迭代,后面會(huì)根據(jù)用戶需求再酌情擴(kuò)展,所以這地方開發(fā)記得別寫死了?!?/p>
只是做了下簡(jiǎn)單的需求合理性討論,就變更了一次需求---參數(shù)位置的問題,同時(shí)讓開發(fā)在功能實(shí)現(xiàn)時(shí)提前考慮了可擴(kuò)展性,這些問題如果是在測(cè)試階段提出來,大部分的可能是先不動(dòng)了,不然又得改代碼,如果真的改,開發(fā)和測(cè)試的工作量都會(huì)相應(yīng)增加,如果不改就會(huì)增加下次迭代時(shí)候的工作量,總之,早提出需求合理性討論,有百利而無一害。
三
接著是需求全面性的討論。
測(cè)試:「最大支持的運(yùn)算數(shù)是多少?」
產(chǎn)品:「浮點(diǎn)型的最大值就行?!梗ǘ夹g(shù)的產(chǎn)品都是好產(chǎn)品。)
測(cè)試:「工具是每次運(yùn)行后只做一次運(yùn)算,還是一次運(yùn)算結(jié)束可以繼續(xù)接收新的參數(shù)輸入?」
產(chǎn)品:「第一版不做太復(fù)雜,每次都需要重新執(zhí)行,只接收直接執(zhí)行時(shí)候的參數(shù)傳入?!?br/>測(cè)試:「三個(gè)參數(shù)之間用什么分隔?」
產(chǎn)品:「空格或逗號(hào),兩個(gè)都支持。」
測(cè)試:「這個(gè)得有個(gè)說明吧,不然用戶會(huì)傻傻分不清。」
產(chǎn)品:「對(duì),如果參數(shù)格式錯(cuò)誤輸出一個(gè)使用說明的提示。」
測(cè)試:「如果缺少參數(shù)提示什么錯(cuò)誤信息呢?」
產(chǎn)品:「提示說,你輸入的參數(shù)個(gè)數(shù)不正確,請(qǐng)按照 [運(yùn)算數(shù) 運(yùn)算符 運(yùn)算數(shù)] 的格式輸入?!?br/>測(cè)試:「如果參數(shù)類型錯(cuò)誤提示什么錯(cuò)誤信息呢?」
產(chǎn)品:「提示說,你輸入的參數(shù)類型不支持,請(qǐng)重新輸入?!?br/>測(cè)試:「這個(gè)提示不明確吧?參數(shù)類型不支持,那具體支持哪些類型呢?用戶還是會(huì)懵逼呀。」
產(chǎn)品:「那改一下,你輸入的參數(shù)類型不正確,運(yùn)算數(shù)只支持浮點(diǎn)型,運(yùn)算符中只支持+-*/,分隔符支持空格和的逗號(hào)。」
測(cè)試:「如果除數(shù)為零,提示什么錯(cuò)誤信息呢?」
產(chǎn)品:「提示說,你輸入的除數(shù)為零,請(qǐng)重新輸入。」
除了一個(gè)主分支的問題,其他的都屬于旁支,旁支是對(duì)主分支的補(bǔ)充和完善,也是大家最容易忽視的地方,也是用戶環(huán)境最容易出現(xiàn)問題的地方。
四
怎么樣?這么簡(jiǎn)單一個(gè) if 語句就可以搞定的需求,竟然可以提出 12 個(gè)有效問題,如果這些是在測(cè)試過程中提出,考慮下每個(gè)問題從提出到產(chǎn)品確認(rèn),然后開發(fā)修復(fù),然后測(cè)試驗(yàn)證,這過程的損耗有多大,而如果是在需求評(píng)審階段提出的話,開發(fā)就可以完全按照既定的需求,提前考慮各種場(chǎng)景的處理,極大的減少了需求變化造成的溝通和返工成本。
然后再羅嗦一句,面試過程中會(huì)發(fā)現(xiàn)很多人自己寫的代碼,會(huì)被自己之后寫的測(cè)試用例測(cè)的漏洞百出,就比如除數(shù)為零的考慮吧,如果我們從測(cè)試的角度寫用例,很多人都能考慮到,但是寫代碼呢,99% 的人都沒處理,當(dāng)然不排除一部分人是面試時(shí)候的簡(jiǎn)單實(shí)現(xiàn),但是仍然能說明開發(fā)思維和測(cè)試思維的差異性,所以我想說的是:
1.作為測(cè)試,我們對(duì)開發(fā)的要求,自己盡量也以身作則,這樣才能從開發(fā)的角度上更好的和開發(fā)溝通;
2.作為開發(fā),20% 的代碼做實(shí)現(xiàn),80% 的代碼處理異常,是很正常的事,所以請(qǐng)不要等 bug 上來了才去處理異常;
3.作為產(chǎn)品,要考慮到所有可能出現(xiàn)的和用戶交互的地方,對(duì)于細(xì)節(jié)的處理,一直都是作為產(chǎn)品功底的體現(xiàn),這也是為什么彩蛋稱之為彩蛋,盡可能不要讓它變成臭蛋。
五
好了,這次是從一個(gè)簡(jiǎn)單的需求著手,說說關(guān)于需求評(píng)審的兩個(gè)關(guān)注點(diǎn),可以想象一下,如果是比較大的需求,測(cè)試要提出的問題會(huì)很多,那么就需要考慮一些策略的問題了,比如分批次進(jìn)行評(píng)審,每一次評(píng)審確定下合理的顆粒度,方便大家聚焦,但是不管怎么說,測(cè)試參與需求評(píng)審的作用是很大的。
別看上面的例子簡(jiǎn)單,可能也還有我沒考慮到的點(diǎn)呢,如果你有補(bǔ)充的內(nèi)容,歡迎給我留言。
本文首發(fā)于公眾號(hào)「sylan215」,十年測(cè)試?yán)媳脑瓌?chuàng)干貨,關(guān)注我,漲姿勢(shì)!