探索QA的思維方式
作者 | 趙瑞華
隨著測(cè)試人員陸續(xù)開(kāi)始嘗試角色轉(zhuǎn)變,堅(jiān)守的QA需要找到自己的發(fā)展之路。興趣和性格是客觀因素,好奇心和發(fā)散性思維則是幫助成為優(yōu)秀QA的必要因素。我想通過(guò)一些小的例子來(lái)與大家互動(dòng)探討。
測(cè)試你做對(duì)了嗎?
讓我們從這樣一個(gè)現(xiàn)實(shí)中的小例子來(lái)開(kāi)始我們的思考之旅 “假如一堆稻草中不小心掉入了一根針,我們?cè)撊绾螌⑺页瞿???/p>
回想當(dāng)時(shí)看到這個(gè)題目時(shí),我的第一反應(yīng)是太難找了。從這個(gè)小事例聯(lián)想到自己的工作,我作為QA或多或少是否做過(guò)類似的事情呢?在初入行業(yè)的時(shí)候我可能就是這個(gè)在草堆里找針的人,我花費(fèi)了大量的時(shí)間仔細(xì)地在草堆外面認(rèn)真查找,甚至使用了放大鏡一點(diǎn)一點(diǎn)的反復(fù),努力不漏過(guò)每一個(gè)角落。再后來(lái)慢慢積攢了一些經(jīng)驗(yàn),我開(kāi)始使用工具了。我嘗試使用不同吸力的磁鐵,金屬探測(cè)設(shè)備。這正是我工作經(jīng)歷中的純黑盒測(cè)試階段與純自動(dòng)化UI測(cè)試階段。
在有了不同的經(jīng)歷后,我開(kāi)始反思自我。類似大草堆里找針這么大的工程,耗時(shí)耗力,是否會(huì)有更好的辦法呢?我真應(yīng)該去多了解一下每個(gè)產(chǎn)品使用的工具與技術(shù),以及深入了解并參與它的搭建過(guò)程。于是我加入了TW,開(kāi)啟了第三段測(cè)試之旅。
再回來(lái)看看這個(gè)例子,我在想也許草堆的中間是空心的,有一扇隱形的門可以走進(jìn)去。但是在過(guò)去我竟然沒(méi)有想過(guò)要去嘗試(當(dāng)然,這里所說(shuō)的沒(méi)有嘗試是比較夸張了點(diǎn))。在我們打算開(kāi)始堆草堆的時(shí)候就應(yīng)該考慮的更多一些,制定相應(yīng)的策略保證在堆積的過(guò)程中不會(huì)有一些雜物不小心被堆進(jìn)去,我們應(yīng)該爭(zhēng)取在草堆堆積的過(guò)程中不讓這根針有機(jī)可乘。
多思考,多探討,不要急于開(kāi)始
有人告訴我下面這張圖片中有一只蟲(chóng)子,讓我猜猜它在哪里?我仔細(xì)地找了一遍沒(méi)找到,于是又開(kāi)始第二遍第三遍的尋找。甚至試圖拿著放大鏡仔細(xì)研究這張圖片。我努力不放過(guò)每一個(gè)角落??墒亲罱K我也未能找到,這只Bug到底藏在了哪里呢?
等到答案揭曉的時(shí)候,我忽然意識(shí)到了作為QA我竟然忽略了最重要的東西——澄清。上周在聽(tīng)冰玉老師的session《構(gòu)建體系化思維》時(shí),她對(duì)于這塊也做了詳細(xì)的講解。對(duì)于她給出的測(cè)試茶杯的例子印象非常深刻。面試的時(shí)候經(jīng)常會(huì)隨機(jī)問(wèn)候選人,水杯怎么測(cè),插線板怎么測(cè),開(kāi)關(guān)怎么測(cè)。有相當(dāng)一部分的候選人覺(jué)得蒙圈,也有人覺(jué)得非常容易,很多人沒(méi)有要求思考時(shí)間也不提問(wèn),直接開(kāi)始回答。這樣草率的回復(fù)怎么可能會(huì)是面試官想要聽(tīng)到的答復(fù)呢?
下面我以所在的某項(xiàng)目中最近發(fā)生的一件事情為例引入我自己的一些反思。我們會(huì)批量生成一種類似于限量版的現(xiàn)金券,用戶收到該現(xiàn)金券便可使用它并從中受益,前期我們只做了簡(jiǎn)單的生成與存儲(chǔ)。Marketing團(tuán)隊(duì)會(huì)根據(jù)規(guī)則手動(dòng)將限量版的現(xiàn)金券發(fā)給特定的用戶群體。該功能投入生產(chǎn)后反響很棒,于是我們決定將發(fā)送流程自動(dòng)化,集成到內(nèi)部后臺(tái)系統(tǒng),根據(jù) Marketing 團(tuán)隊(duì)上傳的用戶列表生成對(duì)應(yīng)的現(xiàn)金券并綁定到相應(yīng)的用戶賬戶。到這里所有的需求都很清晰明了。
接下來(lái)客戶提出來(lái)既然券都跟用戶綁定了,那么我們?yōu)槭裁床话阉故窘o用戶呢?于是提出了我們需要做一個(gè)最早可用版本用來(lái)展示功能。我們?yōu)榇藢iT定了一次會(huì)議,參與的人有客戶多部門的老大以及我們項(xiàng)目小組的所有相關(guān)人員。大家都很興奮我們要實(shí)現(xiàn)這樣一個(gè)功能了,我們討論了需求,設(shè)計(jì),需求將要帶來(lái)的價(jià)值以及如何衡量這個(gè)需求是否成功的指標(biāo)與方法。我們也書寫了相關(guān)的需求文檔。然而UX老大參與DC的時(shí)候,他詢問(wèn)了我們這個(gè)版本是要給內(nèi)測(cè)人員看嗎?經(jīng)過(guò)一番討論,這時(shí)我們才發(fā)現(xiàn)大家的理解不一致。由于我們開(kāi)始討論的時(shí)候提到了想根據(jù)市場(chǎng)效果再?zèng)Q定是否繼續(xù)做下一個(gè)版本,我們組的UX理解我們只給內(nèi)測(cè)用戶展示,所以她設(shè)計(jì)了一個(gè)很簡(jiǎn)單的展示版本。而其他人則認(rèn)為想先實(shí)現(xiàn)簡(jiǎn)化版的功能,再根據(jù)市場(chǎng)反饋決定是否再進(jìn)一步投入時(shí)間進(jìn)行優(yōu)化。等國(guó)慶假期過(guò)去了,我看到它竟然還沒(méi)有發(fā)布。直到上周我們終于發(fā)布了這個(gè)功能。
大致增加了:
- 復(fù)雜漂亮的UX 設(shè)計(jì)
- 分享現(xiàn)金券給他人
- 用戶事件記錄
- 自動(dòng)發(fā)送通知給收到現(xiàn)金券的用戶
- ......
對(duì)于純純的遠(yuǎn)程協(xié)作團(tuán)隊(duì)(成員分散在超過(guò)四個(gè)國(guó)家,超過(guò)5個(gè)城市),我們的線下交流少之又少。每天的交流主要是在站會(huì)和Mob會(huì)議里(每天4小時(shí)),如果在我們開(kāi)會(huì)討論需求的時(shí)候多討論幾句,在我們每天交流中多探討一些??赡芪覀兡芨绲囊庾R(shí)到了我們大家對(duì)于_Earlist usable_ 的理解是不同的,我們就能提早設(shè)計(jì),不至于后來(lái)返工拖延了發(fā)布。在后來(lái)的retro中,大家一致認(rèn)為在開(kāi)始每一項(xiàng)工作之前我們就應(yīng)該做足夠的思考與探討。
花絮: 盡管有點(diǎn)插曲,但是在發(fā)布前內(nèi)測(cè)的時(shí)候,客戶的老大們對(duì)這個(gè)功能的實(shí)現(xiàn)非常滿意,團(tuán)隊(duì)開(kāi)始咨詢marketing是否可以給我們每人一張現(xiàn)金券??蛻舻睦洗髠円查_(kāi)始通過(guò)這種方式去分享現(xiàn)金券給他們的好友們。
跳出思維定式的束縛
讓我們從一個(gè)簡(jiǎn)單的小互動(dòng)開(kāi)始,一起感受一下我們?cè)趺纯紤]這個(gè)問(wèn)題。請(qǐng)大家拿出小本本一起畫出如圖的9個(gè)點(diǎn)。然后用一筆將9個(gè)點(diǎn)連起來(lái),你會(huì)怎么連呢?
1.不同起點(diǎn)回形繞圈
2.Z形
3.三角風(fēng)箏形
4.用一根足夠粗的筆一筆劃過(guò)
我相信一定有很多聰明的小伙伴們想到了第四種方法。此處有掌聲??????但是還是會(huì)有很多小伙伴很容易被問(wèn)題中“連起來(lái)”幾個(gè)字帶著開(kāi)始連線而忽略了最簡(jiǎn)單的一筆劃過(guò)。
我看到過(guò)這樣一個(gè)實(shí)驗(yàn),將相當(dāng)數(shù)量的蜜蜂和蒼蠅置于一個(gè)開(kāi)口的瓶子中,將瓶子放倒,讓瓶底朝著有光的地方。大家猜猜接下來(lái)會(huì)發(fā)生?
結(jié)果蒼蠅跑光了,而蜜蜂基于出口就在光亮處的思維方式,設(shè)定了出口就是那個(gè)有光的地方,所以它們一直朝著光亮的地方努力而忽略了藏在暗處的出口,一次次地撞向瓶底。而毫無(wú)邏輯的蒼蠅到處亂飛卻意外地找到了出口。
大多數(shù)時(shí)候思維定式?jīng)]有錯(cuò),但是在一個(gè)產(chǎn)品上工作久了的伙伴或多或少都會(huì)遇到越熟悉的地方越容易出錯(cuò)的情況。我自己也曾遇到過(guò)類似的問(wèn)題。日復(fù)一日測(cè)試類似的功能讓我們很容易形成了思維定式,形成了固定的操作習(xí)慣。對(duì)于熟悉的功能反而考慮得不再那么周全,總是以老的方式去考慮熟悉的功能,殊不知在不知不覺(jué)中它已不再那么熟悉。而對(duì)于新的功能模塊大家通常都會(huì)格外的小心謹(jǐn)慎和關(guān)注。所以我自己會(huì)定期復(fù)盤,定期反思。一旦發(fā)現(xiàn)自己沉浸于思維定式里,一定要設(shè)法打破它。盡管我自己其實(shí)做的也并不是很好,但是我時(shí)常會(huì)反省并時(shí)刻提醒自己。
保持好奇,多提問(wèn)
這里又來(lái)了一個(gè)有意思的小互動(dòng),請(qǐng)大家?guī)兔φ艺乙韵逻@段話中包含有多少個(gè)字母F?
答案是6個(gè),你找對(duì)了嗎?
請(qǐng)大家再一次幫忙找找這段話中有多少F呢?
答案是68個(gè),這次你對(duì)了嗎?
請(qǐng)大家再一次幫忙找找這段話中有多少F呢?
答案是68個(gè),這次你對(duì)了嗎?
請(qǐng)大家回想一下在第一遍大家都是如何找的呢?有沒(méi)有漏掉的呢?在第二遍查找的時(shí)候大家又是如何做的呢?是否將第一次漏掉的字母找到了呢?看到這個(gè)配色大家應(yīng)該多少有點(diǎn)好奇,為什么好好的一段話要用黑色背景,有多少人因?yàn)楹闷娑隽诉M(jìn)一步的思考與調(diào)查呢?聯(lián)想我們的日常工作,我們可能偶爾的遇到了一些奇奇怪怪的問(wèn)題,但是刷新,重試之后我們發(fā)現(xiàn)問(wèn)題不存在了,我們是否繼續(xù)深究了呢?
很多時(shí)候往往都是這些不起眼的小問(wèn)題積壓最終導(dǎo)致越來(lái)越多的系統(tǒng)問(wèn)題。所以在我們每次遇到這些行為的時(shí)候一定要保持住好奇心,多思考多調(diào)研。即使不能重現(xiàn),我們可以停下來(lái)休息一下,畫一畫,再深入思考一下。我們可以截圖,查看日志,回想自己的操作步驟和不尋常之處(也可以利用系統(tǒng)的行為跟蹤工具,總結(jié)反饋或者咨詢相關(guān)人員。又或者我們可以記錄一個(gè)stakehold卡在我們的backlog里面用來(lái)追蹤后續(xù)。)一定不要等到有一天客戶報(bào)了問(wèn)題過(guò)來(lái),我們突然意識(shí)到這個(gè)錯(cuò)誤,這個(gè)問(wèn)題自己曾經(jīng)也遇到過(guò)。當(dāng)然我們也得綜合考慮一下投入產(chǎn)出比,以及問(wèn)題所帶來(lái)的用戶影響有多大,優(yōu)先級(jí)如何等。
在移動(dòng)端測(cè)試中經(jīng)常會(huì)有一些偶現(xiàn)的問(wèn)題,有的問(wèn)題真的是特別邊緣的情況,多個(gè)條件同時(shí)滿足才能偶爾觸發(fā)。有的卻是通過(guò)某些特定的操作就會(huì)100%觸發(fā)。所有保持好奇,適當(dāng)?shù)耐度胍恍┱{(diào)研是很有非常有必要的。
提高專注還得發(fā)散
這個(gè)小題目貌似有點(diǎn)自相矛盾,到底是要專注呢還是要發(fā)散呢?讓我們還是先從互動(dòng)開(kāi)始探討。假如有一個(gè)大的正方形,它被平均分為了四個(gè)小的正方形ABCD。A、B、C三個(gè)小正方形內(nèi)分別嵌套了一個(gè)更小的正方形,那么請(qǐng)按照要求的規(guī)則將每個(gè)圖形淡灰色部分進(jìn)行切分。
1.請(qǐng)將右上角的正方形A中淡色部分分成兩個(gè)相同的圖形
2.請(qǐng)將左上角的正方形B中淡色部分分成三個(gè)相同的圖形
3.請(qǐng)將左下角的正方形C中淡色部分分成四個(gè)相同的圖形
4.請(qǐng)將右下角的正方形D中淡色部分分成七個(gè)相同的圖形
如果按順序來(lái)做這四次分割,每次成功完成一步我們會(huì)很容易嘗試使用相同的方法求進(jìn)行下一次的圖形分割。然而到了第四步,我們可能還會(huì)專注于之前的分割思路。假如我只給出了一個(gè)單獨(dú)的正方形讓大家分成七份,大家應(yīng)該都會(huì)很容易就可以分成功。
再來(lái)說(shuō)說(shuō)我自己,入行不久我就發(fā)現(xiàn)我自己的思維比較發(fā)散,想象力豐富,我經(jīng)常是團(tuán)隊(duì)中討論需求提問(wèn)最多的那個(gè)人。每次有了新的需求,除了需求本身的描述,我可能會(huì)瞬間聯(lián)想到與它相關(guān)的大大小小的功能。時(shí)間久了我慢慢的反思總結(jié),在討論需求的時(shí)候我們優(yōu)先需要考慮需求本身,我們需要更多的關(guān)注點(diǎn)。其次,我們?cè)傧蛲獍l(fā)散考慮更多更深更遠(yuǎn)的情況。
在之前的一家公司我們經(jīng)常在發(fā)布前回歸測(cè)試階段抽出一定的時(shí)間來(lái)做隨機(jī)測(cè)試。經(jīng)常發(fā)現(xiàn)隨機(jī)測(cè)試發(fā)現(xiàn)的問(wèn)題要比我們遵從測(cè)試用例做回歸測(cè)試發(fā)現(xiàn)的問(wèn)題多一些。就我自己而言在隨機(jī)測(cè)試階段我可以掙脫束縛,隨心的設(shè)想一些配置,再搭配上特定的一些用戶行為。而在做隨機(jī)測(cè)試的時(shí)候,也不是完全沒(méi)有章法的胡亂點(diǎn)擊一通。我經(jīng)常會(huì)提前設(shè)想一些情況,在紙上列出來(lái),再思考并挑選一些出來(lái)。但是往往在操作的過(guò)程中我的步驟就突然間改變了,我會(huì)操作完某一步后,突然間聯(lián)想到另外的一些情況。然后轉(zhuǎn)而去嘗試。結(jié)果大多數(shù)時(shí)候都會(huì)有出乎意料的發(fā)現(xiàn)。
我總結(jié)了一下我自己,我本身的性格非常急,所以在日常工作中,我可能有時(shí)候容易思想不夠集中。尤其是在那種特別長(zhǎng)的會(huì)議里,我經(jīng)常會(huì)在聽(tīng)到發(fā)言人的某些發(fā)言后瞬間蹦出一長(zhǎng)串的疑問(wèn),這時(shí)候怎么辦呢?
以前的我可能會(huì)很激動(dòng)地就直接發(fā)問(wèn)了?,F(xiàn)在的我慢慢地意識(shí)到自己的問(wèn)題,于是我學(xué)著將自己的思緒拉回,不要繼續(xù)在自己的疑問(wèn)里越走越遠(yuǎn)。我會(huì)強(qiáng)迫自己繼續(xù)聽(tīng)發(fā)言人的后續(xù)發(fā)言,結(jié)果往往會(huì)發(fā)現(xiàn)會(huì)議結(jié)束的時(shí)候我的很多問(wèn)題都不是問(wèn)題了或者并不那么重要了。說(shuō)了這么多我其實(shí)就是想分享一下我自己關(guān)于專注與發(fā)散的經(jīng)驗(yàn)。我相信很多QA在專注力與發(fā)散這塊都有一些很好的見(jiàn)解,歡迎大家分享探討~
小結(jié)
賣了這么多關(guān)子,到了我該回答問(wèn)題的時(shí)候了。這么多年我也不是沒(méi)有動(dòng)搖過(guò),但是每一次動(dòng)搖的時(shí)候我都進(jìn)行了深入地思考。我嘗試自問(wèn)自答,最終我還是堅(jiān)守在QA這個(gè)崗位。對(duì)于我為什么堅(jiān)守,我想首先肯定是非常喜歡的。其次我覺(jué)得是因?yàn)檫m合,這得歸功于我超強(qiáng)的好奇心以及發(fā)散的思維方式。當(dāng)然也有性格相關(guān)的因素在里面。另外,作為一名QA,我們必須要有很強(qiáng)的責(zé)任心與溝通協(xié)作能力。