分析國際化軟件測試技術(shù)的應(yīng)用與實現(xiàn)
出處:張愛玲 發(fā)布于:2011-08-29 11:22:34
軟件測試是軟件開發(fā)過程中的一個重要組成部分,是貫穿整個軟件開發(fā)生命周期、對軟件產(chǎn)品(包括階段性產(chǎn)品)進行驗證和確認的活動過程,其目的是盡快盡早地發(fā)現(xiàn)在軟件產(chǎn)品中所存在的各種問題——與用戶需求、預(yù)先定義的不一致性。
為了滿足國際化軟件世界范圍內(nèi)發(fā)布的需要,軟件的國際化設(shè)計和本地化工程處理是兩個重要步驟。作為軟件質(zhì)量保證的國際化軟件測試過程包含一系列相互關(guān)聯(lián)的測試技術(shù)和流程。軟件的國際化測試是重要的測試階段,必須在本地化測試之前進行。國際化軟件的測試目的是判斷軟件的國際化設(shè)計程度,確定軟件是否支持可能的區(qū)域,本地化是否容易。
軟件本地化測試的對象是本地化的軟件,需要在本地化的操作系統(tǒng)上進行。本地化測試過程中,需要同時運行源程序軟件和本地化軟件,以源程序軟件結(jié)果作為本地化軟件的主要參考。
1 測試工具國際化弱點
測試工具在如今的測試過程中扮演著重要角色。盡管自動化測試無法完全取代手動測試,但許多測試領(lǐng)域都因自動化測試的引入而獲益匪淺。
測試工具通過對原始應(yīng)用程序和本地化后的應(yīng)用程序?qū)φ者\行自動化測試,可以驗證應(yīng)用程序的本地化是否對功能造成破壞。此外,為確保產(chǎn)品已化,在測試過程中需要采用更廣泛的測試輸入范圍以及更多樣的環(huán)境設(shè)置。自動化操作可更輕松地應(yīng)對測試方案數(shù)量上的增加,并可以有效地跟蹤化測試的結(jié)果。
雖然自動化測試過程是在化環(huán)境下針對新產(chǎn)品運行一些可信賴的舊有測試工具,但如果被測應(yīng)用程序已被翻譯,其他因素也可能導(dǎo)致測試結(jié)果不正確,例如工具驗證日期時認定日期格式是固定的。而在化的應(yīng)用程序中,日期格式會隨著區(qū)域和地區(qū)的不同而不同,這樣就會造成自動化測試工具不起作用。
為避免上述問題的發(fā)生,測試工具的開發(fā)人員必須與化軟件的開發(fā)人員遵循相同的規(guī)則。測試工具必須是化的,必須動態(tài)調(diào)整其區(qū)域設(shè)置,并且應(yīng)該能夠處理國際化文本數(shù)據(jù)。此外,如果需要通過名稱來訪問可本地化對象,則測試工具必須是可本地化的。
目前化測試的問題主要有:(1)在針對國際化測試技術(shù)和策略中實現(xiàn)自動化測試腳本的復(fù)用問題。(2)測試環(huán)境的語言及字符集設(shè)置的選擇。(3)多種語言顯示的測試問題,軟件的翻譯質(zhì)量包括翻譯的準確性、完整性、一致性,以及特定區(qū)域市場的文化、傳統(tǒng)、習俗等內(nèi)容。如果要實現(xiàn)對翻譯的檢查,需要根據(jù)所測語言而準備相應(yīng)的翻譯文件進行對比。當測試多種語言時,會增加測試人員的負擔。(4)多語言和字符集的測試數(shù)據(jù)的自動生成,為了測試軟件對接收、處理和發(fā)送不同字符集的能力,需要實現(xiàn)針對不同語言和字符集數(shù)據(jù)的自動產(chǎn)生。
總之,伴隨對軟件測試的日益重視以及自動化測試的逐步引進,各種自動化測試工具相繼推出。但是各種自動化測試工具的可應(yīng)用性程度和支持側(cè)重有所不同,并且廣泛缺乏對國際化測試的支持。
2 測試工具國際化的擴展
針對以上論述的國際化軟件測試的技術(shù)實現(xiàn)難點,通過對Selenium RC-java工具進行分析用以實現(xiàn)其對國際化支持的擴展。
Selenium是由ThoughtWorks團隊開發(fā)的Web應(yīng)用程序自動化測試的工具,適合進行功能測試、驗收測試。Selenium RC基本測試流程如圖1所示,Selenium Server與瀏覽器使用AJAX(XmlHttpRequeST)直接通信,可以使用簡單的HTTP GET/POST請求直接向服務(wù)器發(fā)送命令,即可以使用任何可以發(fā)出HTTP請求的編程語言在瀏覽器中自動執(zhí)行Selenium測試。

