郭 健,王 勇
?
人工智能結合自動化測試在智能電網系統中的未來應用
郭 健,王 勇
(國網匯通金財(北京)信息科技有限公司,北京 100053)
人工智能技術在當今許多領域都有廣泛應用,自動化測試技術在軟件研發領域也倡導和實踐了許多年,但如何將二者相結合并在實際系統研發中落地實現,目前還是測試領域中的藍海。本文通過人工智能領域中的三個點(圖像識別、自然語言處理、決策樹)入手,討論在智能電網業務系統中的自動化最佳實踐方式。
人工智能;自動化測試;智能電網
人工智能[1-2]技術是目前最熱門的科技話題之一,并且在人們的日常生活中的方方面面都有人工智能技術的應用,如人臉識別手機解鎖,語音文字相互轉換,智能家居,無人駕駛等等。越來越多的企業都希望將人工智能技術引入到自身的產品中并通過其智能和便捷性帶來企業收益。
另一方面,自動化測試技術[3-6]是各個企業進行系統研發過程中必不可少的一個環節,而且隨著敏捷開發的應用越來越廣,自動化測試技術在整個研發周期以及各個迭代過程中的比重也越來越大,但傳統意義上的某些自動化測試技術也不斷面臨新的挑戰,如自動化測試腳本維護時間過長,控件元素定位不準確,上手使用難度較大等等。如何有效的解決這些問題也是很多企業在實際研發過程中提高軟件質量的痛點。
企業在自己的產品和系統中進行測試和質量驗收,其期望值已經從原有的軟件功能驗證逐步轉移到從實際業務操作出發的業務流程驗證,即所謂的“端到端”測試,這就給測試人員提出了更高的要求。因為在“端到端”測試過程中,一個業務流程通常會涉及到多個系統,而每個系統本身又有其獨特的點,例如一個業務系統在執行某個業務操作過程中需要對上傳的文件進行圖像識別[7]后根據識別結果才能判斷如何繼續,這就要求自動化測試在測到該步驟時對被測對象進行圖像識別處理(OCR)。
在國家電網系統中,各個子系統類目繁多,數據交互頻繁,各個省之間的同類業務操作還有差異化需求,同時,數據量龐大,業務渠道也是多種多樣,又有很多與第三方平臺進行操作的要求。在這種情況下,如何有效的利用AI技術與現有成熟的自動化測試技術相結合,從而達到滿足各種“端到端”業務需求的自動化測試,就成了當前需要思考和解決的問題。
由于AI領域涉及到的分支眾多,而且業內尚無成熟的體系結構與方法論,因此本文僅討論AI領域中的三個分支:(圖像識別、自然語言處理、決策 樹[8])在自動化測試中的可行性和收益。從而起到拋磚引玉的作用。
計算機的圖像識別技術和人類的圖像識別在原理上并沒有本質的區別,只是機器缺少人類在感覺與視覺差上的影響罷了[9]。人類在進行圖像識別過程時,是利用大腦將圖像的特征值跟進自身的需求提取出來,并和記憶中的圖片進行搜索對比,從而得出結論。
計算機視覺技術也是如此,只是計算機在進行圖像識別時分為兩個部分,一是通過算法將圖像的特征值提取出來,二是將提取出來的特征值信息進行邏輯判斷并與已有參考圖片進行對比。因此,圖像識別的準確性和效率取決于1)參考樣本的數量;

圖1 原始圖片(左)與計算機處理后的圖片邊緣(右)
2)算法的適用性和速度。
自然語言處理(NLP, Natural Language Processing)是實現人類與計算機之間通過自然語言進行通信的技術。
自然語言處理體系還是相對很復雜的,包括詞庫、詞法分析、語義分析、短串分析、輿情分析等多個分支。
自然語言處理技術的難點在于消除語言中的歧義性和多義性。同一個語句的表達,聯系上下文的語境不同,所要表達的意思也會有所區別;而且不同的語種之間的語法結構不同,這也對計算機的理解帶來挑戰。

