一、測試自動化
自動化測試就是希望能夠通過自動化測試工具或其他手段,按照測試工程師的預(yù)定計(jì)劃進(jìn)行自動的測試,目的是減輕手工測試的勞動量,從而達(dá)到提高軟件質(zhì)量的目的。自動化測試的目的在于發(fā)現(xiàn)老缺陷。而手工測試的目的在于發(fā)現(xiàn)新缺陷。
測試自動化涉及到測試流程、測試體系、自動化化編譯、持續(xù)集成、自動發(fā)布測試系統(tǒng)以及自動化測試等方面整合。也就是說要讓測試能夠自動化,不僅是技術(shù)、工具的問題,更是一個(gè)公司和組織的文化問題。首先公司從資金、管理上支持您,其次要有專門的測試團(tuán)隊(duì)去建立適合自動化測試的測試流程、測試體系;其次就是把原代碼從受控庫中取出、編譯、集成、發(fā)布可運(yùn)行系統(tǒng)、進(jìn)行自動化的單元測試和自動化的功能測試的過程。
(一)、自動化測試的好處
1、 對新版本執(zhí)行回歸測試--測試每個(gè)特征
對于產(chǎn)品型的軟件,每發(fā)布一個(gè)新的版本,其中大部分功能和界面都和上一個(gè)版本相似或完全相同,這部分功能特別適合于自動化測試, 從而可以讓測試達(dá)到測試每個(gè)特征的目的。
2、 更多更頻繁的測試--沉悶、耗時(shí)
我們的產(chǎn)品向市場的發(fā)布周期是3個(gè)月,也就是我們的開發(fā)周期只有短短的3個(gè)月,而在測試期間是每天/每2天都要發(fā)布一個(gè)版本供測試人員測試,一個(gè)系統(tǒng)的功能點(diǎn)有幾千個(gè)上萬個(gè),人工測試是非常的耗時(shí)和繁瑣,這樣必然會使測試效率低下。
3、替代手工測試的困難--300個(gè)用戶有些非功能性方面的測試:壓力測試、并發(fā)測試、大數(shù)據(jù)量測試、崩潰性測試,用人來測試是不可能達(dá)到的。 在沒有引入自動化測試工具之前,為了測試并發(fā),研發(fā)中心的一、兩百號人在研發(fā)經(jīng)理的口令:1-、2-、3!, 大家同時(shí)按下同一個(gè)按鈕?;叵肫疬@中情景也蠻有意思的。
4、具有一致性和可重復(fù)性
由于每次自動化測試運(yùn)行的腳本是相同的, 所以每次執(zhí)行的測試具有一致性, 人是很難做到的. 由于自動化測試的一致性,很容易發(fā)現(xiàn)被測軟件的任何改變。
5、更好的利用資源--周未/晚上
理想的自動化測試能夠按計(jì)劃完全自動的運(yùn)行, 在開發(fā)人員和測試人員不可能實(shí)行三班倒的情況下, 自動化測試可以勝任這個(gè)任務(wù), 完全可以在周末和晚上執(zhí)行測試. 這樣充分的利用了公司的資源,也避免了開發(fā)和測試之間的等待.
6、解決測試與開發(fā)之間的矛盾
通常在開發(fā)的末期,進(jìn)入集成測試階段, 由于每發(fā)布一個(gè)版本的初期,測試系統(tǒng)的錯(cuò)誤比較少,這時(shí)開發(fā)人員有等待測試人員測試出錯(cuò)誤的時(shí)間. 事實(shí)上在疊代周期很短的開發(fā)模式中,存在更多的矛盾, 但自動化測試可以解決其中的主要矛盾。
7、增加軟件信任度
總之,自動化測試的好處和收益是很明顯的,但也只有順利事實(shí)了自動化測試才能從中獲得它的益處。
(二)、 自動化測試-- 誤區(qū)、限制自動化化測試好處很多,但也有很多的局限,也正因?yàn)楹芏嗬习鍖ψ詣踊瘻y試的期望太高,所以有很多執(zhí)行自動化測試失敗的例子。
1、 期望自動化測試能取代手工測試
不能期望自動化測試來取代手工測試, 測試主要還是要靠人工的。
2、期望自動測試發(fā)現(xiàn)大量新缺陷
同樣不能期望自動化測試去發(fā)現(xiàn)更多新的缺陷, 事實(shí)證明新缺陷越多,自動化測試失敗的幾率就越大。發(fā)現(xiàn)更多的新缺陷應(yīng)該是手工測試的主要目的。測試專家James Bach總結(jié)得 85%的缺陷靠手工發(fā)現(xiàn),而自動化測試只能發(fā)現(xiàn)15%的缺陷。
其實(shí)我認(rèn)為自動化測試能夠很好的發(fā)現(xiàn)老缺陷。
3、工具本身不具有想象力
工具畢竟是工具,出現(xiàn)一些需要思考、體驗(yàn)、界面美觀方面的測試,自動化測試工具無能為力。
4、技術(shù)問題、組織問題、腳本維護(hù)
自動化測試的推行,有很多阻力,比如組織是否重視, 是否成立這樣的測試團(tuán)隊(duì),是否有這樣的技術(shù)水平,對于測試腳本的維護(hù)工作量也挺大的,是否值得維護(hù)等等問題都必須考慮。
(三)、 不適合自動化測試情況
自動化測試不是適合所有的公司、所有的項(xiàng)目。
1、定制型項(xiàng)目(一次性的)
為客戶定制的項(xiàng)目,維護(hù)期由客戶方承擔(dān)的,甚至采用的開發(fā)語言、運(yùn)行環(huán)境也是客戶特別要求的,即公司在這方面的測試積累就少,這樣的項(xiàng)目不適合作自動化化測試。
2、項(xiàng)目周期很短的項(xiàng)目
項(xiàng)目周期很短,測試周期很短,就不值得花精力去投資自動化測試,好不容易建立起的測試腳本,不能得到重復(fù)的利用是不現(xiàn)實(shí)的。
3、業(yè)務(wù)規(guī)則復(fù)雜的對象
業(yè)務(wù)規(guī)則復(fù)雜的對象,有很多的邏輯關(guān)系、運(yùn)算關(guān)系,工具就很難測試。
4、美觀、聲音、易用性測試
人的感觀方面的:界面的美觀、聲音的體驗(yàn)、易用性的測試,也只有人來測試
5、測試很少運(yùn)行:一個(gè)月只運(yùn)行一次
測試很少運(yùn)行,對自動化測試就是一種浪費(fèi)。自動化測試就是讓它不厭其煩的、反反復(fù)復(fù)的運(yùn)行才有效率。
6、軟件不穩(wěn)定
軟件不穩(wěn)定,則會由于這些不穩(wěn)定因素導(dǎo)致自動化測試失敗。只有當(dāng)軟件達(dá)到相對的穩(wěn)定,沒有界面性嚴(yán)重錯(cuò)誤和中斷錯(cuò)誤才能開始自動化測試。
7、涉及物理交互
工具很難完成與物理設(shè)備的交互,比如刷卡的測試等。
(四)、什么樣的情況適合自動化測試
自動化測試之所以能在很多大公司實(shí)施起來,就是有它適合自動化測試的特點(diǎn)和高的投資回報(bào)率。
1、產(chǎn)品型項(xiàng)目
產(chǎn)品型的項(xiàng)目,每個(gè)項(xiàng)目只改進(jìn)少量的功能,但每個(gè)項(xiàng)目必須反反復(fù)復(fù)的測試那些沒有改動過的功能。這部分測試完全可以讓自動化測試來承擔(dān), 同時(shí)可以把新加入的功能的測試也慢慢地加入到自動化測試當(dāng)中。
2、增量式開發(fā)、持續(xù)集成項(xiàng)目
由于這種開發(fā)模式是頻繁的發(fā)布新版本進(jìn)行測試,也就需要自動化測試來頻繁的測試,以便把人從中解脫出來測試新的功能。
3、能夠自動編譯、自動發(fā)布的系統(tǒng)
要能夠完全實(shí)現(xiàn)自動化測試,必須能夠具有自動化編譯,自動化發(fā)布系統(tǒng)進(jìn)行測試的功能。 當(dāng)然,不能達(dá)到這個(gè)要求也可以在手工干預(yù)下進(jìn)行自動化測試。
4、回歸測試
回歸測試試自動化測試的強(qiáng)項(xiàng),它能夠很好的確保你是否引入了新的缺陷,老的缺陷是否修改過來了。在某種程度上可以把自動化測試工具叫做回歸測試工具。
5、多次重復(fù)、機(jī)械性動作
自動化測試最喜歡測試:多次重復(fù)、機(jī)械性動作,這樣的測試對它來說從不會失敗。比如要向系統(tǒng)輸入大量的相似數(shù)據(jù)來測試壓力和報(bào)表。
6、需要頻繁運(yùn)行測試
在一個(gè)項(xiàng)目中需要頻繁的運(yùn)行測試,測試周期按天算,就能最大限度的利用測試腳本,提高工作效率。
7、將煩瑣的任務(wù)轉(zhuǎn)化為自動化測試
二、持續(xù)集成及其自動化編譯
"持續(xù)集成(Continuous Integration)"的概念來自于XP(極限編程)的一個(gè)實(shí)踐, 我們的開發(fā)模式是建立在CMM的基礎(chǔ)之上,引入了某些XP的概念,所以我們的思想是取各方面的精華來適合自己。
持續(xù)集成是指能夠自動的集成已經(jīng)提交(Check-in)的代碼,直至發(fā)布到測試服務(wù)器供測試的整個(gè)過程。
1、實(shí)現(xiàn)自動化日構(gòu)建需要做以下幾部分的工作:
2、將所有的源代碼保存在單一的開發(fā)服務(wù)器,讓所有人都能從這里獲取最新的源代碼(需要用配置管理工具存放源代碼: 如VSS/CVS/ClearCase)。
3、使創(chuàng)建過程完全自動化,讓任何人都可以只輸入一條命令就完成系統(tǒng)的創(chuàng)建。
4、使測試完全自動化,讓任何人都可以只輸入一條命令就運(yùn)行一套完整的系統(tǒng)測試。
5、確保所有人都可以得到最新、最好的可執(zhí)行文件。
6、自動化編譯: 為了能夠提供自動化測試,所以所有的代碼必須能夠?qū)崿F(xiàn)自動化編譯。其實(shí)很多在做持續(xù)集成的公司都實(shí)現(xiàn)了改功能:如java程序可以采用在Ant + Junit 的基礎(chǔ)之上添加自己的功能既可以實(shí)現(xiàn)持續(xù)集成―――我們把這個(gè)工具叫:日構(gòu)建
但很多公司并沒有實(shí)現(xiàn)對JSP的自動編譯,對于采用jsp編寫的web頁面,它是編譯執(zhí)行語言,由于第一次執(zhí)行要先編譯,即第一次的速度稍慢,如果要采用自動化測試工具winrunner進(jìn)行功能測試時(shí),則會失敗。因?yàn)樽詣踊瘻y試工具最基本的要求是:
1、進(jìn)入條件和出口條件必須在錄制與回放時(shí)完全相同。
2、持續(xù)集成最的好處:
完全可以取代人工的發(fā)布, 在J2EE中有個(gè)角色叫deployer., 它的主要工作就是經(jīng)常發(fā)布新的系統(tǒng)供開發(fā)、測試,一般每發(fā)布一次至少要一個(gè)小時(shí),如遇到一些問題一個(gè)上午就耗費(fèi)掉了, 但使用“日構(gòu)建”后就可以完全實(shí)現(xiàn)自動化,時(shí)間幾乎只等于編譯時(shí)間。
它完全避免了開發(fā)者們的"除蟲會議"--以前開發(fā)者們經(jīng)常需要開這樣的會,因?yàn)槟硞€(gè)人在工作的時(shí)候踩進(jìn)了別人的領(lǐng)域、影響了別人的代碼,而被影響的人還不知道發(fā)生了什么,于是bug就出現(xiàn)了。
這樣的bug絕大多數(shù)都可以在引入的同一天就被發(fā)現(xiàn)。由于一天之中發(fā)生變動的部分并不多,所以可以很快找到出錯(cuò)的位置。
持續(xù)集成可以把發(fā)現(xiàn)的錯(cuò)誤根據(jù)源代碼的作者,以郵件和日志的方式分發(fā)給作者,第二天一上班的第一件事就是先修改錯(cuò)誤。
持續(xù)集成可以減少集成階段"捉蟲"消耗的時(shí)間、 頻繁發(fā)布新版本的時(shí)間,從而最終提高生產(chǎn)力和軟件質(zhì)量。
3、理想的持續(xù)集成的實(shí)現(xiàn)方法:
A)、同一個(gè)軟件產(chǎn)品要有集中的同一臺開發(fā)服務(wù)器,即所有人的最新的、各自編譯通過的源代碼都在配置管理工具如VSS中。
B)、有一臺運(yùn)行主創(chuàng)建的機(jī)器,有計(jì)劃的運(yùn)行日構(gòu)建, 日構(gòu)建中有一個(gè)創(chuàng)建進(jìn)程,該創(chuàng)建進(jìn)程是在一個(gè)隨時(shí)保持運(yùn)行的Java類中進(jìn)行的,如果沒有創(chuàng)建任務(wù),創(chuàng)建進(jìn)程就一直循環(huán)等待。
C)、守護(hù)進(jìn)程將全部代碼(包括原程序和配置文件,數(shù)據(jù)庫腳本等)提取到創(chuàng)建機(jī)器的一個(gè)目錄中。提取完成之后,守護(hù)進(jìn)程就會在這個(gè)目錄里調(diào)用Ant腳本。
D)、Ant會接管整個(gè)創(chuàng)建過程,對所有源代碼做一次完整的創(chuàng)建。Ant腳本會負(fù)責(zé)整個(gè)編譯過程,并把得到的class文件放進(jìn)六個(gè)jar包里,發(fā)布到EJB服務(wù)器上。
創(chuàng)建結(jié)束之后,創(chuàng)建守護(hù)進(jìn)程會給所有向最新一次創(chuàng)建歸還了代碼的開發(fā)者發(fā)一個(gè)e-mail,匯報(bào)創(chuàng)建的情況。
E)、當(dāng)Ant完成了編譯和發(fā)布的工作之后,創(chuàng)建守護(hù)進(jìn)程就會在EJB服務(wù)器上開始運(yùn)行新的jar,同時(shí)開始運(yùn)行BVT測試套件:即利用Junit進(jìn)行單元測試。
單元測試完成后,日構(gòu)建會把單元測試報(bào)告發(fā)給有錯(cuò)誤的開發(fā)人員。
F)、為了利用自動化工具(WINRUNNER)進(jìn)行功能測試,必須對JSP編譯,利用jspc命令進(jìn)行包裝一層,就可以自動的對所有的jsp文件進(jìn)行編譯, 但由于編譯jsp的時(shí)間非常長(越比編譯java代碼時(shí)間長),所以一般利用單獨(dú)的編譯服務(wù)器進(jìn)行編譯。 發(fā)布編譯好的jsp文件進(jìn)行自動化測試的成功率高(因?yàn)榈谝淮芜\(yùn)行jsp文件非常慢,而自動化測試最忌諱運(yùn)行時(shí)和錄制時(shí)等待得時(shí)間不一樣)。 而功能性自動化測試也需要按計(jì)劃有順序的執(zhí)行,這需要TestDirector測試管理系統(tǒng)來調(diào)度Winrunner進(jìn)行測試。
讓所有的重復(fù)的繁瑣的事情都完全自動化,并且要經(jīng)常進(jìn)行集成,讓重復(fù)的測試自動化。
三、測試套件實(shí)現(xiàn)測試流程.
當(dāng)具備持續(xù)集成和測試自動化的能力后,需要一套測試體系來支持和維護(hù)您的測試流程,確保測試過程是符合流程、標(biāo)準(zhǔn),而且是持續(xù)改進(jìn)的。
(一)、為什么需要一個(gè)流程?
很多公司投入了大量的測試經(jīng)費(fèi),然而還是沒有收到預(yù)期的收益。這可能是因?yàn)椋喝狈ψ銐虻?strong>測試計(jì)劃、缺乏測試的優(yōu)先次序、工作的重復(fù)、沒有利用工具來配合人工測試、沒有利用測試自動化工具、測試自動化運(yùn)用不夠或者運(yùn)用的不恰當(dāng)?shù)鹊?。所以需要有測試套件的實(shí)施流程。
(二)、 為什么需要工具?
工具能夠加快測試的進(jìn)度,可以把控制和管理引入整個(gè)測試過程,比如MI公司的TestDirector就是一個(gè)很好使用的測試管理系統(tǒng),而且是web版的。測試管理系統(tǒng)有很多的作用:
測試管理和報(bào)告:測試管理系統(tǒng)能夠保證系統(tǒng)開發(fā)和測試流程你不的問題盡快得到解決。
審核跟蹤的憑據(jù):TestDirector存貯了所有的測試結(jié)果,全部修改被寫進(jìn)一個(gè)審核跟蹤器里,如:時(shí)間、日期、修改人、錯(cuò)誤授權(quán),能夠很清晰的看到把錯(cuò)誤當(dāng)皮球踢不負(fù)責(zé)人的整個(gè)過程。
提高測試覆蓋率:通過自動化測試工具的數(shù)據(jù)驅(qū)動來測試功能,可以提高測試覆蓋率。
(三)、測試套件--測試體系的主要目標(biāo)(5W3H)
測試體系的建立是為了確保軟件測試的全部活動按計(jì)劃、按標(biāo)準(zhǔn)的進(jìn)行,是測試人員的行動綱領(lǐng)和職責(zé)指導(dǎo)。也就是有這樣的一個(gè)體系、流程來指導(dǎo)他們的工作,培養(yǎng)了他們的主人翁責(zé)任感。讓測試工作開展得有條不紊。
主要的內(nèi)容有:測試流程,測試方針、測試規(guī)程、文檔模版、質(zhì)量標(biāo)準(zhǔn)、測試工具、測試技術(shù)和方法等內(nèi)容。
測試體系的主要目標(biāo)(5W3H):目的是告訴與測試活動相關(guān)的人員在什么樣的時(shí)間,什么樣的地點(diǎn),由誰來做,做什么樣的事情,為什么做,如何做,怎么樣才算完成,缺陷如何分析和預(yù)防等??梢院喎Q:5W3H.
1、為什么要測試系統(tǒng)(Why) ?
測試新功能:每發(fā)布一個(gè)新的版本,首先要去測試它的新功能。創(chuàng)建回歸測試的測試套件驗(yàn)證缺陷修改:在這個(gè)測試周期中要驗(yàn)證上個(gè)測試周期的缺陷修改情況。驗(yàn)證系統(tǒng)性能檢測新硬件
2、如何測試系統(tǒng)(How)?
系統(tǒng)測試:檢查系統(tǒng)總體功能
壓力測試:在反復(fù)相同的操作下、或其他壓力條件下,比如:低內(nèi)存空間/低磁盤空間等,檢測軟件的反應(yīng)。
安裝測試:檢驗(yàn)系統(tǒng)安裝得是否正確,而且與已安裝的軟件不發(fā)生沖突。
安全測試:測試系統(tǒng)存取權(quán)限和授權(quán)的級別
邊界測試:利用數(shù)據(jù)邊界和系統(tǒng)邊界檢驗(yàn)程序
3、什么時(shí)候進(jìn)行測試(When)?
在開發(fā)流程的哪個(gè)階段開始測試?
在需求規(guī)格說明書一出來,或項(xiàng)目管理計(jì)劃一出來,測試人員就開始有事做:寫測試計(jì)劃、編寫測試用例、執(zhí)行測試、測試報(bào)告和缺陷分析。很多老板以為要編碼結(jié)束后才開始測試工作,所以不肯有專職的測試人員,怕他們在項(xiàng)目前期沒有事做。
前提條件和附屬條件是什么?
多長時(shí)間需要進(jìn)行一次測試?
交貨的時(shí)間表是什么?
什么時(shí)候停止測試? 什么時(shí)候停止測試是很有學(xué)問的,很多公司多半是在沒有時(shí)間、沒有資金是,老板或項(xiàng)目經(jīng)理說了停止就停止。事實(shí)上根據(jù)bug預(yù)測、bug發(fā)現(xiàn)率與錯(cuò)誤修正率的時(shí)間曲線來決定的。只有當(dāng)這個(gè)曲線達(dá)到水平線后方才可以停止。
4、誰來實(shí)施測試(Who) ?
硬件:具備什么樣的服務(wù)器、客戶端及其網(wǎng)絡(luò)環(huán)境。
軟件:安裝什么樣的軟件環(huán)境最適合作這些測試。
體系架構(gòu):測試的類別有很多,不同的人進(jìn)行不同的測試,比如開發(fā)人員做單元測試,測試人員作功能測試、集成測試、非功能性測試,而讓市場、需求人員、客戶去做驗(yàn)收測試
數(shù)據(jù):需要什么樣的測試數(shù)據(jù)來實(shí)施這一次的測試,這些測試數(shù)據(jù)的設(shè)計(jì)。
人力資源:按測試計(jì)劃的要求安排相關(guān)的人力資源。
5、在哪里進(jìn)行測試(Where) ?
在開發(fā)服務(wù)器上測試?
開發(fā)人員可能會叫你在開發(fā)服務(wù)器上測試,事實(shí)上這樣對測試效率和測試人員的情緒影響是很大的,因?yàn)殚_發(fā)服務(wù)器是一個(gè)極不穩(wěn)定的環(huán)境。而且也沒明顯的測試階段。
建立一個(gè)測試實(shí)驗(yàn)室 ?
對于有很多項(xiàng)目的公司,建立一個(gè)測試實(shí)驗(yàn)室是很必要的,主要用來做環(huán)境的兼容性測試,壓力、性能測試,驗(yàn)收測試等等。
為了減輕測試者本地機(jī)器的負(fù)荷,使之在進(jìn)行測試的同時(shí)可以做其他測試,遠(yuǎn)程定時(shí)執(zhí)行測試的機(jī)制。
6、測試什么(What) ?
自動測試中應(yīng)用程序的主要特點(diǎn)是什么?
按重要性將這些特點(diǎn)排序?自動測試各部分的相對重要性?
總體質(zhì)量目標(biāo)是什么(可用性,功能,可靠性,性能等等)?
7、怎么樣才算完成(How)?
要定義測試的完成條件和完成標(biāo)準(zhǔn), 以便達(dá)到這些條件和標(biāo)準(zhǔn)后應(yīng)該立即停止測試,否則在經(jīng)濟(jì)和時(shí)間上是不允許的,因?yàn)闇y試可以永遠(yuǎn)下去.
8、缺陷如何分析和預(yù)防(How)?
測試過后應(yīng)該對測試出的錯(cuò)誤類別,錯(cuò)誤特點(diǎn)作分析和提出預(yù)防措施,以便在將來的項(xiàng)目中有意識的去避免,這就是CMM5中說的缺陷預(yù)防.
四、自動化測試工具(WinRunner)
另外在此簡單的介紹一下自動化測試工具的原理。
1、 Winrunner基本原理--錄制/回放功能
――錄制
錄制前的Add-in選擇:它對不同的語言開發(fā)了不同的Add-in錄制前的參數(shù)設(shè)置錄制方式選擇:
Context Sensitive
Analog
錄制技巧
保存錄制腳本和GUI
――調(diào)試
修改錄制好的腳本。
添加同步點(diǎn)和等待時(shí)間。
添加檢查點(diǎn)check point。
修改GUI-MAP,提高可讀性、可維護(hù)性 。
回放的前提條件。
執(zhí)行測試方式:
驗(yàn)證方式:核對應(yīng)用程序是否正確。
調(diào)試方式:增加新特征和功能
更新方式:用新版本應(yīng)用程序中得到的運(yùn)行結(jié)果更新期望結(jié)果。
分析結(jié)果。
2、 參數(shù)化數(shù)據(jù)驅(qū)動測試
特點(diǎn):用相同測試腳本執(zhí)行不同測試優(yōu)點(diǎn):提高測試覆蓋率
步驟:
1).轉(zhuǎn)換你的測試為數(shù)據(jù)驅(qū)動測試:datadriver
2).在數(shù)據(jù)表中增加數(shù)據(jù)
3).校正腳本使用正確的表達(dá)式
4).自定義結(jié)果信息 (tl_step)
3、 運(yùn)用WinRunner的風(fēng)險(xiǎn)
產(chǎn)品性的軟件,會有很多自己開發(fā)的組件、控件或引入新的技術(shù)如xml,htc等,這有可能使得自動化測試工具不認(rèn)識,導(dǎo)致整個(gè)自動化測試失敗,已往積累的測試腳本將全部廢棄。
總之,由于商業(yè)社會對軟件的質(zhì)量要求越來越高,軟件開發(fā)過程的持續(xù)改進(jìn),軟件項(xiàng)目的持續(xù)集成與測試自動化的發(fā)展是必然的,其作用也將越來越明顯。不同的技術(shù)和開發(fā)環(huán)境對測試如何自動化有不同的要求,還有很多值得研究的地方。