為什么軟件測試部門不喜歡重構(gòu)熟呛?重構(gòu)有什么風(fēng)險

經(jīng)常聽到開發(fā)人員抱怨 ,“這么爛的代碼尉姨,我來重構(gòu)一下!”吗冤,“這代碼怎么能這么寫呢又厉?誰來重構(gòu)一下九府?”,“這兒有個壞味道覆致,重構(gòu)吧侄旬!”

作為一名 QA,每次聽到“重構(gòu)”兩個字煌妈,既想給追求卓越代碼的開發(fā)人員點(diǎn)個贊儡羔,同時又會感覺非常緊張,為什么又要重構(gòu)璧诵?馬上就要上線了汰蜘,怎么還要改?是不是應(yīng)該阻止開發(fā)人員做重構(gòu)之宿?

重構(gòu)幾乎是開發(fā)人員最喜歡的一項(xiàng)實(shí)踐了族操,可 QA 們卻充滿了顧慮,那么為什么 QA 不喜歡重構(gòu)呢比被?

老功能被破壞

不止一次遇到這樣的場景色难,某一天一個老功能突然被破壞了,QA 們感到奇怪等缀,產(chǎn)品這塊兒的功能已經(jīng)很穩(wěn)定了枷莉,也沒有在這部分開發(fā)什么新功能,為什么突然出問題了呢尺迂?

追查下去發(fā)現(xiàn)是近期做了重構(gòu)笤妙。再追問下去,對于老代碼枪狂,已經(jīng)幾乎看不懂老的測試了危喉,可是開發(fā)人員看到代碼的壞味道就想重構(gòu),于是功能破壞了州疾。

在快速迭代的開發(fā)模式下辜限,QA 們主要關(guān)注用戶故事的生命周期,重點(diǎn)測試新的特性功能严蓖,所以對于老功能回歸測試的投入是非常有限的薄嫡,如果開發(fā)人員突然對老功能進(jìn)行了重構(gòu)又沒有告知團(tuán)隊(duì), 這樣的問題很可能就會進(jìn)入生產(chǎn)環(huán)境颗胡,這樣是非常有風(fēng)險的毫深。即便很多開發(fā)人員重構(gòu)老功能時會告知 QA,以提前發(fā)現(xiàn)和修復(fù)導(dǎo)致的問題毒姨,但無疑會大大增加 QA 做回歸測試的負(fù)擔(dān)哑蔫。

新功能推遲/重復(fù)測試

按照用戶故事的開發(fā)流程,開發(fā)人員完成功能后,多方角色會首先在開發(fā)人員的機(jī)器上進(jìn)行用戶故事的快速驗(yàn)收以及探索性測試闸迷,然后開發(fā)人員會提交代碼嵌纲,由 QA 拿到包之后部署到測試環(huán)境進(jìn)行測試。

但有的時候 QA 在開發(fā)機(jī)器上快速驗(yàn)收之后腥沽,開發(fā)人員又進(jìn)行重構(gòu)逮走,曾經(jīng)經(jīng)歷過“故事驗(yàn)收的時候功能都是正常的,拿到包部署之后好多功能不工作了”的事情今阳,跟開發(fā)人員確認(rèn)师溅,又是重構(gòu)導(dǎo)致的。

有時候開發(fā)人員會在用戶故事驗(yàn)收之后告知 QA 還會繼續(xù)重構(gòu)盾舌,QA 可以等到重構(gòu)完成后再拿新的版本做測試墓臭,這樣就會導(dǎo)致用戶故事的測試時間推遲】篌荩或者開發(fā)人員會先重構(gòu)再做驗(yàn)收起便,而這樣又會導(dǎo)致 QA 在開發(fā)機(jī)器上進(jìn)行重復(fù)的驗(yàn)收測試。

無計(jì)劃不可見

開發(fā)人員的重構(gòu)時機(jī)對我們來說是無規(guī)律的窖维。有的時候一邊開發(fā)用戶故事一邊重構(gòu)榆综,有的時候會在故事完成后、QA 在開發(fā)機(jī)器上驗(yàn)證結(jié)束后才做重構(gòu)铸史,有的是代碼評審后大家指出問題后做重構(gòu)鼻疮,有的甚至得等到項(xiàng)目組來了有經(jīng)驗(yàn)的開發(fā)人員才開始重構(gòu)。對 QA 來說琳轿,重構(gòu)的時機(jī)是無計(jì)劃的判沟。

另外重構(gòu)也是不可見的。我們總談可視化崭篡,日常的開發(fā)工作由用戶故事和缺陷來可視化挪哄,而重構(gòu)經(jīng)常是幕后進(jìn)行的,不被跟蹤琉闪、不被記錄迹炼、不可見,有經(jīng)驗(yàn)的開發(fā)人員會在進(jìn)行“大”的重構(gòu)之前口頭告知團(tuán)隊(duì)颠毙,如果沒有告知斯入,就在不知不覺中發(fā)生了,只有功能被破壞了才能意識到蛀蜜。

總結(jié)

