我測(cè)了啊,我真測(cè)了!

對(duì)測(cè)試人員來(lái)講惭蟋,什么事情比較尷尬苗桂?
——線上出問(wèn)題。

再尷尬一點(diǎn)兒呢告组?
——沒(méi)測(cè)到煤伟,線上出問(wèn)題。

最尷尬呢木缝?
——明明測(cè)到了便锨,線上還是出問(wèn)題。

場(chǎng)景1:沒(méi)測(cè)到我碟,生產(chǎn)環(huán)境出問(wèn)題

意料之內(nèi)情理之中放案,這太正常了。沒(méi)測(cè)到出了問(wèn)題不該驚訝怎囚,沒(méi)出問(wèn)題才該燒香卿叽。此時(shí)不應(yīng)指責(zé)出問(wèn)題桥胞,而應(yīng)思考沒(méi)測(cè)到的原因是什么恳守。第一反應(yīng)是測(cè)試人員遺漏了,好像也沒(méi)更多原因贩虾。但當(dāng)我們把視角切換到真實(shí)研發(fā)過(guò)程中催烘,就會(huì)發(fā)現(xiàn)沒(méi)測(cè)到的原因?qū)嵲谔嗔耍?/p>

  1. 沒(méi)考慮到,測(cè)試漏測(cè)了
    這真是測(cè)試的鍋缎罢,測(cè)試人員確實(shí)應(yīng)該全面理解業(yè)務(wù)伊群,設(shè)計(jì)高效覆蓋的用例集。但在功能設(shè)計(jì)時(shí)如有良好規(guī)劃策精,可以減少?zèng)]想到造成的漏測(cè)舰始。

  2. 考慮到了,但還是沒(méi)測(cè)
    一般是時(shí)間緊任務(wù)急咽袜,來(lái)不及測(cè)丸卷,但又沒(méi)向團(tuán)隊(duì)暴露風(fēng)險(xiǎn)。多半也是測(cè)試的失職询刹。

  3. 不可抗力必須上線谜嫉,來(lái)不及測(cè)
    大家清楚的知道風(fēng)險(xiǎn),但遇到不可抗力凹联,如法律法規(guī)等沐兰,無(wú)法完成全部測(cè)試就必須上線,這種情況我們且上且觀察蔽挠,共同承擔(dān)風(fēng)險(xiǎn)住闯,并充分思考線上事故的緊急預(yù)案。

  4. 流程問(wèn)題,未經(jīng)測(cè)試就上線
    開(kāi)發(fā)自己上線了功能寞秃,沒(méi)經(jīng)過(guò)測(cè)試人員測(cè)試斟叼,也沒(méi)有充分自測(cè)。這種鬼故事在過(guò)去的職業(yè)生涯中我至少見(jiàn)過(guò)5次春寿。還是不能寄希望于人的專(zhuān)業(yè)性朗涩,更多應(yīng)依賴(lài)于可控可追溯的流程體系來(lái)保證。

  5. 大家認(rèn)同不需要測(cè)绑改,直接上
    比如修改文案谢床,或做簡(jiǎn)單的圖片替換等。越是認(rèn)為沒(méi)問(wèn)題的厘线,往往越出幺蛾子识腿。就好比我們埋頭苦干往往沒(méi)人看,剛要?jiǎng)澦熳常ь^就是老板清靜如水的目光渡讼。軟件就跟成精了一樣,分分鐘教你做人耳璧,質(zhì)量工作真是一絲都不能倦怠成箫。

  6. 所有人都沒(méi)想到,就沒(méi)測(cè)
    之前的一個(gè)項(xiàng)目上旨枯,既有常規(guī)功能的迭代上線蹬昌,又有特殊功能只迭代不上線,為了好區(qū)分攀隔,我們?yōu)椴簧暇€的功能做了開(kāi)關(guān)皂贩,其實(shí)代碼都上去了,只是Feature沒(méi)打開(kāi)昆汹。一次規(guī)模稍大的常規(guī)上線部署完成后明刷,按照慣例驗(yàn)證生產(chǎn)環(huán)境,測(cè)試人員驚訝地發(fā)現(xiàn)本該關(guān)著的功能被打開(kāi)了满粗,不該出現(xiàn)的功能出現(xiàn)了辈末。于是連忙把開(kāi)關(guān)關(guān)掉,并排查原因败潦,發(fā)現(xiàn)是有一個(gè)數(shù)據(jù)庫(kù)腳本把開(kāi)關(guān)數(shù)據(jù)導(dǎo)到生產(chǎn)環(huán)境了本冲。從此以后,每次上線我們都會(huì)檢查所有Feature Toggle的狀態(tài)劫扒。

以上列舉了一些原因檬洞,可能還有其他更多原因。不管什么原因沒(méi)測(cè)到沟饥,終究還是讓缺陷逃逸到生產(chǎn)了添怔。但只要我們找到?jīng)]測(cè)到的原因湾戳,有針對(duì)性的改進(jìn),還是比較容易避免這類(lèi)問(wèn)題的广料。

