★ 杭州和利時(shí)自動(dòng)化有限公司 方壘,邊濤
摘要:自動(dòng)化測(cè)試在行業(yè)中的重要性和優(yōu)勢(shì)是顯而易見的。本文介紹了在工業(yè)軟件的自動(dòng)化測(cè)試探索中,如何克服被測(cè)對(duì)象提出的挑戰(zhàn),從而摸索且實(shí)踐出的一套適合工業(yè)軟件的自動(dòng)化測(cè)試解決方案,并對(duì)解決方案中的優(yōu)秀實(shí)踐進(jìn)行了介紹。
關(guān)鍵詞:自動(dòng)化測(cè)試;工業(yè)控制軟件
1 引言
軟件質(zhì)量需要測(cè)試,自動(dòng)化測(cè)試可以改善產(chǎn)品質(zhì)量,并保持高標(biāo)準(zhǔn)的代碼卓越性。
軟件測(cè)試的經(jīng)典定義是:在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估的過程。自動(dòng)化測(cè)試通過讓機(jī)器代替人執(zhí)行測(cè)試,自動(dòng)執(zhí)行大量的測(cè)試用例,甚至完成某些手工測(cè)試無法完成的測(cè)試工作,從而達(dá)到資源優(yōu)化、提高產(chǎn)品質(zhì)量的目標(biāo)。
在針對(duì)特殊行業(yè)軟件進(jìn)行自動(dòng)化測(cè)試探索過程中,遇到的困難點(diǎn)來自于兩個(gè)維度:一是被測(cè)試軟件自身的特點(diǎn),對(duì)自動(dòng)化測(cè)試框架提出了挑戰(zhàn);二是自動(dòng)化測(cè)試框架當(dāng)前通用的難點(diǎn),在被測(cè)試軟件中恰是難以覆蓋的重點(diǎn)。面對(duì)困難與挑戰(zhàn),我們的自動(dòng)化測(cè)試團(tuán)隊(duì)迎難而上,最終實(shí)踐出一套適合工業(yè)軟件的優(yōu)秀自動(dòng)化測(cè)試方案。
2 被測(cè)系統(tǒng)介紹
HOLLiAS MACS V6.5系列是和利時(shí)于2013年正式推出的第5代高可靠性DCS系統(tǒng),設(shè)計(jì)過程中充分采用了安全系統(tǒng)的設(shè)計(jì)理念,吸取國際工業(yè)電子技術(shù)和工業(yè)控制技術(shù)的最新成果,嚴(yán)格遵循國際先進(jìn)的工業(yè)標(biāo)準(zhǔn),采用全冗余、多重隔離、熱分析、容錯(cuò)等可靠性設(shè)計(jì)技術(shù),從而保證系統(tǒng)在復(fù)雜、惡劣的工業(yè)現(xiàn)場(chǎng)環(huán)境中能安穩(wěn)長(zhǎng)滿優(yōu)地運(yùn)行。
HOLLiAS MACS V6.5系統(tǒng)基于國際標(biāo)準(zhǔn)和行業(yè)規(guī)范進(jìn)行設(shè)計(jì),集成了各行業(yè)的先進(jìn)控制算法平臺(tái),可根據(jù)不同行業(yè)的自動(dòng)化控制需求,提供更專業(yè)全面的一體化解決方案,從而實(shí)現(xiàn)了生產(chǎn)、設(shè)備和安全三大目標(biāo)的最佳協(xié)調(diào),并幫助用戶實(shí)現(xiàn)產(chǎn)品全生命周期維護(hù)成本的最小化和設(shè)備投資回報(bào)的最大化。
HOLLiAS MACS V6.5系統(tǒng)是基于以太網(wǎng)和PROFIBUS-DP現(xiàn)場(chǎng)總線構(gòu)架,可方便接入多種工業(yè)以太網(wǎng)和現(xiàn)場(chǎng)總線。
HOLLiAS MACS V6.5系統(tǒng)符合IEC 61131-3標(biāo)準(zhǔn),集成了基于HART標(biāo)準(zhǔn)協(xié)議的AMS系統(tǒng),并可集成SIS、PLC、MES、ERP等系統(tǒng),同時(shí)提供了眾多知名廠家控制系統(tǒng)的驅(qū)動(dòng)接口,可實(shí)現(xiàn)智能現(xiàn)場(chǎng)儀表設(shè)備、控制系統(tǒng)、企業(yè)資源管理系統(tǒng)之間無縫信息流傳送,實(shí)現(xiàn)工廠智能化、管控一體化。
MACS V6.5系統(tǒng)主要由工程師站、操作員站、歷史站、通訊站、控制站等部件組成,控制網(wǎng)的網(wǎng)絡(luò)節(jié)點(diǎn)由控制站和I/O模塊構(gòu)成。產(chǎn)品架構(gòu)如圖1所示。
圖1 產(chǎn)品架構(gòu)圖
3 工業(yè)軟件自動(dòng)化測(cè)試特點(diǎn)
與傳統(tǒng)的桌面應(yīng)用軟件相比,上文介紹的工業(yè)軟件有很多特點(diǎn)。從上到下的軟硬件一體,在軟件測(cè)試的過程中,需要考慮整體性。軟件自身結(jié)構(gòu)龐大,且處于分布式部署的模式,軟件自身的各個(gè)模塊間交互性非常強(qiáng),在軟件測(cè)試過程中,需要考慮交互性。除此以外,工業(yè)軟件自身對(duì)實(shí)時(shí)性、安全性等的要求非常高,測(cè)試人員在測(cè)試過程中,同樣需要考慮它的特性。那么,作為工業(yè)軟件的自動(dòng)化測(cè)試來說,定位既然是模擬手工測(cè)試人員的測(cè)試行為,那么,以上的所有工業(yè)軟件特性在自動(dòng)化測(cè)試框架的設(shè)計(jì)中,均需要考慮。
就自動(dòng)化測(cè)試自身來講,軟件自動(dòng)化測(cè)試的分層理論倡導(dǎo)不同層次(階段)需要自動(dòng)化,從底到頂?shù)膶哟谓Y(jié)構(gòu)依次為:UT(單元測(cè)試)、接口層、UI(用戶界面)層。
通過應(yīng)用程序的UI來操作該應(yīng)用程序的自動(dòng)測(cè)試稱為編碼的UI測(cè)試(CUIT)。這些測(cè)試包括對(duì)UI控件的功能測(cè)試,可以驗(yàn)證整個(gè)應(yīng)用程序(包括其用戶界面)是否正常運(yùn)行。編碼的UI測(cè)試對(duì)于在用戶界面中存在驗(yàn)證或其他邏輯的情況特別有用。
針對(duì)工業(yè)應(yīng)用軟件當(dāng)前測(cè)試投入點(diǎn),結(jié)合自動(dòng)化測(cè)試UI層特性,設(shè)計(jì)出了一套適合工業(yè)軟件的自動(dòng)化測(cè)試框架。該測(cè)試框架既涵蓋無人值守的自動(dòng)化測(cè)試完整流程,包括從測(cè)試版本自動(dòng)推送一直到最終的測(cè)試結(jié)果反饋,又在實(shí)踐過程中納入了當(dāng)前軟件行業(yè)非常多的優(yōu)秀實(shí)踐,并對(duì)此進(jìn)行了改進(jìn)和方案集成。以下將分別對(duì)優(yōu)秀實(shí)踐的應(yīng)用做以說明。
4 優(yōu)秀實(shí)踐
4.1 邊角測(cè)試集成方案
在自動(dòng)化測(cè)試框架的設(shè)計(jì)中,ST環(huán)節(jié)定義為UI自動(dòng)化測(cè)試,那么,分析現(xiàn)有無論是開源還是商用自動(dòng)化測(cè)試工具,發(fā)現(xiàn)在對(duì)軟件的UI層進(jìn)行自動(dòng)化測(cè)試時(shí),均會(huì)面臨無法識(shí)別軟件自定義或二次開發(fā)的UI控件。在圖形結(jié)果的驗(yàn)證中,也很難做到識(shí)別與驗(yàn)證,特別是在屏幕顏色進(jìn)行閃變且圖形實(shí)時(shí)變化的情況。如果要達(dá)到自動(dòng)化完全模擬人工測(cè)試的操作及結(jié)果驗(yàn)證,那么以上的難點(diǎn)無法避免。
鑒于此,我們?cè)赟T測(cè)試框架中,除了對(duì)UI上的控件進(jìn)行識(shí)別加入到測(cè)試代碼的對(duì)象庫中,框架中集成了另外一種完全不同測(cè)試思想的圖形對(duì)象庫。圖形對(duì)象庫的建立,使得對(duì)軟件界面對(duì)象的操作和結(jié)果驗(yàn)證,依賴的不再是框架是否可以識(shí)別的組件,而是圖形。對(duì)軟件進(jìn)行自動(dòng)化測(cè)試代碼編寫過程中,圖形對(duì)象的使用,可以克服自定義組件的困難,同樣的,圖形結(jié)果的驗(yàn)證問題迎刃而解。
圖形識(shí)別的自動(dòng)化測(cè)試作為一個(gè)補(bǔ)充的邊角測(cè)試方法,與通用的基于組件識(shí)別的自動(dòng)化測(cè)試框架集成,在做UI層自動(dòng)化測(cè)試中,可測(cè)試范圍進(jìn)行了極大的擴(kuò)充。
4.2 測(cè)試數(shù)據(jù)管理
對(duì)于自動(dòng)化測(cè)試或傳統(tǒng)手工測(cè)試來說,測(cè)試數(shù)據(jù)都是非常重要的資源,那么對(duì)于自動(dòng)化測(cè)試項(xiàng)目來說,如何更好地管理測(cè)試數(shù)據(jù),在自動(dòng)化框架設(shè)計(jì)中也要考慮。
首先,采用測(cè)試代碼與測(cè)試數(shù)據(jù)分離的設(shè)計(jì)模式。這種隔離的設(shè)計(jì)使得測(cè)試代碼的結(jié)構(gòu)非常清晰,而不是雜亂無章的混亂結(jié)構(gòu),更大的好處在于,測(cè)試數(shù)據(jù)的分離使得我們?cè)谧詣?dòng)測(cè)試代碼中使用數(shù)據(jù)池的概念非常便于替換。測(cè)試代碼的復(fù)雜度降低了,測(cè)試的有效性也更好發(fā)揮。
其次,通過配置文件靈活讀取和替換測(cè)試數(shù)據(jù)。以上章節(jié)中提到,測(cè)試框架中的測(cè)試對(duì)象有一部分是圖形對(duì)象,圖形對(duì)象作為測(cè)試對(duì)象同時(shí)作為測(cè)試數(shù)據(jù),如果得不到很好的管理,那么,在被測(cè)試軟件發(fā)生部分界面變化時(shí),維護(hù)的成本和工作量是非常巨大的。考慮到這個(gè)因素,設(shè)計(jì)采用了配置文件的方式,進(jìn)行此類數(shù)據(jù)的組織、管理和調(diào)用。
最后,使用工具將測(cè)試數(shù)據(jù)資源進(jìn)行管理。在軟件開發(fā)的過程中,相信很多從事軟件工作的同行,無論哪個(gè)角色,均會(huì)用到支持軟件開發(fā)過程的大量工具。如團(tuán)隊(duì)管理使用進(jìn)行流程管控的工具,開發(fā)人員需要用到版本控制工具等。隨著Visual Studio產(chǎn)品線中Team Foundation Server組件的公布,使得微軟開發(fā)團(tuán)隊(duì)在僵化的軟件項(xiàng)目實(shí)踐應(yīng)用中取得了巨大進(jìn)步。因此,在自動(dòng)化測(cè)試項(xiàng)目組織和測(cè)試數(shù)據(jù)資源管理中,使用的是TFS,我們使用的是TFS的單server結(jié)構(gòu),單server的類型已滿足自動(dòng)化項(xiàng)目的使用。完成項(xiàng)目配置后的TFS如圖2所示。
圖2 TFS配置完成狀態(tài)圖
4.3 測(cè)試結(jié)果監(jiān)視
自動(dòng)化測(cè)試框架對(duì)于自動(dòng)化部署是采用分布式的設(shè)計(jì),那么,對(duì)于測(cè)試機(jī)集群的測(cè)試結(jié)果就需要進(jìn)行統(tǒng)一整合,并在此基礎(chǔ)上做出分析,使得測(cè)試人員定位錯(cuò)誤的代價(jià)最小。
對(duì)于測(cè)試結(jié)果監(jiān)視,我們的實(shí)現(xiàn)是通過控制中心,即自動(dòng)化測(cè)試服務(wù)器將被測(cè)試機(jī)器的測(cè)試結(jié)果進(jìn)行依次回收,回收至服務(wù)器本地后,首先進(jìn)行測(cè)試結(jié)果的整合,將不同測(cè)試機(jī)的結(jié)果進(jìn)行既定模板的整合,整合后,數(shù)據(jù)做兩個(gè)方面的處理。一是將測(cè)試數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,從全局上掌握自動(dòng)化測(cè)試的運(yùn)行結(jié)果。二是詳細(xì)分析,將每個(gè)自動(dòng)化用例的測(cè)試結(jié)果進(jìn)行豐富的多維度測(cè)試結(jié)果解析。
結(jié)果一主要支持管理人員及測(cè)試維護(hù)人員從全局上了解被測(cè)試產(chǎn)品測(cè)試質(zhì)量。結(jié)果二的主要目的是提供測(cè)試維護(hù)人員對(duì)于失敗進(jìn)行詳細(xì)及快速的定位。畢竟在自動(dòng)化用例規(guī)模過大的時(shí)候,自動(dòng)化的監(jiān)視對(duì)象主要還是失敗用例。自動(dòng)化測(cè)試結(jié)果如圖3所示。
圖3 自動(dòng)化測(cè)試結(jié)果展示圖
4.4 自動(dòng)化測(cè)試用例設(shè)計(jì)與測(cè)試代碼質(zhì)量保證
在我們的測(cè)試團(tuán)隊(duì)中,自動(dòng)化測(cè)試用例代碼的編寫是多人協(xié)作開發(fā)的模式,對(duì)于如何保障用例本身的代碼質(zhì)量,我們做了很多嘗試和努力,以兩個(gè)實(shí)踐中有效嘗試為例,在該部分做個(gè)說明。
結(jié)構(gòu)化代碼設(shè)計(jì),以便于更簡(jiǎn)單地復(fù)制和改寫用例。測(cè)試代碼由多人開發(fā),在過程中,有很多重復(fù)性的代碼,那么,將這些部分進(jìn)行模塊化處理,供公共調(diào)用,有效減少了測(cè)試代碼量,維護(hù)代價(jià)非常小。
自動(dòng)化代碼的代碼檢視。通過代碼的交叉檢視,不僅能發(fā)現(xiàn)個(gè)人代碼過程中的錯(cuò)誤及不符合規(guī)范項(xiàng),還能在檢視別人的代碼中提升自我。前提是我們的自動(dòng)化團(tuán)隊(duì)形成了自己的自動(dòng)化代碼規(guī)范且包含了自動(dòng)化用例設(shè)計(jì)指導(dǎo)原則等。當(dāng)前,代碼檢視不能側(cè)重于發(fā)現(xiàn)代碼缺陷,它是一個(gè)監(jiān)督項(xiàng),可以使我們的團(tuán)隊(duì)不斷提升自動(dòng)化測(cè)試代碼質(zhì)量。
4.5 部署和管理
對(duì)于自動(dòng)化測(cè)試當(dāng)前耗時(shí)和可預(yù)見的未來用例及運(yùn)行時(shí)長(zhǎng)規(guī)模來說,自動(dòng)化架構(gòu)設(shè)計(jì)之初運(yùn)行環(huán)境必須采用分布式部署,才能滿足自動(dòng)化構(gòu)建時(shí)長(zhǎng)的要求。因被測(cè)軟件部署于Windows平臺(tái),設(shè)計(jì)使用PowerShell及PowerShell DSC來完成自動(dòng)化測(cè)試整體的部署和管理。此設(shè)計(jì)具有強(qiáng)大的兼容性,完全兼容Windows平臺(tái)上的其它調(diào)用,且基于平臺(tái)具備很好的可擴(kuò)展性,也可以進(jìn)一步利用.NET Framework的強(qiáng)大功能。
在此特別需要說明一下的是PowerShell DSC。在集群機(jī)器管理中,通過使用PowerShell DSC保持自動(dòng)化運(yùn)行環(huán)境的可控和一致性,體現(xiàn)在操作系統(tǒng)和被測(cè)試應(yīng)用軟件上。通過它的使用同樣降低了腳本的復(fù)雜度,可大幅度提高迭代速度。將環(huán)境從結(jié)構(gòu)中分離出來,此類模型設(shè)計(jì)同樣契合與DevOps理念。自動(dòng)化測(cè)試部署如圖4所示。
圖4 自動(dòng)化測(cè)試部署圖
4.6 持續(xù)集成
自動(dòng)化測(cè)試想要發(fā)揮最大化的價(jià)值,就不能不涉及持續(xù)集成。在不斷迭代的被測(cè)試軟件版本中,自動(dòng)化測(cè)試的防護(hù)網(wǎng)持續(xù)攔截且保持測(cè)試標(biāo)準(zhǔn)的一致性,這是自動(dòng)化測(cè)試的理想應(yīng)用狀態(tài),因此,我們的自動(dòng)化測(cè)試方案設(shè)計(jì)中關(guān)于持續(xù)集成的落地在此做一說明。
開發(fā)代碼一旦入庫,通過配置的版本構(gòu)建,會(huì)經(jīng)過持續(xù)自動(dòng)化的質(zhì)量保證環(huán)節(jié)。主要的構(gòu)建步驟如圖5所示。
圖5 自動(dòng)化測(cè)試持續(xù)構(gòu)建圖
4.7 TestOps的展望
新的理念與技術(shù)層出不窮,對(duì)于工業(yè)軟件的自動(dòng)化測(cè)試設(shè)計(jì)方案也是在不斷接受新鮮事物的過程中集成、完善、逐步優(yōu)化的。顧名思義,TestOps即測(cè)試運(yùn)維。從測(cè)試的角度推動(dòng)研發(fā)和運(yùn)維,將測(cè)試落地到整個(gè)研發(fā)體系的關(guān)鍵崗位。它關(guān)注全生命周期的質(zhì)量控制、測(cè)試過程接地氣、關(guān)注環(huán)境及代碼驗(yàn)證、關(guān)注質(zhì)量統(tǒng)計(jì)分析及回溯。概念圖如圖6所示。
圖6 TestOps概念圖
在優(yōu)秀的TestOps體系中,我們關(guān)于工業(yè)軟件自動(dòng)化測(cè)試框架的設(shè)計(jì)及整體的CI設(shè)計(jì)已經(jīng)有部分優(yōu)秀的實(shí)踐活動(dòng)進(jìn)行了落地。但是將測(cè)試落地到整個(gè)研發(fā)體系的關(guān)鍵崗位,我們做得還不夠,有很大提升空間。
例如如何讓測(cè)試團(tuán)隊(duì)專注于提供基于被測(cè)軟件的所有級(jí)別的測(cè)試,從低級(jí)到高級(jí),從功能到集成,形成完整的測(cè)試體系。
例如環(huán)境與持續(xù)集成工具,雖然我們當(dāng)前使用了一些工具用于環(huán)境快速部署和持續(xù)集成,但是優(yōu)秀的工具不斷更新,對(duì)于工具的使用,我們不僅要追求用得全面,更要追求用得優(yōu)異。
例如多種靜態(tài)、動(dòng)態(tài)測(cè)試工具,只要適用且有效,都可以不斷納入我們的持續(xù)集成流程。
一個(gè)例如就是一個(gè)大的進(jìn)步方向。相信通過不斷的自我提升、自動(dòng)化測(cè)試團(tuán)隊(duì)的提升,我們關(guān)于工業(yè)軟件的測(cè)試體系會(huì)更完善、更高效。
參考文獻(xiàn):
[1] [英]格雷, 福斯特. 自動(dòng)化測(cè)試最佳實(shí)踐[M]. 北京: 機(jī)械工業(yè)出版社, 2013.
[2] 郭偉斌, 郭錫坤. 自動(dòng)化測(cè)試的研究和探討[J]. 電腦開發(fā)與應(yīng)用, 2008, (12) : 10 – 12.
[3] [美]達(dá)斯汀, 加瑞特, 高夫. 自動(dòng)化軟件測(cè)試實(shí)施指南[M]. 北京: 機(jī)械工業(yè)出版社, 2010.
[4] 趙麗珍. 基于數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試平臺(tái)設(shè)計(jì)[J]. 福建電腦, 2011, (02) : 135 – 136.
作者簡(jiǎn)介:
方 壘(1976-),男,江西贛州人,高級(jí)工程師,碩士,現(xiàn)任和利時(shí)集團(tuán)聯(lián)席總裁、杭州和利時(shí)自動(dòng)化有限公司總裁兼首席技術(shù)官,長(zhǎng)期從事工業(yè)自動(dòng)化、信息化系統(tǒng)的產(chǎn)品技術(shù)研發(fā)及應(yīng)用推廣工作。
邊 濤(1983-),女,陜西榆林人,工程師,碩士,現(xiàn)任杭州和利時(shí)自動(dòng)化有限公司西安分公司資深軟件測(cè)試工程師,從事測(cè)試及自動(dòng)化測(cè)試工作。