** 你跟開發和諧麼?**
java
導語:測試工做從業者,打交道最多的就是開發,而測試和開發之間的關係在行業內被稱爲‘天敵’。python
** ‘天敵’關係造成的緣由 **shell
那做爲測試工程師,你知道要怎麼更好地來處理跟開發之間的關係麼?其實對於這種‘敵對’關係,咱們也不難理解。數據庫
開發是產品的製造者,產品就至關於他的‘孩子’,而測試的工做是去尋找這個「孩子」身上的毛病。相信,沒有一個媽媽喜歡本身的孩子被各類挑錯,而後要讓本身去糾錯進行重塑。因此,人之常情,開發和測試的這種自然冤家的屬性確實在所不免。因此咱們常常能在公司各個的茶水間或者會議室看到這樣的一些對話和小場景: 緩存
幾個測試工做人員抱怨開發的各類行爲:安全
A:xx開發每次開一個bug就過來讓我重現,明明我bug裏的步驟描述得已經很清楚了,他本身都不會操做一下的!服務器
B:xx開發太依賴測試了,相同的bug提出一處改一處,同類型的bug在相關的模塊不能一併修改了麼?單元測試
C: 遇到不想修復的bug,就說本身本地是好的,或者質疑測試的版本不對,再否則就說用戶不會這麼操做,不用修復,反正就是千方百計的不修bug!測試
D:開了bug開發就讓我清數據,清緩存,或者重啓手機,三兩下就把bug整不見了,復現不出來了,就說看吧,不能復現,不修復了!日誌
E:我開了一個bug,開始明明能穩定復現,而後開發一直放在那裏無論,等過了一段時間後,個人環境被破壞了,或者測試版本升級了,又讓我復現這個bug,浪費時間從新搭環境不說,bug還常常再也不復現了,而後他又說不能復現因此bug就不修復了...
F: 開發修完這個bug單元測試報告沒有,並且bug描述備註也沒有,不說清楚根本緣由和影響模塊,我怎麼作迴歸測試啊! ……
測試對開發的種種行徑,哀聲怨道,不絕於耳。
固然,開發對測試的態度也好不到那裏去,你一樣能常常聽到開發圍在一塊兒埋怨測試人員:
A: xx常常開一些這麼小的bug,還總要求開發改,影響又不大,還耗時費力,測試都不懂項目管理和預估風險啊?
B:這些明明是客戶端的bug,指派給咱們服務器是幾個意思?測試都不會本身先定位一下的麼?這點業務能力都沒有!
C: 常常花費了大量的時間排查和定位bug,最後居然發現是無效的bug,測試到底有沒有搞清楚需求?簡直是浪費你們的時間!
D:明明是個Major的bug,卻給我報成critical級別,還害我被領導催加班,本身謹慎一點定bug級別不行麼?
E:xx測試老是一直在問bug產生緣由和解決方法,測試又不懂代碼,說了也不明白,一直解釋也是浪費你們時間!
F: 測試成天搞一堆流程和文檔,要開發提供這個提供那個,開發寫代碼哪有那麼多時間! ……
看着這些言辭相信做爲測試工程師的你確定以爲一點都不陌生。由於立場不同,職責不同,出現這樣的分歧和矛盾也無可厚非。可是,若是天天工做在這樣的氛圍裏,天天都須要花心思去跟開發鬥智鬥勇,不止影響咱們天天的心情,並且確定也會影響咱們的工做效率。
因此,做爲測試工程師,咱們到底能夠作些什麼來改善這種敵對關係呢?或者說能夠從哪些方面來努力融洽咱們的工做氛圍呢?
** 測試如何改善?**
> >業務能力
1. 我以爲測試工程師應該提升本身的核心業務能力,讓開發挑不出來毛病,從而對你產生信任甚至歎服。
關於這點我本身是有親身經歷的,因此深有體會。我曾經工做2年左右,跳槽到一家外企作一名senior測試工程師。剛到公司參與項目的時候老是格外的謹慎,開bug也要通過再三確認纔會發出去。可是就算是這樣,跟公司的開發的矛盾也仍是沒有幸免。當時公司的開發老大是個特別強勢的人,聲音大氣勢強,一說話能把人嚇懵的那種。我當時開了一個bug,在個人環境下面再三確認過,是個可以穩定復現的嚴重bug,因此我標記爲了critical的級別,而且指派給開發。對應模塊的開發大體定位了一下,沒有復現出來。而後這個開發老大,就氣勢洶洶的過來測試辦公區,趾高氣昂地跟個人測試經理說:
‘大家測試怎麼開bug的,是否是bug本身有沒有搞明白啊?如今開發的環境裏就是OK的,確定是大家的測試環境的問題或者操做方法的問題!下次搞清楚再發bug,不要浪費開發的時間...’
這些話說的一點都不客氣,矛頭全指向測試這邊,不留任何餘地。
我當時心裏確定是很生氣的,可是我沒有直接站起來跟他理論,由於我知道,須要理論必需要掌握有效的證據,本身才能有底氣,否則就是強詞奪理,沒有勝算。
因此,我在本身的環境下再次成功的把這個問題復現出來,而後再去找到開發,幫助他搭建一樣的環境,告知穩定的復現步驟,將bug在他的環境下復現,而且協助開發把問題定位出來,只須要他們修改對應的代碼就能夠了。
整個事情,我沒有去爭吵,沒有去理論,用本身專業的業務能力,讓他們心服口服。
從此次事情以後,整個開發團隊對個人態度明顯的改善了,不只再也不趾高氣昂的指點和質疑個人工做,並且在要修改bug的狀態(非修復狀態)的時候也會先跟我確認,獲得准許以後才作相應狀態的修改。
個人工做開展順利了不少。
因此,要避免落人口舌,請先作好本身。測試作好本身的首要前提,就是必需要提升本身的業務能力:
◆ 一方面要充分的熟悉產品,理解產品的邏輯和實現,在這個基礎上,不只會提升你的測試技能和工做效率,並且在被開發質疑的時候,也能有紮實的產品知識作後盾,有充分的底氣去作辯解,理論纔有勝利的可能;
◆ 另外一方面,也要規範本身的工做的輸出。例如保證各類測試文檔(測試計劃,測試用例和測試報告等)的質量,能夠經得起開發、產品等各部門的審覈;好比保證輸出的bug質量,編寫bug的描述和步驟清晰,bug的嚴重級別定位準確,以及定位日誌和現場截圖齊全,不給開發留下挑刺的餘地。
提升了本身的工做質量,才能夠用同等的標準去要求開發,才能在守住測試的立場的同時,也贏得對方的尊重。
> >技術能力
2. 其次,測試人員也須要提升本身的技術能力,包括測試的技能,以及測試相關的技術能力和知識領域。
一樣給你們分享一個真實的故事。
我原來有一個同事,也是作測試的,由於是黑盒測試,她並不懂代碼。在項目工做過程當中,她遇到一個合做很不愉快的開發,每次想更加深刻地熟悉產品的功能實現和業務邏輯的時候,諮詢開發,他都很不配合。兩我的爭吵過,也互懟過,甚至雙方領導調解過,可是都不見情形的改善。
沒有辦法,爲了保證本身的測試任務可以按時按量的完成,她只能逼着本身去閱讀產品的源代碼。
雖然一開始都看不懂,可是她堅持,一邊找資料,一遍諮詢別人,最後終於把這個產品相關模塊的代碼都熟悉了。
在隨後的測試過程當中,遇到bug,她能夠本身準確的定位出來是那一塊代碼的缺陷。
今後之後,再也沒有聽過她跟那個開發爭吵了,由於她本身已經成爲了那個最熟悉產品的人,無論從功能實現,仍是代碼邏輯,她都瞭然於心。
技術在手,無求於人。
因此,測試工程師能夠適當的有針對性的提升本身的技術能力。
那從哪些方面提升呢?
◆ 第一,確定是測試的技能,測試流程以及各類測試方法的掌握是測試工做的基礎,因此這個是必需要掌握的;
◆ 第二,第二,最好能熟悉至少一門語言,無論是java,C++,或者其餘的腳本語言python,perl以及shell,掌握其中1-2個就能夠。有了語言基礎,測試能夠更加深入的理解產品的實現,也可以更加清楚的知道bug常常會出現的模塊,可以對產品進行更加充分的測試;
◆ 第三,須要至少要掌握一種數據庫的使用,如對SQL的操做,能運用JOIN進行查詢,或者HAVING用法,測試人員離不開數據庫的管理和操做,本身掌握了這方面的技能,就不再用依賴開發,減小本身的被動性;
◆ 第四,也須要熟悉系統的相關操做,如安裝,配置,管理,對於Linux系統須要熟悉經常使用的操做命令,能在Linux下能安裝和配置軟件等。
總之,提升了本身各方面的技術能力,纔可以在工做中充分發揮本身的主觀能動性,不過度依賴開發,才能提升本身在開發心目中的專業性,贏得雙方平等的待遇。
> >溝通能力
3. 再者,測試工程師也要提升本身的情商,加強本身的溝通能力,懂得站在開發的角度思考問題,學會去尊重開發人員。
相信你們都知道,不管什麼場景,有效的溝通總能讓事情完成得事半功倍,測試跟開發之間的關係處理也是同樣。
做爲測試人員,咱們除了堅持本身測試的角度和立場以外,也要有同理心,學會站在開發的角度去看問題。
實際上不少衝突都是源於你們對需求理解不同形成的,因此當測試和開發對一個bug持有不一樣觀點的時候,不要率先很強硬的否認他,嘗試解釋爲何他理解的需求有不足之處。找到一些能夠站得住腳的論點,從用戶角度出發,從安全性考慮,或者從易用性和友好性來看,說服開發接受測試的觀點,而不是強加本身的觀點給他們;
另外,平時工做之餘你們也能夠多溝通,有機會就組織一些活動讓開發與測試熟悉一下,這樣子不少時候面對熟悉的人,在反對對方的觀點的時候會更加容易考慮一下對方的感覺,只要氣氛不對立,不少事情就能夠商量了。
這些溝通技巧都是一我的情商的體現,這也是爲何不少公司招聘的時候都要求測試人員善於溝通和表達,高情商的表達和溝通方法,可讓咱們的工做氛圍少一些凌厲,多一些柔和。
>> 流程管理
4.最後,在公司層面,最好還有一個完善的管理流程,經過流程控制來規範開發和測試部門的工做,一樣能夠很大程度上減小衝突的發生。
質量保證歷來都不只僅是測試人員的職責,而是須要整個團隊齊心合力。因此創建完善的流程,可以幫忙提升產品的質量。
我原來工做的一家公司,測試部門的總監就一直致力於各類管理流程的制定和推行,好比用流程來規範測試文檔的輸出模板,以及測試開bug的模板,能夠提升測試的工做質量;
還有用流程來規範開發的單元測試報告,寫明修復方法和bug的根本緣由,能夠幫助測試進行bug驗證和迴歸測試;
一樣用流程來規範開發處理的bug的過程,好比關閉bug以前必需要發郵件跟測試確認,避免bug沒有通過確認被擅自關閉而引起矛盾和衝突;
再如規範項目code審覈以及最後階段的代碼冰封,能夠提升代碼的質量以及下降發佈最後階段出現嚴重回歸問題的概率......
各類流程的推行,雖然看起來很繁瑣,可是嚴格執行起來,確實可以解決不少實質性的問題,幫助緩解不少開發和測試之間的尖銳衝突。
**總結**
總而言之,雖然開發和測試之間存在着自然的‘敵對’關係,可是做爲測試人員要樹立好本身的定位,清楚的知道不管開發和測試,最終目的都是使項目高質量、高時效地完成。而且只有開發和測試併力合做才能完成好一個項目。
因此不管開發仍是測試,你們都離不開彼此,測試工程師不是給開發的工做挑刺找茬。可是也更加不是開發人員的附屬品,須要再提升本身的同時,理性地處理和看待和開發的關係,共同營造一個良好愉快的工做氛圍。