場(chǎng)景2:明明測(cè)了砾脑,生產(chǎn)環(huán)境還出問(wèn)題

常在河邊走哪有不濕鞋,測(cè)了還出事兒艾杏,這才是該懷疑人生的場(chǎng)景韧衣。這種情況往往問(wèn)題也不好排查,通常是先趕緊排查問(wèn)題购桑,一定時(shí)間窗內(nèi)找不到問(wèn)題或無(wú)法快速解決畅铭,哪怕先回滾呢,事后我們?cè)僮屑?xì)復(fù)盤(pán)勃蜘。測(cè)了還出事兒其實(shí)并不少見(jiàn)硕噩,原因也同樣有很多。

  1. 以為測(cè)了缭贡,其實(shí)沒(méi)測(cè)
    由于測(cè)試人員對(duì)業(yè)務(wù)理解不夠充分炉擅,或者測(cè)試設(shè)計(jì)能力不足,以為已經(jīng)充分測(cè)試了阳惹,但其實(shí)遺漏了比較關(guān)鍵的測(cè)試用例谍失。這類(lèi)問(wèn)題可以直接等同于場(chǎng)景1中的某種情況。

  2. 環(huán)境差異性
    由于生產(chǎn)環(huán)境和測(cè)試環(huán)境的差異性導(dǎo)致測(cè)試結(jié)果的失效穆端。不妨腦洞一下袱贮,都有哪些因素造成了環(huán)境差異性仿便?比如軟件配置上的差異:數(shù)據(jù)庫(kù)賬戶(hù)体啰、接口配置、服務(wù)和端口嗽仪、第三方插件荒勇、集成服務(wù)、不同的應(yīng)用渠道等……或者其他硬件上的差異闻坚。這種情況下可能并不是被測(cè)軟件本身的缺陷沽翔,但由于環(huán)境差異性導(dǎo)致了測(cè)試環(huán)境通過(guò)的用例,在生產(chǎn)環(huán)境下得到了不同的結(jié)果窿凤。

  3. 數(shù)據(jù)差異性
    由于測(cè)試數(shù)據(jù)的差異性導(dǎo)致的生產(chǎn)環(huán)境缺陷并不少見(jiàn)仅偎。在測(cè)試環(huán)境,測(cè)試人員選取典型的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試雳殊,或許是批量生成的有一定規(guī)律的測(cè)試數(shù)據(jù)橘沥。這些數(shù)據(jù)可能用著順手每次都會(huì)被復(fù)用,也可能形成了針對(duì)特定業(yè)務(wù)的測(cè)試數(shù)據(jù)集夯秃。這是好事座咆,但往往就像耐藥性一樣痢艺,這些被測(cè)軟件用習(xí)慣的數(shù)據(jù)不利于揭示新的或隱藏的缺陷。而在生產(chǎn)環(huán)境介陶,由于用戶(hù)量大堤舒、操作不規(guī)范、真實(shí)業(yè)務(wù)的復(fù)雜性等原因哺呜,使得生產(chǎn)環(huán)境的數(shù)據(jù)更具備多樣性舌缤,這就給測(cè)試結(jié)果的準(zhǔn)確性帶來(lái)更大的挑戰(zhàn)。(可參考文末推薦閱讀文章了解更多內(nèi)容)

  4. 用戶(hù)量級(jí)/業(yè)務(wù)量級(jí)差異性
    這其實(shí)也是數(shù)據(jù)差異性的一種某残,單提出來(lái)是因?yàn)橐l(fā)的缺陷不同友驮,上一種情況引發(fā)的是特定測(cè)試用例的結(jié)果不準(zhǔn)確,或者說(shuō)是普通的缺陷驾锰。而由于業(yè)務(wù)量級(jí)不同引發(fā)的往往是性能缺陷卸留,高并發(fā)、大量堆積的業(yè)務(wù)數(shù)據(jù)造成服務(wù)中斷等椭豫,這些情況引發(fā)的缺陷往往業(yè)務(wù)影響更大耻瑟,定位、修復(fù)和性能調(diào)優(yōu)的難度也更大赏酥。哪怕在測(cè)試環(huán)境進(jìn)行了充分的性能測(cè)試喳整,也極有可能在生產(chǎn)環(huán)境并行大量其他業(yè)務(wù)的條件下,造成災(zāi)難般的性能缺陷裸扶。

  5. 其他集成問(wèn)題
    與集成方約定的上線時(shí)間框都、切換動(dòng)作、兼容方式呵晨、集成驗(yàn)證等魏保,都有可能在測(cè)試環(huán)境和生產(chǎn)環(huán)境有所不同。因此摸屠,在上線后與集成方一起驗(yàn)證集成功能的正確性非常必要谓罗。畢竟相比于自己的軟件缺陷,集成引起的缺陷可控性更差季二,修復(fù)周期也更長(zhǎng)檩咱。應(yīng)盡早發(fā)現(xiàn)這類(lèi)缺陷,以免造成更大的損失胯舷。

  6. 上線不完全
    這種就更詭異了刻蚯,軟件功能完全沒(méi)問(wèn)題,各種差異性也已排除或修復(fù)桑嘶,但仍然可能因?yàn)榘l(fā)布問(wèn)題死在線上炊汹。由于發(fā)布本身的復(fù)雜性、上線功能較多不翩、服務(wù)間功能耦合兵扬、或是上線步驟繁瑣麻裳、手動(dòng)操作過(guò)多等原因,都有可能引起上線不完整器钟,一部分關(guān)鍵代碼沒(méi)有上線津坑。這類(lèi)問(wèn)題好發(fā)現(xiàn)好排查,但著實(shí)惡心人傲霸,本不應(yīng)發(fā)生疆瑰。