圖2 自然語言處理技術體系
當前比較主流的6種自然語言處理庫有[10]:
? ● NLTK(自然語言工具包)用于分詞、詞形還原、詞干提取、解析、句法分析、詞性標注等任務。該庫具備可用于幾乎所有 NLP 任務的工具。
? ● spaCy是NLTK的主要競爭者。這兩個庫可用于同樣的任務。
? ● scikit-learn 提供一個用于機器學習的大型庫,包含用于文本預處理的工具。
? ● gensim 是用于話題空間建模、向量空間建模和文檔相似度的工具包。
? ● Pattern庫是作為web挖掘模塊提供服務的,因此,它也支持NLP任務。
? ● polyglot是另一個用于NLP的Python包。它不是很流行,但也可以用于大量NLP任務。
除了上述庫之外,近年來云服務(如百度云、阿里元等)中也逐步接入了自然語言處理相關的接口,這使得人們使用既有NLP技術更為方便和準確。但各個云服務提供商所提供的NLP接口略有不同,方法、付費原則、結果呈現也有差別。因此需要根據實際需求合理選擇和使用云端的自然語言處理服務。
決策樹(decision tree)是一類常見的機器學習方法,目的是為了產生一棵泛化能力強,即處理未見示例能力強的決策樹[11]。
從上述描述中可以看出決策樹有以下一些特點:
(1)決策樹的出現是為了滿足機器輔助人類進行判斷這個目的的;
(2)決策樹是機器學習的一種。既然是機器學習,則它的原理就一目了然了,即通過大量的學習數據進行分析建模,產生邏輯決策樹,再將新的數據應用于該決策模型,從而拿到決策結果;
(3)決策模型是動態產生的,根據學習數據的多少和具體數值的不同,即使是同一邏輯,其產生的決策模型也可能不同。
目前常見的決策樹算法有:lD3決策樹、C4.5決策樹、CART以及決策森林等。不同的決策樹算法適用于不同的場景,有些對離散數據有較好的建模作用,而有些對連續數據更為有效。具體每種算法的計算方法不在此一一列舉,感興趣的朋友可以參考附錄[11]。

圖3 決策樹示例
從上述理論介紹不難看出,每一種AI技術所涵蓋的理論知識和技術體系都很豐富,這么龐大的技術體系如何實際落地就是當下企業需要思考的問題。
我們可以換個角度思考這個問題,既然技術點很多,不如我們真正從企業業務流程出發,在梳理業務分支和相互關系的過程中,就可以發現哪些業務用傳統的自動化測試技術就可以測試到,而哪些是傳統的自動化測試技術無法做到的。這些做不到的難點的特征是什么,現有的AI技術是否可以解決這個問題,等等。這樣我們就做到了有的放矢,具體問題具體分析,從而更快速的解決我們的痛點。
智能電網系統是一套非常復雜的系統,從渠道平臺的角度來講,PC和移動端APP都有應用;從業務對象的角度來看,國家電網的內部系統,各省公司的子系統,第三方系統(如支付寶、銀行等)相互交互;從技術棧角度來講,各種前端應用、中間件集群的調度、后端各種服務以及數據庫的協作, 都會帶來大量數據的處理。對于含有大量數據的報表的自動化測試驗證,傳統意義上的方法是先用代理驅動(WebDriver)定位到頁面上的單元格控件元素,然后根據元素屬性取出具體業務數值,最后再將業務數值與期望結果數值進行對比校驗。但如果采用圖像識別技術,則可以操作為先對期望結果頁面進行截屏,再對被測頁面進行截屏,最后只需對比兩個截屏圖片的相似度即可。
此外,有許多的業務環節是需要驗證用戶的身份信息的,比如注冊、登錄、付費、清分、結算等等。傳統的自動化測試中對于文本類的鑒權信息是可以做驗證的,比如登錄名、賬號、密碼等,但對于圖形類的信息,如身份證照片、圖形驗證碼、人臉識別等,如何高效準確的進行鑒權測試呢?這也需要圖像識別技術的支持。將待測圖片進行特征值提取處理后得到待驗證數據,然后將該數據與校驗庫中的值進行對比,找到最相近的值作為識別的最終值。這個過程中并不進行實際結果和期望結果的對比,只是得到圖中的數據以便保證端到端的自動化測試流程不會中斷。

