1. 程式人生 > >測試工程師工作定位之我見

測試工程師工作定位之我見

        好久沒有寫blog了,主要兩個原因,一是因為新換了工作,事情比較多,抽不出時間來寫。二是對自己的工作定位有些迷茫,一時搞不清楚軟體測試工作的定位,所以不知該寫些什麼。不經意間我工作也快五年了,除了剛開始編寫了一年左右的程式碼外,其他時間一直在做軟體測試工作,而且一直想做一個非常專業的軟體測試工程師。但最近幾個月卻感到有些迷茫,找不到軟體測試在整個軟體過程中的定位,思考了很長時間,最近才有了一點心得,趁十一長假的時間拿出來與大家分享一下。這只是我個人的一點看法,還不成熟,有不對的地方還望大家多多包涵!
        剛開始做測試的時候,並沒有經過什麼系統的學習和培訓,也沒有其它前輩的制導,只是從網上或者書上看了一些測試的理論就開始了嘗試。剛開始的一年裡,根本沒有想過測試工作的定位問題,只是把自己當成了一個骨灰級的普通使用者,每天就是翻來覆去的嘗試著待測試程式的各種功能,想方設法的找出程式中的各種錯誤。發現錯誤後先暗自得意一番,然後提交給開發人員。隨著程式實現的功能越來越多,工作也越來越累,不但新開發的程式會有錯誤,以前修改過的錯誤也重現了出來,整天搞的焦頭爛額,不勝其煩。好不容易把所有已發現的問題都修復了,程式開發也進入了尾聲,麻煩也隨之而來。程式是做個使用者使用的,是由公司的市場和技術實施人員幫助客戶使用的。但市場或技術實施人員都不熟悉新開發出來的程式,這就需要一個培訓和一本操作手冊,這個過程一般都由測試人員來做。為什麼是測試人員來做?因為只有測試工程師最熟悉程式全部的功能。
        做培訓或寫操作手冊也沒什麼,但是效果往往很難讓人滿意,無論你培訓做的多麼好或者操作手冊寫的多麼詳細,市場和實施人員都不會學。等他們工作時,就會來找測試人員幫忙了,客氣點的會用個請字,不客氣的就直接命令了,讓你作一些本來該他們做的工作。比如幫客戶做一些初始化資料,或者直接給客戶實施等。除了測試工作外還要做很多本不屬於自己的工作,再加上有些人員根本就看不起測試人員,工作中有意無意的欺負,經常把一下不相干的工作推了過來,於是乎測試在軟體過程中淪為打雜。也許有朋友認為這個觀點比較悲觀,但是很多同行都有過類似的經歷。尤其是剛開始做測試工作的朋友,因為自己剛入門,專業能力和公司的地位都不高,很難逃脫打雜的命運。
        看到這裡,很多朋友可能會有不同的觀點,他們會說那是那些軟體公司根本不重視測試,在很重視測試的軟體公司,測試工程師的地位還是很高的,他們能決定產品是否釋出。如果測試工程師沒有對開發出來的程式進行簽字,程式就根本不能算開發完成。這種情況也很常見,隨著自己工作時間的增長,自己的專業水平也隨著增長,在軟體過程中的地位也得到了很大的提高。在很長的一段時間內,我也擁有過軟體專案釋出的決定權,那時我認為自己就是質量衛士,是軟體產品的看門人。工作了一段時間後,我對自己的看法產生了懷疑,因為這段時間公司軟體產品的質量並沒有得到提高,而且自己了承擔了已釋出產品質量的全部責任。開發人員提交的程式碼質量越來越差,他們認為反正由你們測試人員把關,有問題你們自然會提出來的,如果你們沒有測試出來,那也是你們測試人員的責任。
        也許有人會說,那就測試做的詳細一點,所有的可能都測試到,不要讓有錯誤的程式釋出出去。咱們姑且不論能不能做到測試所有的可能性和專案進度的要求,就算你在專案允許的時間內做到了,難道就能說這個軟體產品的質量有了保證了嗎?什麼是軟體質量?質量是客戶要求或者期望的有關產品或者服務的一組特性,軟體質量則是軟體的功能、效能和安全效能滿足客戶的要求或達到客戶的期望。測試人員大部分時間是要站在使用者的角度上考慮軟體的情況,但他們畢竟不是真正的客戶,他們不能代表所有真正的客戶實際的要求,軟體產品就算通過了測試也不能保證軟體質量。好的軟體不是測試出來的,而是設計、開發出來的。測試人員不參與程式碼的編寫和修改,當然也就不能提高或者降低軟體產品的質量,軟體質量來源於軟體產品構建的人。
    既然測試工程師不是打雜的,也不是軟體質量的保證者,那我們到底是做什麼的呢,或者說我們測試工程師在軟體過程中到底扮演了什麼角色呢?我思考的結果是我們在軟體過程中是一種服務的角色,我所說的服務絕對不是前面說的幫助其他人員做他們的工作,而是為整個軟體產品的質量服務。因為能決定軟體質量的是軟體的構建者,他們可能包括公司的管理層、專案經理、設計人員、開發人員、實施人員、市場人員等等。由市場人員根據使用者需求提出要做軟體,然後管理層評估、組織立項,專案經理調研使用者需求、設計人員設計程式架構,開發人員負責決體功能的實現,最後由實施人員為使用者進行實施,並進行相應的技術支援。他們這所有人構成了整個軟體過程,他們就是軟體的構建者,他們在構建軟體的同時,也背上了沉重的負擔,那就是軟體產品的質量。測試人員在整個軟體過程的定位就是幫助軟體產品的構建者解決軟體質量這個沉重的負擔。也就是說測試工程師應該在各個階段幫助該階段的物件做好相應的工作,具體的工作為:
1、協調、組織各方面的專家對每個階段的成果進行評審,包括需求、設計等。
2、幫助預測和控制成本,以最小化的成本、時間來完成相應的工作,主要表現為督促專案開發進度的執行。
3、快速找出重要的軟體問題,也就是說要配合開發進度,儘快找出影響較大的軟體問題。
4、對產品質量提出總體的評估,是根據測試結果對軟體產品進行一個儘可能客觀的估計,而不是決定要怎麼做出修改。
5、確認產品達到了某種具體的標準,例如確定產品的質量是否能符合公司或客戶那些等級的要求。注意,只用於確認並提供自己的意見,而不是決定是否釋出。
6、與其他人員協作實施培訓,一般可以先培訓本公司的其他人員,然後協助他們去培訓客戶,是協助,不是自己獨立完成。
7、幫助客戶改進其過程,同時協助滿足客戶必要的要求。主要表現在軟體產品與客戶的實際要求產生偏差時,要查詢不一致的原因,如果是客戶的過程不合理就協助他們改進過程,如果程式不合理就要修改程式。
        在實際的工作中還要經常考慮自己當前階段的使命,保證自己的計劃不會由於過於偏重測試某一方面的問題而忽略其他方面。