測(cè)試到底該解決什么問(wèn)題?

先上結(jié)論昙啄,相比于發(fā)現(xiàn)更多缺陷穆役,我認(rèn)為測(cè)試最應(yīng)該解決的問(wèn)題是(每個(gè)字都很重要):

排除
用戶(hù)或客戶(hù)
對(duì)軟件的預(yù)期
和軟件真正的表現(xiàn)
生產(chǎn)環(huán)境上的
差異

具體怎么做呢?可參考以下列表逐步遞進(jìn)地完善實(shí)踐:

  1. 充分了解被測(cè)業(yè)務(wù)
  2. 提升測(cè)試設(shè)計(jì)能力
  3. 在測(cè)試環(huán)境梳凛,確保軟件業(yè)務(wù)功能沒(méi)問(wèn)題
  4. 充分思考環(huán)境差異性
  5. 排除數(shù)據(jù)差異性耿币,用多樣化的數(shù)據(jù)進(jìn)行測(cè)試
  6. 排除或盡力約束集成方問(wèn)題
  7. 在預(yù)生產(chǎn)環(huán)境進(jìn)行完整的回歸測(cè)試和發(fā)布演練(在發(fā)布過(guò)程復(fù)雜或?qū)Πl(fā)布時(shí)間限制較嚴(yán)格時(shí)可選)
  8. 對(duì)發(fā)布后可能出現(xiàn)的風(fēng)險(xiǎn)進(jìn)行預(yù)判,確認(rèn)快速恢復(fù)機(jī)制
  9. 采用自動(dòng)化流程韧拒、發(fā)布預(yù)演等實(shí)踐淹接,確保軟件完全發(fā)布
  10. 完成上線后,立即對(duì)生產(chǎn)環(huán)境進(jìn)行允許的測(cè)試和檢驗(yàn)
  11. 投產(chǎn)使用后叛溢,持續(xù)監(jiān)控服務(wù)日志和業(yè)務(wù)數(shù)據(jù)

本文就進(jìn)行到這兒了塑悼。大家遇到過(guò)哪些類(lèi)似的血淚故事呢?歡迎分享和討論楷掉。
——————————————————————————————————————————

推薦閱讀
1.《生產(chǎn)環(huán)境又有問(wèn)題厢蒜?都是臟數(shù)據(jù)惹的禍!》
2.《一次Testing in Production方案的探索》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烹植,一起剝皮案震驚了整個(gè)濱河市斑鸦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刊橘,老刑警劉巖鄙才,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颂鸿,死亡現(xiàn)場(chǎng)離奇詭異促绵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嘴纺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)败晴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人栽渴,你說(shuō)我怎么就攤上這事尖坤。” “怎么了闲擦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵慢味,是天一觀的道長(zhǎng)场梆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)纯路,這世上最難降的妖魔是什么或油? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮驰唬,結(jié)果婚禮上顶岸,老公的妹妹穿的比我還像新娘。我一直安慰自己叫编,他們只是感情好辖佣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著搓逾,像睡著了一般卷谈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霞篡,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天雏搂,我揣著相機(jī)與錄音,去河邊找鬼寇损。 笑死凸郑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的矛市。 我是一名探鬼主播芙沥,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浊吏!你這毒婦竟也來(lái)了而昨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤找田,失蹤者是張志新(化名)和其女友劉穎歌憨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體墩衙,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡务嫡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了漆改。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片心铃。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挫剑,靈堂內(nèi)的尸體忽然破棺而出去扣,到底是詐尸還是另有隱情,我是刑警寧澤樊破,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布愉棱,位于F島的核電站唆铐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奔滑。R本人自食惡果不足惜或链,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望档押。 院中可真熱鬧澳盐,春花似錦、人聲如沸令宿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)粒没。三九已至筛婉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間癞松,已是汗流浹背爽撒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留响蓉,地道東北人硕勿。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枫甲,于是被迫代替她去往敵國(guó)和親源武。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容