進(jìn)銷存軟件哪個好(1分鐘之前已更新)">進(jìn)銷存軟件哪個好(1分鐘之前已更新)
874
2022-05-30
一年前,也是端午節(jié),很巧合,本書的一個譯者為另一個譯者的新書《軟件測試價值提升之路》寫序。一年之后,還是端午節(jié),兩位譯者一起為不一樣風(fēng)格的軟件測試譯著《程序開發(fā)人員測試指南:構(gòu)建高質(zhì)量的軟件》(后簡稱《程序開發(fā)人員測試指南》)寫序,依舊充滿詩意,享受著成功的喜悅,并鄭重推薦本書給所有的軟件開發(fā)者和測試人員。
十年前或更早,許多優(yōu)秀的軟件公司都有獨(dú)立的測試團(tuán)隊(duì),更強(qiáng)調(diào)測試的獨(dú)立性、客觀性,開發(fā)的質(zhì)量很大程度上依賴于獨(dú)立測試的質(zhì)量。那時,微軟公司擁有大約一萬名專業(yè)的測試人員(Software Development Engineer for Test,SDET),成為全球?yàn)閿?shù)不多的測試大軍團(tuán),因此,那個時代微軟是許多公司的測試標(biāo)桿,大家學(xué)習(xí)微軟如何做測試,參加由微軟資深人士開設(shè)的培訓(xùn)講座。那個時候,我們曾經(jīng)親身經(jīng)歷的項(xiàng)目,開發(fā)人員所做的測試很少,更多的測試是由專業(yè)的測試團(tuán)隊(duì)完成。即使大家都認(rèn)為“單元測試應(yīng)該是由開發(fā)人員來做”,單元測試的覆蓋率也非常低,其效果依舊不理想,可圈可點(diǎn)的項(xiàng)目很少。 不少項(xiàng)目推行過開發(fā)者測試,成功者寥寥,甚至個別項(xiàng)目想擺脫獨(dú)立的測試團(tuán)隊(duì)就直接上線,結(jié)果也是鎩羽而歸。
然而,最近幾年敏捷開發(fā)席卷而來,到處開花結(jié)果,所有開發(fā)者越來越關(guān)注質(zhì)量,開始做越來越多的測試。微軟測試軍團(tuán)從2010年開始瓦解,到2014年煙消云散,絕大多數(shù)的SDET快速融入開發(fā)團(tuán)隊(duì)之中,成為開發(fā)工程師的一員,而剩余的SDET要么改行,去干運(yùn)維、技術(shù)支持等工作,要么辭職,去其他公司繼續(xù)專職的測試工作。今天,Google、Facebook等公司成為新的標(biāo)桿,人們開始推崇非常簡單的工程師文化、推崇開發(fā)與測試的融合。在這樣的環(huán)境下,開發(fā)人員不僅需要完成代碼,還需要全力保證代碼的質(zhì)量,要求開發(fā)人員做足夠的測試。但是,開發(fā)人員不是天生下來就會做測試,測試能力還比較弱,甚至有些開發(fā)人員在今天敏捷開發(fā)的環(huán)境下,依舊排斥測試,開發(fā)者測試在國內(nèi)不容樂觀,這里面有客觀因素,也有主觀因素,但無論如何需要改變。
如果按照過去那種瀑布模型做測試,先開發(fā),后測試,開發(fā)人員會遇到心理上、思維上的障礙。而從理論上看,測試驅(qū)動開發(fā)(TDD)則徹底解決了這個問題,因?yàn)闇y試在前,開發(fā)在后。在開發(fā)前,測試的思維不會受到實(shí)現(xiàn)思維的影響;實(shí)現(xiàn)的代碼還沒有,自然也不存在心理上的障礙。理想很豐滿,現(xiàn)實(shí)很骨感,TDD的應(yīng)用還是鳳毛麟角,因?yàn)門DD的具體實(shí)施會面對各種困難,如給開發(fā)人員帶來額外的工作量、如何擺脫過去寫代碼的習(xí)慣等。例如,在TDD實(shí)施時,我們經(jīng)常能夠聽到開發(fā)人員說,“再給我加一倍的時間”。由于增加較大的工作量,在進(jìn)度壓力下就很難實(shí)施TDD,或者說,許多團(tuán)隊(duì)不知如何實(shí)施TDD,如何更高效地完成軟件的開發(fā)且提高質(zhì)量,不僅讓客戶滿意,而且也帶來生產(chǎn)力。如果管理層有堅(jiān)定的決心,并敢于在組織、流程、策略上做出相應(yīng)的改變,TDD可以帶來“質(zhì)量”和“生產(chǎn)力”的雙收益,不靠事后檢驗(yàn),可以大大降低質(zhì)量劣化帶來的成本。
開發(fā)者測試不僅僅局限在TDD、單元測試和集成測試,組件之間的交互性測試、調(diào)用系統(tǒng)進(jìn)行更高層次的測試也會出現(xiàn)在開發(fā)者測試中,開發(fā)者測試也不僅僅使用測試技術(shù),可測試性、依賴關(guān)系、復(fù)用和契約式編程、防御式編程等以構(gòu)建高質(zhì)量的代碼為目的的技術(shù)也與開發(fā)者測試息息相關(guān)。測試不能真正保證質(zhì)量,軟件質(zhì)量是在設(shè)計(jì)、編程過程中慢慢形成的。從這個角度看,開發(fā)者測試更為重要,在開始構(gòu)造功能時就要思考怎么測試它,相對于找到代碼錯誤,他們更關(guān)注于如何避免錯誤。在成功的團(tuán)隊(duì)中,團(tuán)隊(duì)的每個成員都擁有這樣的理念:構(gòu)建高質(zhì)量的軟件(正是本書的副標(biāo)題)。他們與客戶、交付團(tuán)隊(duì)協(xié)作,試圖理解什么才能幫助客戶獲得成功,如何找到最有效、最簡單的解決方案。這本書正是從這個角度展開討論,以幫助開發(fā)人員正確地理解和掌握開發(fā)者測試,解決開發(fā)人員從準(zhǔn)單元測試開始,到測試替身、模擬框架、不同的TDD模式等測試中遇到的各種障礙。本書還有其他一些特點(diǎn),下面就讓我們逐一介紹。
首先,這不是“測試專家寫的開發(fā)者測試”,而是“開發(fā)專家寫的開發(fā)者測試”。書中并沒有花太多篇幅介紹測試的概念、測試設(shè)計(jì)技術(shù)、單元測試工具(這些可能是我們之前推行開發(fā)者測試的重點(diǎn)),而是把重心放在了可測試性、影響測試的編碼風(fēng)格、實(shí)現(xiàn)開發(fā)者測試的方式、測試環(huán)境和條件的構(gòu)造、開發(fā)者測試在全部測試活動中的位置和作用等方面(這些是真正影響開發(fā)者測試效率的問題)。因此,這本書對于開發(fā)人員具有很好的實(shí)用價值。
其次,這本書不是一座“大山”,而是若干“甜點(diǎn)”組成,除了前3章介紹測試的基本概念和術(shù)語,其他各章相對獨(dú)立,一章基本是一個主題,闡述開發(fā)者測試所遇到的問題、解決方法、注意事項(xiàng)等。即使隔了很長時間我們才讀另一章,或者跳過沒有興趣的個別章節(jié),也完全不影響我們閱讀的體驗(yàn)或收獲?!疤瘘c(diǎn)”還隱藏在每一章中——每章穿插著一些“小竅門”“經(jīng)驗(yàn)之談”或“注意事項(xiàng)”等,點(diǎn)撥讀者,讀者獲得啟發(fā)或警醒。
再者,本書實(shí)例豐富,循序漸進(jìn),例如14.1 節(jié)就用了“一個簡單的搜索引擎”的8個實(shí)例,一步一步地介紹經(jīng)典風(fēng)格的TDD是如何實(shí)施的。本書的內(nèi)容安排得當(dāng),有主有次,主次分明,例如許多測試書籍都有“基于需求的測試方法”的詳細(xì)介紹,本書則用較少篇幅快速帶過。而對于重點(diǎn)內(nèi)容,如可測試性、Mock技術(shù)和TDD,分別用了兩章闡述其不同的方面。在Mock技術(shù)中,逐一介紹了如何應(yīng)用不同的Mock對象——樁對象、偽對象、模擬對象、-、啞對象,更體現(xiàn)其專業(yè)水準(zhǔn)。
最后,這本書中的開發(fā)者測試不是“孤立”的,而是“在上下文中”的(上下文是軟件工程中最重要的概念之一)。書中將開發(fā)人員與測試人員放在一個場景中,讓讀者更好地理解問題發(fā)生的前因后果。將問題放在代碼中(很多還是來自于實(shí)際產(chǎn)品的代碼),方便讀者映射到自己的產(chǎn)品和代碼中,并設(shè)想解決問題的方法是否適合自己,留給讀者更大的思考空間。將測試活動放在實(shí)際的研發(fā)項(xiàng)目中,單元測試和模塊集成、獨(dú)立模塊測試的區(qū)別并不那么明顯,書中也不回避這些現(xiàn)實(shí)問題,而是幫助讀者看到這些測試的真正過程,使讀者可以根據(jù)項(xiàng)目的具體情況做出策略選擇。
我們非常高興參與本書的翻譯,翻譯過程雖然很辛苦,但也是快樂的學(xué)習(xí)過程,能解開我們對開發(fā)者測試的一些疑惑。唯一的遺憾是,相見恨晩矣!如果早幾年讀到此書,在之前的工作中,很多事情會有更好的方式做,比如TDD、單元測試,比如代碼質(zhì)量檢測、敏捷一體化團(tuán)隊(duì)……相信本書對開發(fā)者們會有更大的幫助,會逐步提升開發(fā)者的測試能力。開發(fā)者測試做好了,在未來交付項(xiàng)目代碼時,會感到很輕松,會更加充滿自信。
《程序開發(fā)人員測試指南:構(gòu)建高質(zhì)量的軟件》
《程序開發(fā)人員測試指南:構(gòu)建高質(zhì)量的軟件》
【瑞典】亞歷山大.塔林德?著
點(diǎn)擊封面購買紙書
第一本面向開發(fā)人員的、編寫可測試的代碼、避免缺陷,提高軟件質(zhì)量的測試書,測試專家朱少民、楊曉慧、歐陽辰、曾樂天翻譯并推薦。
在本書中,亞歷山大首先展示了那些需要關(guān)注的測試。他介紹了一些被人們忽視但很實(shí)用的觀念,例如契約式編程(Programming By Contract)。他教會我們?nèi)绾卧O(shè)計(jì)出容易被測試的代碼。他強(qiáng)調(diào)了兩個我喜歡的目標(biāo):
構(gòu)建具有高可讀性的、基于規(guī)格說明的測試,依舊保持文檔的價值;
消滅高質(zhì)量系統(tǒng)的最大敵人之一——各種壞味道的復(fù)制。
他通過實(shí)用的、平衡的方法做好TDD,并呈現(xiàn)了傳統(tǒng)的TDD和Mockist TDD的應(yīng)用技巧,從而向我們?nèi)娼榻B了單元測試的內(nèi)容。
HTTP 自動化測試 開發(fā)者
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。