圖4 自動化測試中傳統方法(左)與圖像識別方法(右)對比

圖5 決策樹技術在自動化測試中的應用
在智能電網的系統中,還有一類應用是授權類服務,如簽約過程中的資格審核。這類服務的特點是要按照一定的風控規則對用戶信息進行評審,并根據評審結果授權用戶相對于的資質。
這類服務的自動化測試,如果采用傳統方式是不容易做到的,因為規則有可能經常變化,而這些變化對于自動化測試又是不透明的。但決策樹技術可以解決這個問題。
我們可以根據風控的維度,對已有的風控處理后的數據進行機器學習,然后動態建立決策樹模型。當新的數據進入到模型時,采用精度和性能最合適的算法對該對象進行授權判斷,從而在不打斷整個端到端測試流程的情況下完成授權部分的邏輯判斷。
測試用例是自動化測試不可缺少的一個組成部分。測試腳本的執行都是依賴于測試用例步驟和順序的。但自動化測試的測試用例往往有很多格式和數據方面的特殊要求才能讓腳本順利執行下去。這就導致了自動化測試的使用門檻太高,只有極少比例的人能掌握和使用這項技術。
將自然語言處理技術融入測試用例的編寫當中,使得不論是中文還是英語,用戶只需要按人類自然的表達方式進行用例內容的填寫,而后臺用自然語言處理服務(注:這種服務可以直接采用第三方提供的服務接口,也可以自己編寫腳本加入特定的邏輯判斷)將使用者的用例描述內容轉換成自動化測試腳本能夠識別的測試數據和邊界值等。如此一來就降低了自動化測試的使用門檻,使得專業測試人員以外的用戶(如產品設計人員,開發人員,運營人員等)都可以很快上手自動化測試,這樣就提高了測試的執行率和覆蓋程度,從而使得系統質量有所提升。

圖6 自然語言處理技術在測試用例設計中的應用
在智能電網的一個測試案例中,需要對移動端APP的一個頁面中的表格數據進行校驗,該表格還具有分頁功能,每頁的待測數據量在300個左右,總頁數約30頁,因此待測數據總數約9000個。如果采用傳統的自動化測試技術,需要對每個頁面的每個單元格控件進行定位,然后再獲取里面的數值。由于移動端傳統WebDriver方式定位控件很慢,導致整體測試完這個節點需要約2~3個小時,這是“端到端”測試中不能接受的。采用了如2.1章節中的截圖技術后,每頁的截圖時間為1秒以下,而且期望結果可以預先準備,實際結果與期望結果的對比校驗時間也為1秒左右,考慮分頁的前后端網絡交互時間,因此圖像識別技術采用后,該測試點的整體用時在20分鐘以內。明顯的提高了自動化測試的效率。
在智能電網的業務中,有很多地方都需要進行用戶的信息鑒權,比如與銀行進行貸款業務之前,要審核用戶基本信息并給出相應的貸款額度。對于不同的用戶,風控規則和考察維度在一定時間內是固定的,基于此,自動化腳本采用C4.5算法,先通過數據庫中的已有數據進行機器學習和決策樹模型建立,然后根據被測數據的值和決策樹規則給出了相應的貸款額度值。
在這個過程的實踐中,筆者比較了ID3算法和C4.5算法的準確度,由于這兩種算法都適用于離散型數據維度,剛好符合業務場景,但C4.5算法采用了信息增益率來矯正每次決策樹的權重,較之ID3算法的信息增益矯正法更為合理,因此最終采用了C4.5算法。
在進行測試用例設計的階段,有一些考察點是要進行邊界值劃分的。例如小于1;大于等于1且小于5;大于等于5。筆者采用自然語音處理的服務對數值劃分進行了解析,使得不論是用例設計者采用以下哪種方式填充測試用例,自動化測試腳本都能準確的識別區間邊界值并順利執行自動化測試。
表1 自然語言處理在邊界值劃分中的應用示例