以上列出了 QA 不喜歡重構(gòu)的三個理由刻两,歸根結(jié)底其實(shí)都是重構(gòu)不當(dāng)導(dǎo)致的。代碼重構(gòu)(Code refactoring)指對軟件代碼做任何更動以增加可讀性或者簡化結(jié)構(gòu)而不影響輸出結(jié)果滴某。而不當(dāng)?shù)闹貥?gòu)往往只關(guān)注了前半部分卻忽略了對輸出結(jié)果的影響磅摹。

個人認(rèn)為滋迈,如果能夠注意以下幾個方面,也許可以很大程度減少 QA 對重構(gòu)的顧慮:

充足的自動化測試是保障輸出結(jié)果的一個有效途徑偏瓤。不管對于歷史代碼還是新代碼杀怠,進(jìn)行重構(gòu)的前提應(yīng)該是確保這部分功能已經(jīng)被足夠的自動化測試覆蓋, 有的開發(fā)人員認(rèn)為這是一個不可行的建議厅克,因?yàn)椤俺渥恪睂τ诿總€人每個角色的標(biāo)準(zhǔn)可能是不一樣的,QA 也許永遠(yuǎn)都不會覺得測試足夠橙依,但是其實(shí)可以借助測試覆蓋率等度量工具证舟,甚至直接針對功能特性由 QA 來定義需要哪些自動化測試,在補(bǔ)齊這些自動化測試的基礎(chǔ)上再做重構(gòu)窗骑。

對于新功能的重構(gòu)女责,應(yīng)該融入到正常開發(fā)過程中,在故事驗(yàn)收之前已經(jīng)完成相應(yīng)的重構(gòu)创译,因?yàn)樽詣踊瘻y試不是萬能的抵知,也不可能達(dá)到 100% 的覆蓋率,所以還是需要 QA 驗(yàn)證的软族。這么做就意味著客戶要為我們的重構(gòu)買單刷喜,所以作為軟件領(lǐng)域?qū)<业奈覀儯绾巫寴I(yè)務(wù)領(lǐng)域?qū)<业目蛻衾斫庵貥?gòu)的價值立砸,這就變的至關(guān)重要了掖疮。

小步前進(jìn),盡量避免或者減少大的重構(gòu)颗祝,這樣可以減少突然增多的回歸測試工作量浊闪,也會減少功能被破壞的風(fēng)險。如果發(fā)生了大的重構(gòu)螺戳,反思一下是哪里出了問題搁宾?是我們積攢了太多的技術(shù)債?還是業(yè)務(wù)領(lǐng)域模型發(fā)生了大的改變倔幼?然后采取措施避免類似的事情再度發(fā)生盖腿。

對于一些核心功能或者組件,進(jìn)行重構(gòu)之前盡早告知團(tuán)隊(duì) QA凤藏,如果能夠給 QA 講解一下重構(gòu)的目的以及本次重構(gòu)可能會影響到的業(yè)務(wù)區(qū)域會對 QA 有很大的幫助奸忽。這樣做一方面可以讓 QA 把重心放在最容易受到影響的功能上加強(qiáng)回歸測試,另一方面也能幫助 QA 更合理地安排測試計(jì)劃揖庄。

盡量避免在產(chǎn)品上線前進(jìn)行重構(gòu)栗菜,不僅可以減輕 QA 回歸測試的負(fù)擔(dān),也會降低功能破壞后來不及修復(fù)的風(fēng)險。

重構(gòu)的目標(biāo)是為了改善代碼質(zhì)量港粱,長遠(yuǎn)來看應(yīng)該是可以減少軟件缺陷的,從這個角度來說 QA 和開發(fā)人員的目標(biāo)是一致的截歉,我們相信而咆,如果重構(gòu)恰當(dāng)霍比,必定對項(xiàng)目是有利無害的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暴备,一起剝皮案震驚了整個濱河市悠瞬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涯捻,老刑警劉巖浅妆,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異障癌,居然都是意外死亡凌外,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門涛浙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來康辑,“玉大人,你說我怎么就攤上這事轿亮〈保” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵哀托,是天一觀的道長惦辛。 經(jīng)常有香客問我,道長仓手,這世上最難降的妖魔是什么胖齐? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮嗽冒,結(jié)果婚禮上呀伙,老公的妹妹穿的比我還像新娘。我一直安慰自己添坊,他們只是感情好剿另,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贬蛙,像睡著了一般雨女。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阳准,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天氛堕,我揣著相機(jī)與錄音,去河邊找鬼野蝇。 笑死讼稚,一個胖子當(dāng)著我的面吹牛括儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锐想,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼帮寻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赠摇?” 一聲冷哼從身側(cè)響起固逗,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎藕帜,沒想到半個月后抒蚜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耘戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了操漠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片收津。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浊伙,靈堂內(nèi)的尸體忽然破棺而出撞秋,到底是詐尸還是另有隱情,我是刑警寧澤嚣鄙,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布吻贿,位于F島的核電站,受9級特大地震影響哑子,放射性物質(zhì)發(fā)生泄漏舅列。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一卧蜓、第九天 我趴在偏房一處隱蔽的房頂上張望帐要。 院中可真熱鬧,春花似錦弥奸、人聲如沸榨惠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赠橙。三九已至,卻和暖如春愤炸,著一層夾襖步出監(jiān)牢的瞬間期揪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工摇幻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留横侦,地道東北人挥萌。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像枉侧,于是被迫代替她去往敵國和親引瀑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

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