左 闊,李 寧,田英愛,侯 霞
1.北京信息科技大學 網絡文化與數字文化傳播重點實驗室,北京100101
2.北京信息科技大學 計算機學院,北京100101
流式文檔主要描述文檔的邏輯內容,同時支持編輯和瀏覽[1]。流式文檔最終的排版效果是借助排版引擎對文檔內容進行灌排生成的,而不同廠商對排版格式的理解和算法精度的設定存在差異,導致同一流式文檔在不同辦公軟件中呈現(xiàn)的排版效果并不完全一致。在辦公軟件的開發(fā)和測試過程中,分析并指出流式文檔的排版效果在何種程度上存在差異,對于辦公軟件標準符合性和兼容性測試,以及提高辦公軟件的質量具有重要意義。
在文檔處理領域,兼容性測試指文檔處理軟件在其他軟硬件環(huán)境中的兼容能力,以及一種文檔格式在不同的軟硬件環(huán)境中的一致性,標準符合性測試主要是檢查被測產品能否滿足標準的要求[1]。由于流式文檔格式復雜,且排版元素數量較多,一個辦公軟件格式規(guī)范中含有的排版格式功能點多達上千個。目前還沒有成熟的可用于排版效果自動化測試的測試方法,測試工作主要通過人工測試完成。
在人工測試中,測試人員主要從文檔的顯現(xiàn)效果上對文檔的排版元素類型及其排版格式進行分析,這種方法不僅費時費力,對于一些細小的排版差異或者排版元素類型也很難給出準確的測試結果。此外,在現(xiàn)有測試方法中,所有排版格式功能點的重要程度是一致的,未能考慮排版格式功能點使用頻度的差異。顯然,如果一款辦公軟件可以很好地支持大部分不常用的排版功能,而不能很好地支持個別常用的排版功能,那么從實用性的角度來說,這個辦公軟件的符合性和兼容性并不好。因此,如何針對流式文檔本身特點,設計并實現(xiàn)一種客觀、準確的流式文檔排版效果自動化測試方法變得尤為重要,本文試圖在這方面進行研究。
目前尚未見到與本文相同的研究內容,但是仍有一些相關的成果可以借鑒。例如,網頁中也存在布局或排版的問題,并且網頁信息的存儲方式與流式文檔相似。因此,與網頁布局相關的自動化測試[2-3]研究可為本文提供參考。
在HTML頁面分析中,很多方法都是通過分析DOM結構實現(xiàn)的。文獻[4]提出了一種針對HTML期刊文章內容提取的版面分析算法,首先生成DOM樹,然后根據標簽內容和結構對網頁進行分割,識別各部分段落內容。文獻[5-7]通過比較HTML DOM結構來查找HTML元素的差異,但這些方法無法發(fā)現(xiàn)顯現(xiàn)效果上的實際布局差異。
此外,還有一些方法是借助圖像分析實現(xiàn)的。文獻[8]將不同瀏覽器中呈現(xiàn)的測試網頁的圖像進行比較,以查找網頁布局的不一致。文獻[9]通過調用網頁的API來獲取HTML元素位置,并將測試圖像和標準圖像進行比對,找出存在差異的像素點及其位置,從而定位出現(xiàn)布局錯誤的HTML元素。
文獻[10]對集合內的元素按照出錯的可能性進行了排序,以查找最可能發(fā)生布局變化的元素。文獻[11]在文獻[10]研究的基礎上創(chuàng)建了貝葉斯概率模型,將布局差異通過概率模型計算,從而得到最有可能導致這種差異出現(xiàn)的原因。
綜上,在HTML 布局分析中,現(xiàn)有方法只對發(fā)生布局變化的元素進行了定位,并未給出HTML元素的布局變化程度,對于實現(xiàn)標準符合性和兼容性測試還是不夠的。為彌補以往方法的不足,本文面向XML 的流式文檔,提出了一種排版效果自動化測試方法,以實現(xiàn)對文檔格式標準符合性和兼容性的自動化測試,技術路線如圖1所示。
圖1 總體技術路線
針對文檔格式標準符合性和兼容性的測試需求,借鑒相關成果的研究方法,排版效果自動化測試將通過圖像分析來實現(xiàn),主要包括排版效果分析和排版效果評價兩部分。其中,排版效果分析的研究目標是實現(xiàn)排版元素類型識別及其排版格式分析,排版效果評價的研究目標是針對上述分析結果給出客觀、準確、量化的評價結果,為最終的測試結果提供評價依據。因此,本文的關鍵技術包括:(1)基于流式文檔特點實現(xiàn)版面對象到排版元素的逆向關聯(lián)分析,確定排版元素類型及其所在區(qū)域。(2)結合圖像特征對排版元素進行排版格式分析。(3)結合統(tǒng)計方法和層次分析法構建排版效果評價模型。
排版效果分析的首要任務是從圖像中識別出版面對象類型,并將其與流式文檔中的排版元素對應,即實現(xiàn)版面對象與排版元素的關聯(lián)。因為一般的渲染過程是將排版元素映射到版面圖像中,而自動化分析過程是從圖像角度對版面對象類型進行分析,與渲染過程相反。因此,實現(xiàn)版面對象到排版元素逆向關聯(lián)分析的最終目的是完成流式文檔排版元素類型的識別。為方便表述,首先進行如下定義:
集合O={o1,o2,…,on} 表示待測圖像的版面對象集合。
R 表示待測圖像的版面區(qū)域,將R 劃分成一組非空子區(qū)域{R1,R2,…,Rn} ,使(i ≠j),Ri(i=1,2,…,n)表示oi(oi∈O,i=1,2,…,n)所在區(qū)域。
集合E={e1,e2,…,en}表示待測文檔的排版元素集合。
A 表示待測文檔的頁面區(qū)域,將A 劃分成一組非 空子區(qū)域{A1,A2,…,An} ,使(i ≠j),Ai(i=1,2,…,n)表示ei(ei∈E,i=1,2,…,n)所在區(qū)域。
版面對象到排版元素的逆向關聯(lián)可以定義為:如果區(qū)域Ri中有且僅有一個版面對象oi,且區(qū)域Ai中有且僅有一個排版元素ei,其中Ai與Ri存在一一映射的關系,則版面對象oi與排版元素ei存在關聯(lián)關系。
因此,為了分析關聯(lián)關系,需要將版面區(qū)域劃分得足夠小,使其與排版元素有一一對應的關系。
目前可參考的版面區(qū)域分割方法主要有三種:(1)自頂向下法,其主要思想是不斷將版面劃分成更小的部分[12]。(2)自底向上法,其主要思想是將較小的子區(qū)域進行合并,使其逐漸增大[13-17]。(3)混合型方法,其主要思想是將自頂向下法和自頂向上法兩種方法進行結合,充分發(fā)揮兩者的優(yōu)勢,使系統(tǒng)進行版面分析時更加準確、快速[18]。但是,版面分割方法多數都是基于連通區(qū)域實現(xiàn)的,而流式文檔中段落的間隔區(qū)域大小基本相同,無法基于連通區(qū)域進行劃分。因此,在流式文檔版面對象的區(qū)域劃分中,現(xiàn)有版面分割方法并不完全適用。
為避免版面分割方法的缺陷,本文借助流式文檔可編輯這一特性設計了幾種關聯(lián)方法,如表1所示。
通過分析發(fā)現(xiàn),為被測元素增加顏色標識不會影響文檔中的排版元素個數,對版面效果影響較少。因此,本文設計了一種自動化的文檔元素顏色標注方法,用于建立版面對象與排版元素的逆向關聯(lián)關系,具體實現(xiàn)過程如下:
記存儲流式文檔排版元素信息的XML 文件為F,根據F 的元素標簽可以得到文檔元素集合E={e1,e2,…,en}。
記集合E 中的元素類型集合C ,按照排版元素類型所對應的標記顏色,依次修改文件F 中排版元素所對應的顏色值:ei.color=ci.color ,經過顏色標記后的文檔記為F′。
設D 為經過顏色標記的流式文檔,P 為D 生成的PDF文檔,I 為P 打印生成的待測圖像。打印圖像的獲取過程可表示為:F′→D →P →I 。
通過顏色標識可知,版面對象oi(oi∈O)的顏色值為color(oi),其所在區(qū)域為Roi。因此,根據排版元素ei所對應的標記顏色值color(ei),即可將待測圖像中版面對象oi與待測文檔中排版元素的元素ei(ei∈E)對應,即:color(ei)==color(oi)?class(ei)==class(oi)?R(ei)==R(oi)其中,R(ei)表示排版元素ei所在區(qū)域,class(ei)和class(oi)分別表示ei和oi的類型。
這種方法雖然能夠準確地識別出排版元素類型并且劃分出元素所在區(qū)域,但在測試過程中需要解決待測圖像與原始圖像發(fā)生色彩沖突的問題。針對這一問題,本文為每種排版元素設定多種備選顏色,機器將首先選擇原圖中未出現(xiàn)過的顏色作為標記顏色,從而避免了待測圖像與原圖像發(fā)生色彩沖突。
1.1 節(jié)中通過分析版面對象與排版元素的關聯(lián)關系,實現(xiàn)了排版元素的定位。排版效果分析的第二步是實現(xiàn)排版元素的排版格式分析,本節(jié)將對其分析方法進行討論。
排版格式分析主要是從圖像上對其功能點的屬性值進行計算,判斷圖像上的測量值與預期值是否一致,從而實現(xiàn)對排版效果的分析。由于排版格式功能點數量較多,本文僅列舉幾種常用功能點的測量內容及其計算方法,具體如下:
(1)字號
字號的測量值為當前段落中最大的文字高度。
對當前段落中的每行文字分別做水平方向投影,每行文字的投影寬度記為pi(i ∈1,2,…,n),最終得到當前段落的投影寬度集合P={p1,p2,…,pn},文字高度H的計算方法如公式(1)所示:
(2)行距
行距的測量值為當前段落中相鄰兩行文字底部間距離的最大值。
記當前段落每行文字結束位置的縱坐標集合為Y={y1,y2,…,yn},行距D 的計算方法如公式(2)所示:
(3)首行縮進
首行縮進的測量值為當前段落的第一行文字起始橫坐標與第二行文字起始橫坐標的差值。
對前兩行文字分別做垂直投影,投影的起始橫坐標分別記為x1、x2,首行縮進F 的計算方法如公式(3)所示:
(4)對齊方式
對齊方式的判斷內容包括左對齊、居中對齊、右對齊、兩端對齊,以及分散對齊。
記圖像寬度為w,對當前段落中的每行文字分別做垂直方向投影,每行文字的起始橫坐標記為si(i ∈1,2,…,n),結束橫坐標記為ei(i ∈1,2,…,n),最終得到起始橫坐標集合S={s1,s2,…,sn},結束橫坐標集合E={e1,e2,…,en}。記第一行中相鄰兩文字的起始橫坐標之差記為xi,最終得到集合X={x1,x2,…,xn-1}。按照公式(4)至公式(8)的順序依次進行判斷,如果滿足當前公式的成立條件,即為當前公式所對應的對齊方式。
通過版面對象到排版元素的逆向關聯(lián)分析以及排版效果分析,可以從圖像上進行排版元素類型的識別,并計算出各排版元素的實測屬性值,為后續(xù)排版效果評價提供基礎。
排版效果測試的最終目標是得到被測文檔排版效果與預期效果的一致性程度,而排版效果分析結果只是得到了被測文檔的排版元素類型及其排版格式信息,量化的測試結果則需要通過排版效果評價模型分析得到。構建排版效果評價模型的第一步是為排版格式功能點設定合理的權重,文獻[19]根據用戶需求和實現(xiàn)難易程度等,對功能點進行了三個級別的劃分,而在實際應用中,同一級別功能點的使用頻度并不完全一致。
為確保每個功能點被賦予的權重更加客觀準確,本文計算了每個格式功能點的使用頻度。對100篇OOXML文檔進行了解析,對打包文件內word目錄下的document.xml文件的功能點路徑進行了提取和統(tǒng)計,并采用層次分析法對用到的功能點的權重進行設定。表2 是對句屬性中部分功能點使用情況的統(tǒng)計。
表2 句屬性中部分功能點的使用情況
通過分析發(fā)現(xiàn),文獻[19]對功能點的級別劃分較為寬泛,其中定義的一些基礎級功能點在實際應用中的使用頻率并不高。從表2 可以看出,在統(tǒng)計的100 篇文檔中,基礎級功能點下劃線的使用次數僅為4 次,遠低于字體、字號的使用次數。因此,本文認為采用層次分析法確定的權重更加客觀合理。
由于統(tǒng)計文檔中段落、表格和文本框的個數不平衡,本文將對三種排版元素功能點的權重分別進行分析,具體功能點及其所屬排版元素類別如表3所示。
下面對權重的計算方法進行說明:
根據功能點的使用頻率,構建各排版元素功能點的判斷矩陣W,W 中元素wij為功能點i 相對于功能點j的重要程度,數值越大重要程度越高。顯然,wji=經統(tǒng)計,段落功能點權重的判斷矩陣Wp,表格功能點權重的判斷矩陣Wt,以及文本框功能點權重的判斷矩陣Wb,分別如公式(9)、(10)和(11)所示:
表3 進行權重分析的排版元素功能點
分別求出公式(9)、(10)、(11)中判斷矩陣的最大特征值λmax,并帶入公式(12)求得一致性指標CI 。
根據公式(13)求得矩陣一致性比例CR。
其中隨機一致性指標RI 所對應的取值如表4所示。
表4 隨機一致性指標表
經計算,公式(9)、(10)、(11)所對應的矩陣一致性比例CR 分別為0.094、0.017和0.063,均小于0.01,因此三個判斷矩陣均通過一致性檢驗,判斷構造矩陣合理,可繼續(xù)進行權重求解。
對公式(9)、(10)、(11)中的判斷矩陣進行歸一化,然后采用算術平均法求得各個功能點的權重。其中,段落功能點的權重αT=(α1,α2,α3,α4,α5,α6,α7,α8,α9),表格功能點的權重βT=(β1,β2,β3,β4,β5),文本框功能點的權重γT=(γ1,γ2,γ3),最終得到各功能點的權重如表5所示。
表5 功能點權重對照表
本節(jié)將結合排版效果分析結果,以及評價指標權重,構建排版效果評價模型,針對流式文檔的實際排版效果與預期排版效果的一致性程度給出量化的評價結果,為最終的測試工作提供評價依據。下面討論排版效果評價模型的構建。
設E={e1,e2,…,en}為排版元素功能點的預期值集合,T={t1,t2,…,tn}為排版元素功能點的實際測量值集合,D={d1,d2,…,dn}為排版元素功能點的實際測量值與預期值的一致程度集合,n 為當前排版元素的功能點個數。功能點一致程度di(i=1,2,…,n)的度量方法如公式(14)所示,如果功能點測量值為非數值型數據,則1表示一致,0表示不一致。
排版效果的總體評價需要考慮功能點使用的頻度,按功能點的重要性加權進行評價。因此排版元素的排版效果評價模型如公式(15)所示:
其中,矩陣D 表示各功能點測試值與預期值的一致程度,矩陣W 表示D 中各功能點所對應的權重值,參見2.1節(jié)。
最終,求得整篇文檔中所有排版元素的平均排版效果評價得分P,如公式(16)所示:
其中,Ei為某一排版元素的排版效果評價值,n 為待測文檔中的排版元素個數和。
由于目前尚未見到可與本文的研究方法進行對比分析的相關成果,本文將通過實際案例說明本文提出方法的準確性及實用性。
圖2 為原始OOXML 文檔的預期排版效果,一般跟隨測試案例給出;圖3為從某個排版軟件得到的同樣文檔的排版效果,將之作為待測文檔。
圖2 預期文檔排版效果
圖3 待測文檔排版效果
應用本文方法,首先對待測文檔進行自動化顏色標記,以從圖像中確定排版元素類型。然后按照排版元素類型及其位置,進行排版格式分析以及排版效果評價,最終得到的結果如表6所示。
從圖像中可以看出,圖3 中段落2 與段落1 的間距明顯小于圖2。另外,在格式轉換過程中,圖3 中段落3的首行縮進丟失。對比表6 中的分析結果也可以得出這些結論,但是人工分析并不能從圖像中看出這些差異的具體值。此外,從表6中可以看出,段落1中“字號”的實際結果和預期結果的差值僅為1個像素點,這些差異在人工測試中是很難得到的。
通過2.2 節(jié)構造的排版效果評價模型,對文檔的排版效果進行定量分析。從表6中的評價結果可以看出,段落2只有段前距與預期結果存在差異,因此整體評分較高;而段落3 中丟失了首行縮進這一格式信息,且段后距和右縮進也與實際值存在差異,因此評分較低。
上述結果表明,相比人工測試,本文提出的評價方法自動化程度高,且更加準確。
表6 排版效果評價結果
本文面向XML的流式文檔提出了一種排版效果自動化測試方法,包括排版效果分析和排版效果評價兩部分。在排版效果分析階段,設計了一種逆向關聯(lián)方法從圖像中定位并識別出排版元素類型,并采用圖像分析方法測得不同元素的實際排版結果。在排版效果評價階段,采用層次分析法根據功能點的使用頻度確定功能點權重,構建了排版效果評價模型,以此給出文檔排版效果的量化評價結果,從而完成排版效果的自動化測試工作。
本文提出的方法與傳統(tǒng)的人工測試方法相比,提高了自動化程度和準確率,可以大幅提升各類文檔格式的標準符合性和兼容性測試效率。本文方法還可以輔助定位出現(xiàn)差異的元素和屬性,便于缺陷追蹤和系統(tǒng)調試,提高文檔處理軟件的質量。此外,本文得到的量化評價結果還可以為文檔格式標準制定以及文檔互操作性度量提供參考依據,因此具有廣闊的應用前景。
目前,本文主要對流式文檔中的段落、列表、表格和文本框四類排版元素進行了排版效果分析。今后可以進一步增加圖像、公式等排版元素的排版效果分析,使測試內容更加全面。