Table.1 NLP usage example in boundary design for test cases
這樣,測試用例的編寫人員就不用再受到各種邊界值格式的束縛了。從而提高了測試用例設計的速度。
人工智能技術與自動化測試技術的結合,還有很多種可能性。上述的應用實例也不僅僅是在智能電網這一個領域具有可行性,相信在其他工業或者商務領域也能發揮相似的價值。
但不論兩者的組合多么千變萬化,我們的出發點都是一致的,那就是從企業業務真正需要的地方去思考如何落地自動化測試。這樣我們才能做到有的放矢,才能將人工智能技術和自動化測試技術都發揮其最大的應用價值。
[1] 汪子堯, 賈娟. 人工智能的前生、今世與未來[J]. 軟件, 2018, 39(2): 223-226.
[2] 梁子鑫. 探討新時代背景下新興技術在人工智能中的應用[J]. 軟件, 2018, 39(7): 166-169.
[3] 侯桂波, 王喜偉, 于春玲, 佟雪松. 持續集成與自動化測試在國家電網電力營銷系統開發中的應用[J]. 電網技術, 2009, 33(20): 164-167.
[4] 王如迅. 基于SWTBot 技術的軟件自動化測試的研究與實現[J]. 軟件, 2016, 37(02): 121-128.
[5] 錢漢偉. GAT: Windows 平臺下 GUI 軟件自動化測試框架研究[J]. 軟件, 2018, 39(3): 72-76.
[6] 李沫. 視覺檢測系統在汽車儀表自動化測試方面的應用[J]. 軟件, 2018, 39(5): 126-128.
[7] 侯貴洋, 趙桂杰, 王璐瑤. 草莓采摘機器人圖像識別系統研究[J]. 軟件, 2018, 39(6): 184-188.
[8] 趙力衡. 基于決策樹的手寫數字識別的應用研究[J]. 軟件, 2018, 39(3): 90-94.
[9] Imagination Tech. 圖像識別的原理、過程、應用前景, 精華篇![OL]. (2017-12-16)[2018-11-12]. https://www.sohu. com/a/210831666_468626.
[10] 機器之心. 6大最流行、最有用的自然語言處理庫對比[OL]. (2018-08-05)[2018-11-12]. https://36kr.com/p/5146684.html.
[11] 劉建平, Pinard. 決策樹算法原理[OL]. (2016-11-10). [2018- 11-12]. https://www.cnblogs.com/pinard/p/6050306.html.
AI Combined with Automation Testing and Its Future Application in Smart Grid
GUO Jian, WANG Yong
(State Grid huitong jincai (Beijing) information technology co., LTD, Beijing, 10053, China)
AI (Artificial Intelligent) is one of the hottest technology in many industries nowadays, and automation testing is being used in software development life-cycle and become more and more important, but how to combine both of them and implement them in reality systems’ development is still blue ocean. This article aims to narrate the best practise of 3 points of AI technology (OCR, NLP and Decision Tree) in automation testing in smart grid systems.
AI (Artificial Intelligent); Automation testing; Smart grid
TP393. 06
A
10.3969/j.issn.1003-6970.2018.11.047
郭健(1980-),男,測試總監,多年從事自動化測試以及測試管理工作;王勇(1982-),男,研究方向:互聯網+電力營銷服務、互聯網技術。
郭健,王勇. 人工智能結合自動化測試在智能電網系統中的未來應用[J]. 軟件,2018,39(11):224-229