qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          實(shí)施自動化功能測試的解決方案

           摘要

            當(dāng)今的企業(yè)需要掌控其關(guān)鍵業(yè)務(wù)應(yīng)用的所有功能測試,以確保所有業(yè)務(wù)流程工作符合預(yù)期。通過實(shí)施自動化的功能測試,企業(yè)可以極大提高測試速度和精度,從挼間項(xiàng)目中得到更高的投資回報并且顯著地降低風(fēng)險。

            本文簡要描述了自動化功能測試的優(yōu)勢和挑戰(zhàn),幫助企業(yè)考慮實(shí)施最佳測試自動化的方法。

            1.介紹

            毫無疑問,嚴(yán)格的功能測試是成功開發(fā)應(yīng)用的關(guān)鍵。開發(fā)人員,測試小組和管理人員所面臨的挑戰(zhàn)是,如何加速測試流程和提高測試的精確性和完備性,同時還不能增加已然很緊張的預(yù)算。

            通過將功能測試的關(guān)鍵環(huán)節(jié)自動化,可以滿足有挑戰(zhàn)性的發(fā)布時間安排,測試得更加全面和可靠,檢驗(yàn)業(yè)務(wù)過程功能的正確性,從而從上線的運(yùn)營中,獲得極高的產(chǎn)值和客戶滿意度。然而,功能測試的自動化會產(chǎn)生一些新的顧慮:

            測試過程自動化的成本是多少?其投資回報率(ROI)是什么?

            哪些應(yīng)用/過程適合做自動化測試,哪些不合適?

            是否需要新的培訓(xùn),這將對當(dāng)前的開發(fā)計劃安排產(chǎn)生怎樣的影響?

            自動化測試得正確地方法論是什么?

            自動化測試時涉及到哪些情況?

            當(dāng)比較自動化測試產(chǎn)品時,哪些功能最重要?

            在自動化測試項(xiàng)目開始之前,以上和其他一些問題應(yīng)該得到全面地調(diào)查和了解。

            2.功能測試與單元測試

            功能測試是指確保應(yīng)用按期望運(yùn)行,也就是按照用戶的期望運(yùn)行。功能測試以一種有效的方式捕獲用戶的需求,讓用戶和開發(fā)人員對業(yè)務(wù)過程滿足需求充滿信心,同時使得QA團(tuán)隊(duì)可以檢驗(yàn)軟件已發(fā)布就緒。

            功能測試是單元測試的補(bǔ)充,但有很大不同。簡言之,單元測試說明了代碼執(zhí)行是否正確;功能測試說明了完成的應(yīng)用是否做正確的事情。單元測試往往是從代碼開發(fā)人員的角度來看,而功能測試是從最終用戶和業(yè)務(wù)過程角度來看。

            3.為什么將功能測試過程的自動化?

            現(xiàn)在,IT部門的壓力越來越大。管理部門希望IT部門通過軟件可以交付新功能,抓住新的商業(yè)機(jī)會和提供有競爭力的優(yōu)勢。這就意味著需要完成更多的業(yè)務(wù)應(yīng)用開發(fā)項(xiàng)目,而時間會很緊迫,并不是都有更多的預(yù)算或資源。

             同時,管理部門越來越意識到軟件和銷售額的重要關(guān)系。Web Services,聯(lián)機(jī)事務(wù)處理和ERP應(yīng)用不僅是非常關(guān)鍵的,而且,它們直接關(guān)系到公司的產(chǎn)值能力。現(xiàn)在企業(yè)非常依賴非常復(fù)雜的計算機(jī)基礎(chǔ)設(shè)施。如圖, 一個典型的企業(yè)可能依靠多個應(yīng)用,運(yùn)行在不同的系統(tǒng)上,使用幾種不同的前端客戶端,涉及到大量的業(yè)務(wù)過程并且與很多種數(shù)據(jù)集交互。

            可能的組合是高度復(fù)雜,需要成百上千的測試場景。

          組件數(shù)量事例
          平臺1Intel
          操作系統(tǒng)5Windows XP, ME, 2000, NT4, and 98
          前端客戶端4Internet Explorer 6, Netscape 7.1 Java, Visual C++
          業(yè)務(wù)過程5Login, Search, Order Entry, Order Confirmation, Order Fulfillment
          數(shù)據(jù)集15usernames, passwords, search strings, order numbers, ship dates,等的組合
          需求的測試數(shù)量1x 5 x 4 x 15= 1,500 可能的測試場景!!

            當(dāng)軟件出現(xiàn)故障時,其代價是非常大的,包括銷售額下降,員工的低效率,客戶的不滿和開發(fā)和QA人員的士氣低落。在軟件開發(fā)周期中,缺欠發(fā)現(xiàn)的越晚其代價越高。上線后發(fā)現(xiàn)的缺欠的改正成本可能比在設(shè)計階段發(fā)現(xiàn)的高出100倍。自動化是提高軟件測試過程的速度,精確度和靈活性的關(guān)鍵,使公司可以更早發(fā)現(xiàn)和改正缺欠。

            4.手工功能測試的挑戰(zhàn)

            手工功能測試過程本身存在很多挑戰(zhàn):

             時間過長。有限的IT資源和緊張的交付時間使得手工測試對于滿足業(yè)務(wù)目標(biāo)來說過于耗時。采用手工測試,測試和開發(fā)人員不得不計劃冗長的每步測試過程,然 后手工執(zhí)行,再現(xiàn)問題,快速消耗了有價值的時間和資源。根據(jù)Aberdeen Group,一個獨(dú)立行業(yè)分析公司,90%的IT項(xiàng)目交付出現(xiàn)延遲,手工測試是其中一個因素。

            覆蓋不完全。平臺,操作系統(tǒng),客戶端設(shè)備,業(yè)務(wù)過程和數(shù)據(jù)集等的組合對于手工測試過程來說,工作量非常大。需要驗(yàn)證功能的測試用例數(shù)量非常巨大。所以當(dāng)修改完成后手工回歸測試花費(fèi)的時間過長,以至于不能做全面的回歸測試。

            風(fēng)險更高。手工測試過程比計算機(jī)過程的錯誤和疏忽更多。人們會變得疲倦,輸入數(shù)據(jù)錯誤,不能總是正確執(zhí)行測試,并不是總有時間測試所有應(yīng)該測試的內(nèi)容。

            5.自動化測試的好處

            自動化測試有很多好處,包括:

             快速執(zhí)行。計算機(jī)在執(zhí)行功能測試腳本的時候比人快得多,因此在有限的時間里能測試的更多,在給定的時間里更多的應(yīng)用可以被測試,可以按時完成更多的工 程。并且和人不同,計算機(jī)一天工作24小時,還包括晚上,周末和假期;他們不會感到無聊或者疲倦;而且他們從不對該作的事情和不該作的事情自作主張。

             提高測試覆蓋。自動測試產(chǎn)品支持在所有流行的瀏覽器,操作系統(tǒng)等上執(zhí)行測試腳本,用自動化的工具對不斷變化的應(yīng)用和環(huán)境做回歸測試,要比手工測試容易得 多。通過整合的數(shù)據(jù)驅(qū)動表單的功能,自動化測試產(chǎn)品允許開發(fā)和測試團(tuán)隊(duì)執(zhí)行計算,操作數(shù)據(jù)集,以及快速創(chuàng)建多種反復(fù)的測試,使得擴(kuò)大測試覆蓋范圍。使用自 動測試工具可以仿效任何混合的事務(wù)和任意的用戶負(fù)載。

            提高測試精確度并提早發(fā)現(xiàn)更多錯誤。自動化測試給開發(fā)人員提供了一種再現(xiàn)和記錄軟件缺陷的非常容易的方法。這將在所有環(huán)境,數(shù)據(jù)集和業(yè)務(wù)過程等之間確保功能的正確性,同時對開發(fā)過程起到加速作用。

            提供規(guī)范化的過程。自動化測試鼓勵測試團(tuán)隊(duì)規(guī)范化他們的過程,以得到更高的一致性和更好的文檔記錄。

            提高測試的重用性。測試一旦腳本化,開發(fā)人員可以使用和重用這些腳本,可以將腳本添加到測試套件中,以適應(yīng)應(yīng)用的變化。沒有必要為每個應(yīng)用的相同功能而重新創(chuàng)建腳本。

            支持ERP/CRM。現(xiàn)在越來越多的用戶使用ERP/CRM解決方案,對端到端的回歸測試的需求正變得越來越頻繁和越來越重要。

            6.在什么情況下采用自動化測試?

            一般來說,把自動化測試的工作集中在關(guān)鍵的業(yè)務(wù)過程,復(fù)雜應(yīng)用,以及由這些組成的用例方面(相對于低級別任務(wù),例如系統(tǒng)級的驗(yàn)證)是很有意義的。

             如果一個企業(yè)擁有眾多每天工作很多小時的軟件測試人員,但是產(chǎn)品仍然出現(xiàn)質(zhì)量和功能問題,那么這家企業(yè)肯定能從自動化測試中受益。是否決定實(shí)行自動化測 試應(yīng)當(dāng)充分考慮到投資回報,但是一般情況下,如果一個應(yīng)用需要多次構(gòu)造/補(bǔ)丁/修改;需要在大量的硬件或軟件配置下進(jìn)行測試;并且支持眾多并發(fā)用戶等,那 么將會是值得采用自動化測試。另外,如果涉及到重復(fù)性的工作,例如數(shù)據(jù)裝載和系統(tǒng)配置等,或者應(yīng)用需要滿足特定的服務(wù)等級協(xié)議(SLA),那么自動化測試 當(dāng)然也會節(jié)約成本。

            7.如何確定自動化測試的投資回報?

            任何投資回報都可以從一個簡單的計算得出:

            投資回報=投資的凈現(xiàn)值/總初始成本

            當(dāng)采用測試過程的自動化時,成本是切實(shí)可見的,但是凈現(xiàn)值仍舊包含許多無形的因素。最好的方法就是盡量精確計算直接成本,然后與自動化測試產(chǎn)生的直接和間接的效益進(jìn)行對比。

            在ROI計算中需要考慮的直接成本包括:

            購買成本:購買自動化測試軟件產(chǎn)品的成本。

            硬件成本:功能測試所必需的硬件成本。有代表性的是,功能測試不需要特殊的硬件,只需帶有以太網(wǎng)端口的標(biāo)準(zhǔn)臺式電腦或者工作站即可。

            勞動力成本:培訓(xùn)職員編寫測試用例腳本或進(jìn)行手工測試的成本因素。確認(rèn)要包括招聘,雇傭,支付工資,和保留熟練的QA工程師的成本。

            培訓(xùn)成本:依賴于所選擇的測試產(chǎn)品,培訓(xùn)使用者精通編寫自動測試腳本是值得的。當(dāng)然,公司可以選擇雇用專業(yè)的服務(wù)公司創(chuàng)建最初的自動化測試。

            當(dāng)衡量自動化的潛在益處時,考慮隱性效益是很重要的,例如測試人員高漲的士氣和對工作的滿意度,改進(jìn)的客戶滿意度和忠實(shí)度,還有因?yàn)樽罱K用戶使用的可信賴的軟件而不斷提高的知名度。

            8.如何評估自動化測試軟件?

            很多商家提供自動化測試產(chǎn)品。每個解決方案都有自身的優(yōu)勢和劣勢,獨(dú)特的功能,和市場環(huán)境。每個企業(yè)需求的特殊性決定了最適合的一種選擇。然而,任何自動化測試產(chǎn)品都應(yīng)當(dāng)包含一些關(guān)鍵的性能:

            自動化測試的“Scriptless”表示法:產(chǎn)品應(yīng)該提供一個可點(diǎn)擊的界面,在測試時與應(yīng)用組件進(jìn)行訪問和交互——而不是呈現(xiàn)出一行行的腳本。測試者應(yīng)該可以可視化每一步的業(yè)務(wù)過程,并且直觀的觀察和編輯測試用例。這將減少測試者在學(xué)習(xí)上走彎路,并幫助測試團(tuán)隊(duì)面對緊迫的最終期限。

            集成的數(shù)據(jù)表:自動化功能測試的一個關(guān)鍵的好處就是可以使系統(tǒng)快速產(chǎn)生大量數(shù)據(jù)。還有一個重要的功能就是操作數(shù)據(jù)集,執(zhí)行計算,并以最小的代價快速創(chuàng)建數(shù)以百計的重復(fù)測試和組合。企業(yè)應(yīng)該尋找擁有提供強(qiáng)大計算能力的集成電子數(shù)據(jù)表單的產(chǎn)品。

             清晰明確的報告:如果測試結(jié)果不容易理解或解釋,那么即使運(yùn)行大量測試數(shù)據(jù)也不會有什么好處。測試產(chǎn)品應(yīng)當(dāng)自動的產(chǎn)生并顯示所有測試運(yùn)行方面的報告,并 用易讀的格式解釋結(jié)果。報告應(yīng)當(dāng)提供的細(xì)節(jié)包括:應(yīng)用在什么地方發(fā)生了失敗和使用了什么樣的測試數(shù)據(jù);為應(yīng)用的每一步提供高亮或有差別的屏幕顯示;并提供 每個檢查點(diǎn)通過和失敗的詳細(xì)解釋。當(dāng)然還應(yīng)當(dāng)能夠在不用修改的情況下,在測試和開發(fā)團(tuán)隊(duì)之間共享報告。

            9.要點(diǎn)列表:自動化測試成功的五個關(guān)鍵

            即使已經(jīng)證明了測試的自動化是經(jīng)濟(jì)有效的,然而如何確定轉(zhuǎn)變到自動化測試過程上的最佳方法依然是困難的。這部分略述了執(zhí)行自動化測試過程的五個基本原則。

            1.完成一個測試計劃文檔。理解被測應(yīng)用的目標(biāo)是任何測試成功的基礎(chǔ)。這包括全面的預(yù)先計劃以確保測試需求被正確的實(shí)施。測試工具應(yīng)提供為所有被測應(yīng)用管理測試用例和需求的能力。

            2.將測試細(xì)分為自動測試用例。一個組織自動執(zhí)行一個測試計劃的所有方面是不可能的。自動化測試應(yīng)該集中圍繞在需求設(shè)計的復(fù)雜應(yīng)用上和急迫的業(yè)務(wù)過程功能上,許多組織發(fā)現(xiàn)他們使用自動化測試只占總測試用例的60%,而余下的40%為手工測試。

             3.創(chuàng)建自動化測試。測試工具極大簡化了準(zhǔn)備測試數(shù)據(jù)和腳本的過程。這使得更多的完全測試可最佳地使用測試資源和結(jié)果。使用測試工具,使用者可以不必作 任何實(shí)際腳本而創(chuàng)建測試。測試工具應(yīng)能自動捕獲目標(biāo)應(yīng)用的業(yè)務(wù)過程,并允許使用者創(chuàng)建一個可以被保存的而且可以被管理的測試流程。

            4.提高測試覆蓋的數(shù)據(jù)驅(qū)動測試。測試者就可以為應(yīng)用創(chuàng)建一個使用儲藏在Excel電子表格里的特殊關(guān)鍵字的依賴于數(shù)據(jù)的測試。這就允許測試者通過應(yīng)用驅(qū)動大量的測試數(shù)據(jù)。

            5.給測試增加驗(yàn)證。需要在測試中添加了“通過或失敗”的測試標(biāo)準(zhǔn)。這包括了應(yīng)用的前端,中間層,或后端數(shù)據(jù)庫的驗(yàn)證。內(nèi)置的數(shù)據(jù)庫驗(yàn)證使數(shù)據(jù)庫值的存儲得到確認(rèn),并確保處理的精確性和已更新、刪除或增加的數(shù)據(jù)記錄的完整性。

            10.總結(jié)

            功能測試可以不是耗時或高成本的問題。采用自動化功能測試,企業(yè)可以將重點(diǎn)放在改進(jìn)自動業(yè)務(wù)過程方面。開發(fā)和QA組可以增加測試過程的速度和精確度。整個IT部門可以獲得更高的投資回報,而且降低了大量風(fēng)險。

          posted on 2011-10-25 14:30 順其自然EVO 閱讀(245) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 历史| 孝昌县| 南部县| 建平县| 永泰县| 温宿县| 荔波县| 喀什市| 永和县| 海南省| 靖远县| 广安市| 乐都县| 奉贤区| 托克逊县| 台山市| 北辰区| 丹巴县| 镇宁| 建阳市| 蕲春县| 繁峙县| 蒙山县| 萨嘎县| 平罗县| 忻州市| 老河口市| 东平县| 安庆市| 抚顺县| 尚义县| 莫力| 洱源县| 昌平区| 洞口县| 嵩明县| 甘洛县| 呼和浩特市| 绥阳县| 留坝县| 洛南县|