Selenium RC和大多數(shù)的自動化測試工具一樣,也在很多方面缺乏對國際化測試的支持。如在沒有指定瀏覽器參數(shù)文件的情況下,Selenium Server會啟動一個系統(tǒng)默認設(shè)置的瀏覽器執(zhí)行測試,默認設(shè)置語言為當前瀏覽器版本語言;操作函數(shù)直接使用大量頁面元素作為參數(shù),對這類數(shù)據(jù)取值存在依賴,使得Selenium測試變得脆弱且需要針對測試腳本中同一頁面元素文本屬性值進行重復(fù)修改;不能提供多語言和字符集的測試數(shù)據(jù)等。
針對Selenium工具的不足,通過對測試腳本結(jié)構(gòu)的設(shè)計,以及在Selenium RC封裝的Java工具包中添加對環(huán)境設(shè)置的選擇和參數(shù)文件的處理等改進,實現(xiàn)針對國際化測試的擴展任務(wù)。
2.1 將特定語言的測試元素獨立于測試腳本代碼,支持多語言測試的腳本復(fù)用
為了達到在多國語言測試時復(fù)用整套腳本的目的,將所有取決于特定語言文化的測試元素獨立于測試腳本代碼存儲在參數(shù)文件內(nèi)。
?。?)存放固定參數(shù)的參數(shù)文件。在這類文件中,存放針對任何語言版本測試過程中均不需改變的參數(shù)數(shù)據(jù)。這些固定參數(shù)可以是測試用例運行過程中輸入的字符串,也可以是界面元素的屬性值,例如測試機IP地址、界面上按鈕的ID值、界面上表格的xpath值等。
?。?)根據(jù)測試語言和字符集,存放輸入的隨機數(shù)據(jù)的參數(shù)文件。根據(jù)測試語言和字符集要求,分析涉及直接或間接處理字符串輸入/輸出的測試,以測試軟件對處理不同語言和字符集的能力。例如,在執(zhí)行新建用戶這個測試用例時,需要輸入一個新建用戶的用戶名。在設(shè)計中,這個用戶名可以為任意國際輸入類型的數(shù)據(jù)。為了測試軟件對語言為英文、字符編碼為ISO-8859-1的輸入數(shù)據(jù)Username的處理能力,將該輸入數(shù)據(jù)作為參數(shù)存儲在參數(shù)文件進行測試。
?。?)根據(jù)測試語言,存放界面元素的文本屬性值的參數(shù)文件。在Selenium工具包中,操作函數(shù)直接使用界面元素的屬性值作為參數(shù),而這些屬性值的類型包括name、ID、xpath、txt等等。當測試的目標語言發(fā)生改變時,界面元素的文本屬性值也根據(jù)目標語言對應(yīng)的翻譯文本而發(fā)生改變。例如,在測試英文版本軟件時,需要點擊一個命名為Apply的按鈕,將其名字作為參數(shù)存儲在參數(shù)文件中。
2.2 動態(tài)選擇語言和字符集,支持多種語言測試過程
以某具體Web產(chǎn)品的國際化測試項目為例,測試項目全過程是通過使用ant這個構(gòu)建部署工具作為流程腳本引擎,自動調(diào)用程序而完成。整個過程可以全部自動化,測試人員只需輸入簡單的配置命令。當然在每日構(gòu)建的基礎(chǔ)上,還可以不用輸入命令而通過定時任務(wù)的設(shè)定實現(xiàn)每天自動執(zhí)行回歸測試。
滿足這種國際化回歸測試的要求,首要條件就是有正確的初始化測試環(huán)境——需要添加對測試環(huán)境語言和字符集的設(shè)置。這種語言及字符集設(shè)置的選擇,不僅包括對當前所測軟件語言版本的選擇,還需要包括當前操作系統(tǒng)等環(huán)境語言與字符集設(shè)置的選擇。
在沒有指定瀏覽器參數(shù)文件的情況下,Selenium Server只會啟動一個系統(tǒng)默認設(shè)置的瀏覽器執(zhí)行測試,默認設(shè)置語言為當前瀏覽器版本語言。然后,根據(jù)測試要求的瀏覽器語言和字符集設(shè)置,在Firefox的參數(shù)文件prefs.js中添加為用戶語言項;,在啟動Selenium Server時,添加“firefoxProfileTemplate”選項并指向已修改的Firefox的參數(shù)文件目錄。
客戶端操作系統(tǒng)(Redhat4.0)的語言和字符集,可以通過修改文件/etc/sysconfig/i18n或者通過設(shè)置LC_ALL 和LANG 2個參數(shù)實現(xiàn)。
上述方法也可以擴展到多個語言和字符集環(huán)境的設(shè)置的情況。其中,串行執(zhí)行是指依次正確初始化測試環(huán)境,循環(huán)執(zhí)行測試流程,而并行執(zhí)行是通過Socket通信將信息傳遞到多臺目標測試機,并行初始化測試環(huán)境,執(zhí)行全部測試流程。
2.3 通過對XLIFF格式的翻譯文件的查找,實現(xiàn)測試頁面上顯示的翻譯
本項目中的翻譯文件采取XLIFF文件格式。XLIFF是一種XML應(yīng)用,每個文本片段保存在一個翻譯單元中(<trans-unit>)。
2.4 利用正則表達式,處理包含特殊字符的翻譯單元
在上述自動化的參數(shù)文件替換過程中,需要對大量的XML格式的翻譯文本數(shù)據(jù)進行查找。但是,有一些特殊字符在寫入到XML文件時,會被實體引用所替換。所以,目標界面上顯示的字符串,可能出現(xiàn)與寫入在XLIFF翻譯文件中存儲的翻譯字符串不一致的現(xiàn)象。
針對上述這類翻譯字符串與顯示字符串不一致的情況,可以通過正則表達式解決。例如:軟件界面上存在一個按鈕,英文版本的按鈕顯示的字符串為“About(A)”,而簡體中文版本的按鈕顯示的字符串為“關(guān)于(A)”。然而,寫入在 XLIFF文件時,英文對應(yīng)的翻譯字符串應(yīng)為“About(&;A)”,簡體中文對應(yīng)的翻譯字符串應(yīng)為“關(guān)于(&;A)”。然后,將查找結(jié)果“關(guān)于(&;A)”處理為“關(guān)于*”,再進行界面翻譯測試。
2.5 采用簡單替換方式,自動生成指定語言字符集的測試數(shù)據(jù)
在執(zhí)行國際化測試時,需要測試軟件對處理不同語言和字符集的能力。這種能力,可以通過簡單的預(yù)處理進行測試。具體步驟如下:(1)需要維護一個包含所有待測語言和字符集的字符庫;(2)根據(jù)參數(shù)文件中參數(shù)的字節(jié)數(shù),從字符庫中抽取制定測試語言和字符集的字符進行替換。
為了實現(xiàn)自動生成指定語言字符集的測試數(shù)據(jù),上述方法相對簡單易行。但是伴隨測試語言和字符集范圍的擴展,字符庫需要覆蓋的語言和字符集也需要相應(yīng)增加,這將帶來巨大的維護工作量。另外,如果需要字符庫覆蓋較全面的東亞語言字符,也將帶來一定的工作量。
上述擴展方案針對Web技術(shù)的大型國際化應(yīng)用軟件的測試,主要使用Selenium RC-java工具開發(fā)測試腳本。項目要求同時實現(xiàn)在Linux+Firefox3.0環(huán)境下,對軟件的九種語言版本進行國際化測試。
目前,軟件測試自動化的研究領(lǐng)域主要集中在軟件測試流程的自動化管理以及動態(tài)測試的自動化(如單元測試、功能測試以及性能測試方面)。在這兩個領(lǐng)域,與手工測試相比,測試自動化的優(yōu)勢是明顯的。首先自動化測試可以提高測試效率,使測試人員更加專注于新的測試模塊的建立和開發(fā),從而提高測試覆蓋率;其次,自動化測試更便于測試資產(chǎn)的數(shù)字化管理,使得測試資產(chǎn)在整個測試生命周期內(nèi)可以得到復(fù)用,這個特點在功能測試和回歸測試中尤其具有意義;此外,測試流程自動化管理可以使機構(gòu)的測試活動開展更加過程化,這很符合CMMI過程改進的思想。根據(jù)OppenheimerFunds的調(diào)查,在2001年前后的3年中,范圍內(nèi)由于采用了測試自動化手段所實現(xiàn)的投資回報率高達1500%。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52









