##有關實習、畢業論文及軟件開發和測試的關系等問題
最近收到一位研究生朋友的郵件,讓我想到自己研究生畢業之前,也曾有過很多的疑惑,希望得到過來人的解答。互聯網不僅是我們最好的老師,同時也是最好的橋梁。我們都要感謝并善于利用它。
??????? 閑話不說,言歸正傳。郵件原文如下:
??????? 周前輩,您好
??????? 我是XXX研究生,我叫XXX。專業是信息與通信工程。現在研二,過了暑假馬上就研三了。我在CSDN上無意間看到您的一些文章,寫的很好,感觸很多。所以就一直在關注您!
?????? 下面我簡單說下我的情況,我本科和研究生到目前,還沒有工作過,也沒有實習過。這個暑假,我找了一個實習,是XXX公司的軟件測試實習生,因為看到XXX這個公司是一個很不錯的公司,再加上自己沒有過實習經驗,所以自己想去實踐下。
?????? 因為之前自己一直想著自己畢業后的工作方向是軟件開發,然后現在是找了個軟件測試的工作,所以自己有點矛盾,我想問下您對軟件開發和軟件測試的看法,網上找的很多都是復制的。我想聽聽前輩您真實的看法。自己身邊缺少您這樣的人,有的時候在工作方面的迷茫不知向誰請教。
?????? 還有就是今天我跟我導師說了我去實習的事,我導師同意了。但是他也說我的畢業論文方面的進展不能落下,暑假過后的得看到一些成果。自己想想,去實習后,肯定會影響畢業論文方面的進度,一想到畢業論文和實習之間的矛盾,我就有點心煩,矛盾起來,心里不是滋味。但是這種心情又不能對身邊的人說。我導師的學生不多,我畢業論文的方向是圖像取證,就我一個人在搞,而且導師自己也不懂,沒有接觸過,然后自己身邊的人也沒有做這個方向的,所以在做這個的時候沒有人討論請教,弄的比較艱難。所以,加上這些因素,我就有點煩。以及馬上就秋季校招了,得復習工作方面的一些東西,所以時間還是很緊張。感覺自己有多的事情啊,忙不過來似的。
?????? 希望能得到您中肯的建議,謝謝您的閱讀,辛苦了!
?
?????? 我的答復如下:
?????? 學弟,你好!
?????? 感謝你對我的信任。我寫博客的宗旨就是分享自己的經驗,表達自己的看法。只要大家能夠從中學到哪怕是一丁點的東西,我的目的也就達到了。
?????? 你叫我“前輩”,我愧不敢當,我只不過是比你早幾年工作而已,我也是在工作中慢慢地學到了一些東西。建議你叫我“學長”更好,呵呵。
?????? 從你發的郵件中,我得到了如下信息:
???????? (1)?你從上大學到現在沒有實習或工作中,這對于像我們這種理工科的學生來說,是一個找工作的劣勢,要盡量彌補。因為現在單位招人,都希望新人能夠很快上手,節約單位的成本,所以還是要求(雖然沒有在招聘廣告中寫出來)即使是應屆畢業生,也有實習或工作經驗。
???????? (2)?你對于寫論文和找工作很是矛盾,不知道該如何選擇。確實,對于即將畢業的學生來說,心里矛盾的地方還有很多,比如:是實習還是寫論文?是去做開發還是測試?是回家工作還是留在發達地區?等等。我也是過來人,其中的酸甜苦辣也很有體會。
???????? (3)?你不知道軟件開發和測試的區別和聯系是什么?你或許認為軟件測試沒有什么技術含量,覺得搞軟件測試學不到什么東西。
???????我總認為,事情一多的時候,每個人都不免會手忙腳亂,但我們做事應該把握重點,事也分輕重緩急。下面說一下我的看法:
???????? (1)?對于是去實習還是在學校寫論文的問題,我認為從你目前的情況來看,盡量還是去實習為好。為什么呢?因為你還是想畢業后就去工作,那么有一個實習的經歷,對于找工作還是有一些幫助的。至少你在自己的簡歷上,可以寫上自己到某某公司實習過,面試官問起來,也可以說上幾句。當然,希望你在實習的時候能夠認真工作,學到一些東西,那么這些東西一定會在未來的某個時候幫你的忙的。既然是去實習,你就先不要在乎是開發還是測試了,我有很多同學實習的時候,也是做的測試,但最后也都找到開發相關的工作了。你不用擔心測試學不到東西。
???????? (2)?對于寫論文的事情,如果你選擇出去實習了,那么肯定要辛苦一點,平時下班之后多花點心思在論文上。根據我的經驗,研究生的畢業論文并不難寫,主要是如何找到創新點。對于找創新點的問題,請參考我的博文《寫大論文的一些注意事項(續):我是如何找到創新點的?》(http://blog.csdn.net/zhouzhaoxiong1227/article/details/6891966)。另外,你說“身邊的人也沒有做這個方向的”,那么這個時候,你可以利用學校圖書館去下載一些經典的“圖像取證”方面的小論文和大論文來看,總結一下別人是如何寫的?創新點是什么?你該如何著手來寫?等等。在寫大論文之后,你一定要多閱讀一些你研究方向相關的論文,并做好筆記(這個非常重要)。等你積累得多了,創新點自然就會有了,正所謂“滴水石穿”、“水到渠成”嘛。
???????? (3)?有關軟件開發和軟件測試的區別和聯系。我本人是做軟件開發的,但我也要對自己寫的程序進行測試。在我們公司,也有專門的測試人員。
???????軟件開發人員主要做這幾件事情:
???????? 1)?對軟件需求說明書進行評審,弄清楚要開發一個什么樣的軟件。
???????? 2)?編寫軟件詳細設計、單元測試和集成測試規程文檔。軟件詳細設計文檔是最重要的文檔,在里面,要寫清楚自己程序的流程、函數設計、異常保護考慮等。在動手寫程序之前,一定要將軟件詳細設計文檔寫好,等評審通過了再寫代碼。
???????? 3)?編寫代碼,用程序實現軟件的功能。很多人認為的軟件開發就是寫代碼,其實這是一種很狹隘的理解,寫代碼在整個開發流程中,只占了很小的部分。
???????? 4)?程序寫好之后,開發人員要對它進行單元測試和集成測試(也叫自測),確保程序的正確性。這里就出現了“測試”二字,但與軟件測試所做的“測試”是不同的,他們做的是“系統測試”。等自測通過之后,并且相關文檔也寫好之后,就可以提交程序版本,供測試人員進行相對專業的測試了。
?????? 軟件測試人員主要做這幾件事情:
???????? 1)?搭建測試環境。這個是很重要的,也是比較難的事情。什么是“測試環境”呢?就是說,不管什么軟件,都有個運行的條件,如操作系統類型、參數設置及配套軟硬件設施等,這些統稱為“環境”。為了保證程序功能的正確性,要在軟件發布之前,盡量模擬軟件實際的運行環境,這就是搭建測試環境時要做的事情。很多軟件在正式商用之后出問題,就在于測試的時候沒有還原現場的環境所致。
???????? 2)?對軟件進行系統測試并輸出測試報告。所謂系統測試,就是指將配套的所有軟件都運行起來,看一下所有的功能是否正常。當出現問題的時候,要及時和開發人員聯系,以修正軟件缺陷。
???????? 3)?指導現場人員安裝軟件程序,并在必要的時候親自出差到現場去安裝軟件。因此,測試人員也可能會經常出差的。
???????軟件開發和測試人員要做的主要事情就是這些。總的說來,開發人員編寫的程序要比測試人員多很多,但“七十二行,行行出狀元”,這并不意味著測試就沒有前途,他們對整個系統的把握要比開發人員好一些。如果你做事比較細心,那么去搞軟件測試也未嘗不可。
?
?????? 以上便是我個人的一點看法,請參考。希望你好好把握剩下的不長的在校時光,并找到滿意的工作。感謝你對我的信任,請繼續關注本人博客。
?
?
?
周兆熊
2014-7-13
?
?
?
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信號:245924426,歡迎關注!)