掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
敏捷QA對職業(yè)發(fā)展的擔憂

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設、鷹手營子網(wǎng)站維護、網(wǎng)站推廣。
最近和組內(nèi)的QA聊起以后的職業(yè)發(fā)展,發(fā)現(xiàn)一個有意思的事情,有說想轉BA的,有說想轉開發(fā)的,有說想轉型作PM的,還有想以后往咨詢方向發(fā)展的。很少有說想在團隊里面繼續(xù)作QA的。QA這個角色難道就這么沒有吸引力么?為什么都想轉型或者自己出去單干呢?和組里幾個QA聊了之后,發(fā)現(xiàn)主要因素在于對QA職業(yè)發(fā)展的擔憂,覺得敏捷團隊對專職QA的需求并不大。
記得我剛工作的時候還是有獨立測試團隊的,那個時候分工很明確,我就負責windows mobile(現(xiàn)在叫windows phone)上應用的自動化測試,我的這個職位叫做SDET,說通俗點就是自動化測試工程師。我們這個團隊大概有10人,測試完畢后將結果匯報給測試經(jīng)理。由于產(chǎn)品復雜,需要大量的測試工程師以保證產(chǎn)品能順利發(fā)布。隨著更多功能的加入,測試團隊的人數(shù)也在增加,這段時間是QA最有價值感的時候,產(chǎn)品的發(fā)布最終都由你來把關,你可以根據(jù)興趣來選擇以后做一個性能測試或者安全測試工程師等等,有明確的發(fā)展路線。
但現(xiàn)在越來越多的公司選擇了敏捷轉型,適應變化和快速交付可工作的軟件成為了團隊的關注點。從開發(fā)和用戶的角度看,他們會很樂意接受這個變化,客戶可以不斷看到新功能,開發(fā)可以把精力從繁瑣的文檔和流程上釋放出來,發(fā)揮想象和創(chuàng)意來提供更好的解決方案。可對于QA來說,敏捷帶來了什么好處呢?之前定期有一個可測的穩(wěn)定版本,詳細的需求文檔就是我們參考的對象?,F(xiàn)在要對一個不斷變化著的對象來進行驗證,也沒有一大段時間來設計自動化框架。我們怎么來保證質量呢?
敏捷QA的測試職責
在敏捷的團隊中,質量是由團隊所有人來保證的,我剛開始聽到這句話就像聽到敏捷宣言一樣,知道這有道理,但具體怎么做呢?如果質量是團隊的責任,那么專職的QA干什么呢?
首先我們來看在敏捷團隊經(jīng)常用來保證測試用例達到平衡狀態(tài)的測試金字塔,簡單來說我們可以把更多的測試放在單元和服務級別,因為這些用例更易維護和執(zhí)行,運行效率也更高,可以參照Martin Fowler的TestPyramid。
在這個框架下,很容易讓人產(chǎn)生這樣的誤解:
1. 開發(fā)負責單元測試,不需要QA參與
跟組里的開發(fā)討論過“是否需要QA參與到審查單元測試覆蓋率”的問題,開發(fā)通常會覺得用處不大,因為有專門的工具比如:Cobertura, Jacoco, Istanbul等。這些工具的檢查范圍通常包括:
而QA的檢查可以彌補單純的代碼級別的覆蓋。比如異常處理和邊界值的情況,代碼級別的覆蓋會檢查語句是否執(zhí)行了,但是不能檢查這段邏輯是不是寫了。下面列舉出幾種常用的檢查方法:
有的QA會發(fā)現(xiàn)這些通常是用在黑盒測試里的方法,其實把這些覆蓋盡可能的在單元或者服務級別來實現(xiàn)是一種既有效率,結果反饋又快,又可以直接作為回歸測試的一種很好的途徑。
在項目的實踐中我們可以看到QA參與到單元測試的審查有以下好處:
2. 開發(fā)更適合設計自動化測試框架和接口測試,因為他們寫代碼更有效率
如果說自動化測試和接口測試的目的是比誰寫代碼的效率更高,那么的確這些事情應該由開發(fā)去做,但是作為QA,參與其中的作用在于分析需求以及從客戶的角度來設計用例。
敏捷團隊越來越多的應用行為驅動開發(fā)(BDD)來覆蓋基于服務和UI的測試。
QA會和PO,BA,DEV,UX一起合作,分析軟件的需求,然后將這些需求寫成用戶故事。開發(fā)者負責填充這些故事的內(nèi)容,測試者負責檢驗這些故事的結果。通常,會使用一個故事的模板來對故事進行描述。
故事的模板:
比如:
As a mobile App user
I want to recharge the Mobile phone number with credit card
so that I can have fee to give a call
每一個story有可能會有不同的場景,可以用下面的模板來描述在什么環(huán)境下發(fā)生了什么事情,結果如何。
比如:
Scenario: Recharge with Credit card successfully
Given I logged into the Mobile App
When I go to Recharge page
Then I can see the recharge option listed
And I can see the Mobile phone number input box listed
When I input the phone number
And I select the recharge option as "Credit card"
And I input the Credit card number
And I click the Recharge Button
Then I can see the "Recharge successfully" message shows
QA會和DEV一起合作來實現(xiàn)這些story的自動化測試,常用的工具:
3. 開發(fā)交互進行基于UI的測試就行了,不需要專門的QA進行測試
如果說基于UI的測試就是執(zhí)行測試用例,那么的確不需要專職QA來做,但是在敏捷的團隊中基于UI的測試大部分是以探索性測試來完成的。怎么設計好的探索性測試用例才是專職QA的價值所在。
有人說探索性測試就是手動測試,有的說是隨機測試,有的說就是把自己當用戶來使用軟件的測試。
什么是探索性測試?下面是wikipedia上面的定義:
| Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Cem Kaner, who coined the term in 1984,[1] defines exploratory testing as "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project. |
看完這個解釋更迷惑了,探索性測試到底是什么東西?
舉個簡單的例子,我們聚餐的時候有時候會玩猜數(shù)字的游戲,主持會寫下一個數(shù)字,大家輪流猜,主持會提示大了或者小了。那么下一個人會根據(jù)這個提示來繼續(xù)猜,直到有人猜中這個數(shù)字。這其實就是探索測試的原理,每次都會根據(jù)之前的結果來設計下次的數(shù)字,那個被猜數(shù)字就是defect,每一次猜測都是測試用例。如果你想用最少的次數(shù)來猜中這個數(shù)字,就需要有高效的方法,探索測試也是如此。
敏捷QA存在的價值
以上簡單的描述了在敏捷團隊中,QA在測試中的職責:
其實QA還有很多面向客戶的職責,比如需求澄清以及產(chǎn)品演示,會在后續(xù)的文章去討論。
隨著敏捷的項目越來越多,對QA的需求不是越來越少,而是越來越高,QA需要像一個好的家庭主婦一樣,能里能外,在團隊內(nèi)部能更好的平衡測試設計,在外部能更好的體現(xiàn)產(chǎn)品價值。在一個快速變化的時代,在持續(xù)快速交付的情況下保證質量是一件很困難的事情,解決這個問題就是QA存在的價值。
【本文是專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號:思特沃克,轉載請聯(lián)系原作者】
戳這里,看該作者更多好文

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流