軟件測試與開發(fā)的未來
今天與何老大的一些交流,引發(fā)一些心中很久的感想表達一下,主要是針對我們開發(fā)過程一些幻想,最后給出實現(xiàn)的規(guī)化方式。
1、云開發(fā)平臺
我們開發(fā)人員整天忙忙碌碌,重復最多的就是編寫代碼->編譯->簡單測試->改代碼->編譯...
云開發(fā)平臺正是為解決這個問題而來,它是什么呢?
所謂云,就是對使用者透明,所謂云開發(fā)平臺,是指對我們開發(fā)人員(測試人員)幾乎透明的編譯調(diào)試環(huán)境。
你要做什么?
告訴它你的項目地址,告訴它你的編譯方式。
它幫你做什么?
1、監(jiān)控你的項目,有提交時幫你編譯,返回編譯結(jié)果。
2、準備環(huán)境,提供一個云端返回的編譯完成的主機(我們的測試機),可以登錄ssh進行測試。
2、開發(fā)過程自動化測試
我們現(xiàn)在正在測試前移,甚至在需求階段介入,我這里不關(guān)注需求的測試方法,只說測試前移怎么去做? 我們現(xiàn)在在強調(diào)前期的代碼審查測試,前期的邏輯檢查,這些屬于白盒但是靜態(tài)檢視,我以為這些可以去做好,但僅僅對前期測試來說能暴露的問題有限,更多的時候需要靠更多的編碼經(jīng)驗。
而開發(fā)人員在編碼時更多的時間花費在調(diào)試(大約80%不為過),這部分工作實際上可以減少很多,而且大家也知道,如果更多的時間用來設計與編寫高質(zhì)量代碼,測試的工作量也會更少,能夠有效提高整個研發(fā)效率,而現(xiàn)在的問題是,開發(fā)不知道如何利用工具改進開發(fā)過程。
開發(fā)過程自動化測試是指,提供一種易用性框架,利用自動化測試優(yōu)勢,將過程的重復工作實施自動化測試,將每次都需要驗證的測試點實現(xiàn)自動化驗證。
效果是:
開發(fā)設計完成,開發(fā)編碼。
測試前移,準備測試點,編寫自動化用例。
利用某一個統(tǒng)一的平臺進行交付自動運行。
難點一:對測試人員要求較高,但我們可以培養(yǎng)。
難點二:對開發(fā)有一定慣例限制,但每一次的限制用的好可以帶來更大的自由(好處)。 像如今滿大街的智能機不是對鍵盤的限制使用嗎?
最后一點,也是最宏大的。
3、研發(fā)管理平臺:
越來越多的流程,越來越繁瑣的文檔,越來越混亂的IT系統(tǒng),經(jīng)常這個賬號記不清另一個賬號無法登錄的。
申請序列號這種小事都需要助理來處理,試想我們?nèi)绻幸惶淄晟频恼J證系統(tǒng)不可以自動下發(fā)序列號嗎? 系統(tǒng)會記錄的更清楚。使用的人也會得到最快速的響應。
開發(fā)改了需求沒有通知我!!!
忘了xx文檔的svn地址了!!! 找其他人問還十分不好意思,有時候還得不到立刻答復,又影響他人。
SQA累死累活的跑路收集各種信息,但卻依然可能受到大家的數(shù)據(jù)置疑。
一項流程更新,通報了全研發(fā)體系卻大部分的人在真正執(zhí)行時仍然遺忘。
。。。
問題已經(jīng)比較突出了。我們應該怎么做?
研發(fā)管理平臺,正是我們的需要。
它的核心功能:
1、統(tǒng)一接入認證體系。保證內(nèi)網(wǎng)安全可靠,并提供完善的日志。
2、集成研發(fā)流程,提供從需求到發(fā)布的過程跟蹤。 可強制限定開發(fā)經(jīng)理與測試經(jīng)理的活動。 并做到智能提醒。( 試想,每天我作為開發(fā)經(jīng)理只需要登錄一下系統(tǒng)就知道接下來該干什么, 每天只需要一次提交每日進展即可,并可隨時查詢項目成員的代碼提交質(zhì)量; 而項目責任人無需過多信息,通過研發(fā)管理平臺即可收集到項目的信息)
例如,需求過程可以簡化, 只需要一次錄入需求, 以后每次需求變更,所有相關(guān)人員自動接受郵件,任何需求過程均被記錄,系統(tǒng)發(fā)布前提供需求完成情況,自動形成可發(fā)布文檔。
3、集成自動化測試, 提供統(tǒng)一的靜態(tài)掃描并與ATM做接口。提供數(shù)據(jù)倉庫可以隨機構(gòu)建有效數(shù)據(jù),提供虛擬化硬件平臺,任何人在需要的時候一鍵獲取測試主機進行快速接入驗證。
4、具備數(shù)據(jù)分析甚至挖掘能力,提供一定的SQA職責,供決策使用。
我們來初步分析一下,
1、云開發(fā)平臺
實現(xiàn)難度: 中(監(jiān)控svn應該不成問題, 提供調(diào)試編譯環(huán)境,這點可通過部門虛擬設備解決,我們自動化已經(jīng)基本解決虛擬設備實現(xiàn)克隆,開啟,關(guān)閉,甚至修改ip,執(zhí)行任何命令的操作,剩下的就是工作量與需求問題, 其他難度在于解決不同環(huán)境部署的約束)
實現(xiàn)工作量: 低
實現(xiàn)效果: 能夠節(jié)省每個開發(fā)人員的重復操作并易出錯的問題。
限制: 需要開發(fā)人員配合實現(xiàn)代碼文件存放和命名約束,以及相關(guān)需求細化。
2、開發(fā)過程自動化測試
實現(xiàn)效果:大規(guī)模提高發(fā)包與測試回歸速度
實現(xiàn)難度:中
實現(xiàn)工作量:中(在于如何設計一個簡單易用的框架來快速編寫和執(zhí)行自動化,這里與ATM平臺不同的在于它是輕量級,更易于完成非關(guān)鍵字級的驗證。并支持更多的語言。)
3、研發(fā)管理平臺
實現(xiàn)效果最佳。
這個就不分析了,可以通過分步去做。
為什么想到這些?
首先,測試與開發(fā)是分不開的。我們測試的目的,保證版本質(zhì)量,另一個也十分重要的在于提高測試效率。
開發(fā)的目的,快速高質(zhì)量發(fā)布新版本,高可維護。細致一想,提高測試效率不簡單在于測試過程,而是整個開發(fā)過程; 而高開發(fā)快速發(fā)布一部分依賴于測試的快速測試,除了高可用的架構(gòu)以外,依賴于快速有效的自動化,依賴于高效率的工具。
不然,開發(fā)每次迭代10%開發(fā),測試驗證110%的功能局面無法得到任何改變,我們又苦又累卻得不到結(jié)果。
為什么單元測試在我們項目中實施失敗?
1、沒有好用的工具, 如果有一個只需要寫業(yè)務測試代碼的單元測試框架被牛人整合出來,何擔心沒人去用?
2、沒有明確的目標,或?qū)δ繕诵Ч筇o。 我們?nèi)狈κ钟行У臄?shù)據(jù)度量,缺乏有經(jīng)驗的人,僅僅靠人的自覺基本上很難推行這些項目走向成功。
關(guān)于開發(fā)語言,
大多數(shù)人就像大多數(shù)人一樣傾向于選擇大多數(shù)人使用的語言, 而謂之于“最佳實施”...
而如果我說,學一門腳本語言吧,你可能會說, 沒聽說過圖靈等價嗎?( 意指 任何計算機語言的表達能力是等價的,一門語言可以完成的事件,理論說另一門語言肯定可以完成) 腳本語言啊,太弱了吧? 不能開發(fā)大項目吧?
實際上,目前是Lisp類的語言的天下,從perl開始, python, ruby已經(jīng)不只是開發(fā)小型項目了。大家都在使用vCenter的時候,知道它是什么寫的嗎? 實際上,它的web頁到啟動腳本均用的python。 javascript已經(jīng)火了N久了,最近的Node。js把它從前端發(fā)展到后端。
是什么原因? 高效的開發(fā)效率, 強大的表達能力, 越少的代碼往往意味越少的維護成本。有興趣的同學可以關(guān)注下<<黑客與畫家>> 作者是硅谷的投資之父,揭秘了viaweb快速開發(fā)的秘密。
我們可以嘗試部分內(nèi)部項目采用它。
關(guān)于開發(fā)效率, 最近關(guān)注:
github.com(一個git托管平臺) 開發(fā)語言rails,python,ruby 開發(fā)周期,3個人3個月上線(2008年),目前管理項目5000萬
zhihu.org(一個知乎類似的問答) 開發(fā)語言rails,開發(fā)周期1周2個人。
淘寶運維平臺(內(nèi)部)(一鍵發(fā)布平臺,目標:關(guān)閉運維部門,說笑了,這個正是運維部門在做:) )開發(fā)語言rails, 開發(fā)周期6個月1個人,目前基本上線。
如何充分利用動態(tài)語言的開發(fā)效率可以在這些內(nèi)部項目更快的發(fā)布與維護。
說這樣好像與上面沒關(guān)系啊, 就像老大說的,沒有人限制你要做什么。能夠達到目標的一切措施都可以試試。
以上一點想法,吐吐為快。
posted on 2013-04-17 09:38 順其自然EVO 閱讀(220) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