亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        國際化軟件的硬編碼和過度翻譯問題自動測試研究①

        2017-09-15 07:19:53劉雅君李愛民
        關(guān)鍵詞:字符串過度頁面

        劉雅君,李愛民,劉 晟,袁 婷

        (西安理工大學(xué),西安 710043)

        國際化軟件的硬編碼和過度翻譯問題自動測試研究①

        劉雅君,李愛民,劉 晟,袁 婷

        (西安理工大學(xué),西安 710043)

        伴隨軟件國際化開發(fā)技術(shù)不斷發(fā)展的同時,國際化測試的研究起更多重視.本文針對國際化軟件中的硬編碼和過度翻譯兩個問題,研究并實(shí)現(xiàn)了自動化測試方案.通過分析硬編碼和過度翻譯問題的概念、分類和測試方法現(xiàn)狀,本文總結(jié)現(xiàn)有人工測試的不足和Struts2國際化的技術(shù)特點(diǎn),最后結(jié)合被測項后的實(shí)際情況,詳細(xì)闡述了自動化測試方案.該方案已經(jīng)應(yīng)用于某公司的Web產(chǎn)品的國際化測試中,實(shí)踐驗(yàn)證了對硬編碼和過度翻譯問題的自動測試的支持,并取得了良好的效果.

        軟件國際化測試;硬編碼;過度翻譯;自動化測試

        1 引言

        早期的軟件產(chǎn)品一般只能支持單一的語言,且以英語為主要語言.然而,伴隨軟件技術(shù)的推廣和普遍應(yīng)用,技術(shù)人員也開始積極考慮處理非英語語言的支持問題.因此,軟件的國際化和本地化逐步起重視.

        在軟件開發(fā)中,國際化與本地化是指調(diào)整軟件,使之能適用于不同的語言及地區(qū)[1].其中,國際化(Internationalization)是指將軟件與特定語言及地區(qū)解耦的過程,即軟件設(shè)計和文檔開發(fā)過程中,使得功能和代碼設(shè)計能處理多種語言和文化習(xí)俗,能夠在創(chuàng)建不同語言版本時,不需要重新設(shè)計源程序代碼的軟件工程方法.本地化(Localization)則是指當(dāng)移植軟件時,使之與特定語言及地區(qū)耦合的過程.國際化意味著產(chǎn)品有適用于任何地方的“潛力”;本地化則是為了更適合于“特定”地方的使用.對一項軟件產(chǎn)品來說,國際化只需做一次,但本地化則要針對不同的區(qū)域各做一次.這兩者之間是互補(bǔ)的,并且兩者合起來才能讓一個系統(tǒng)適用于各種語言和地區(qū)[2].

        針對國際化軟件開發(fā),國際化測試的后的是測試軟件的國際化支持能力,發(fā)現(xiàn)國際化軟件的潛在問題,保證軟件在世界不同區(qū)域中都能正常運(yùn)行.國際化測試工作一般包括四個級別[3]:

        ①第一級國際化測試

        測試英文版本的產(chǎn)品是否可以在非英語語言系統(tǒng)上正常運(yùn)行.

        ②第二級國際化測試

        測試軟件在任何區(qū)域設(shè)置中是否能正常運(yùn)行,并且是否支持本地化的字符輸入,輸出和顯示;是否能按照本地化的習(xí)慣顯示姓名、日期、時間、貨幣等數(shù)據(jù)等.

        ③第三級國際化測試

        測試測試軟件是否不需要重新設(shè)計或修改代碼方便地進(jìn)行本地化.

        ④第四級國際化測試

        測試是否支持雙向識別能力,主要指對于阿拉伯語等雙向語言的支持問題.

        測試人員會根據(jù)項后資源和市場情況要求決定具體到某個級別的測試.總之,伴隨全球化的趨勢,軟件的國際化測試日益重要,這將為軟件本地化、軟件維護(hù)、升級帶來了極大的好處.

        2 硬編碼問題和過度翻譯問題的研究

        軟件國際化的測試通常在本地化開始前進(jìn)行,以識別潛在的不支持軟件國際化特性的問題.理想的情況是,國際化測試在英文版本完成時就已結(jié)束.對于國際化軟件,硬編碼和過度翻譯問題是不可忽視的重要問題.

        2.1 硬編碼問題

        硬編碼問題是指將需要翻譯的字符串沒有提取到資源文件中.早期在不考慮國際化編程的情況下,顯示在網(wǎng)頁頁面的的數(shù)據(jù)大部分都是硬編碼在頁面中的.例如,一個頁面的標(biāo)題可能采用如下的編碼方式:

        其中“Demo”就是以硬編碼方式存在的.正常的國際化下,應(yīng)該將這樣的字符串提取到資源文件中.根據(jù)本地瀏覽器區(qū)域設(shè)置,通過國際化程序框架調(diào)用對應(yīng)字符串顯示.類似于“Demo”這樣的需要翻譯的字符串有很多,一般分為兩類,詳述如下:

        ①第一類硬編碼問題

        第一類硬編碼問題是指不影響程序功能,只影響用戶界面顯示的硬編碼問題,這類問題比較常見.硬編碼的字符串,主要指的用戶界面上顯示的文字,例如標(biāo)簽名,按鈕名稱,提示語等等.這些文字本沒有從程序中分離,確實(shí)不利于以后軟件本地化,但是僅涉及前節(jié)所述的第三級國際化測試工作.因此,這類缺陷等級不高,代碼修改較易,只需將這些遺漏的字符串將重新提取到資源文件,請翻譯專家翻譯.

        值得注意的是,在這一類硬編碼的問題,不僅要測試頁面文件,而且要注意測試控制層代碼.例如在JSP項后中,Action類中方法也可能存在這類硬編碼問題.

        ②第二類硬編碼問題

        第二類硬編碼問題指的是會影響程序功能的硬編碼問題.這類問題一般級別較高,涉及前節(jié)所述的第一級國際化測試工作.這類問題數(shù)量較少,比較隱蔽,主要涉及系統(tǒng)變量被硬編碼等情況.例如在Windows系統(tǒng)中,軟件的默認(rèn)安裝路徑“C:Program Files”.微軟在做本地化操作系統(tǒng)時,這些字符串在部分語言操作系統(tǒng)中進(jìn)行了翻譯.因此,如果這些字符串硬編碼后,將起相關(guān)系統(tǒng)功能的失常.

        2.2 過度翻譯問題

        事物有兩面性,如果字符串分離不當(dāng),還會起另一類問題,稱為過度翻譯問題(Over translation),主要涉及第一級和第三級國際化測試工作.

        過度翻譯問題是指將一些不需要本地化的內(nèi)容提取到資源文件中,從而可能發(fā)用戶界面問題或軟件功能問題.例如,在頁面首頁提示語中包含時間數(shù)據(jù).如果不慎將這個時間和提示語中的其他字符一起提取到資源文件中,則這個時間將不能根據(jù)系統(tǒng)的區(qū)域設(shè)置來進(jìn)行變換.

        2.3 測試方法現(xiàn)狀及缺陷

        針對上述問題,主要仍然依靠人工測試完成.例如第一類硬編碼問題測試工作,一般使用偽本地化加人工瀏覽的方法完成.偽翻譯(Pseudo Translation)是軟件國際化測試的重要手段之一,它不是軟件真正本地化,而是在源語言軟件的基礎(chǔ)上,按照一定的規(guī)則,將需要本地化的文本使用本地化文字進(jìn)行替換,模擬本地化軟件的過程[4].這樣可以在進(jìn)行實(shí)際本地化處理之前,預(yù)覽和查看本地化的問題.

        具體操作主要是對資源文件進(jìn)行處理,給資源文件中的每一個字符串加多個“#”字符組成前綴和后綴.之后通過人工瀏覽界面,確認(rèn)運(yùn)行軟件是否出現(xiàn)的英文字符串.這些英文字符串很有可能是硬編碼缺陷.在測試過程中,要求測試人員對系統(tǒng)業(yè)務(wù)熟悉,確保不遺漏界面,對所有字符串認(rèn)真檢查.

        第二類硬編碼的測試依靠人工,對測試人員要求較高.因?yàn)檫@些缺陷不容易發(fā)現(xiàn),需要測試人員對系統(tǒng)業(yè)務(wù)熟悉程度高,有豐富的國際化測試經(jīng)驗(yàn).測試過程中,測試人員根據(jù)軟件功能確定需要重點(diǎn)關(guān)注系統(tǒng)變量,并且更換特定環(huán)境進(jìn)行測試.

        過度翻譯問題也是依靠人工測試.有經(jīng)驗(yàn)的國際化測試人員,在了解項后業(yè)務(wù)和熟悉代碼后,總結(jié)相關(guān)測試點(diǎn),進(jìn)行人工檢查.

        眾所周知,軟件自動化測試是軟件測試的一個非常重要的發(fā)展方向.重復(fù)且工作量大的人工測試工作,效率不高,容易讓人產(chǎn)生厭倦,從而容易出錯.自動化測試則能很好的解決這類問題.自動化測試能夠彌補(bǔ)手工測試的不足,提高測試精確度,并且大幅度提高效率.設(shè)計一種合理的自動化測試方案,可以減輕國際化測試工組強(qiáng)度,節(jié)省人力財力,從而降低軟件的測試成本.

        3 硬編碼和過度翻譯自動測試方案的研究和實(shí)現(xiàn)

        針對以上論述的硬編碼和過度翻譯測試的特征和其測試方法現(xiàn)狀,結(jié)合具體測試項后分析,設(shè)計自動化測試方案.本方案用Java語言實(shí)現(xiàn),通過靜態(tài)測試實(shí)現(xiàn)對硬編碼和過度翻譯兩個問題的測試.

        3.1 測試項目的國際化方案

        本測試項后是某公司的Web產(chǎn)品,主要使用Struts2框架國際化技術(shù).該框架是一個基于MVC設(shè)計模式的Web應(yīng)用框架,是Struts的下一代產(chǎn)品.它成功地結(jié)合了WebWork和Struts1.x兩種Web框架.在MVC設(shè)計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互.

        Struts 2國際化是建立在Java國際化的基礎(chǔ)之上.Java國際化的實(shí)現(xiàn)主要依靠“java.util.Locale”類和“java.util.ResourceBundle”抽象類.其中,Locale 類用來提供本地信息,主要包括語言、國家和地區(qū)等屬性,例如中國表示為.ResourceBundle類稱為資源包,包含了特定于語言環(huán)境的資源對象.Struts2框架對上述流程進(jìn)行了進(jìn)一步封裝,并且提供了靈活的資源包組織和加載方式.

        3.2 硬編碼和過度翻譯的自動測試的方案

        可疑的國際化測試點(diǎn)可能遍布軟件的各個方面,因此自動化測試的第一步需要對項后文件進(jìn)行遍歷.根據(jù)Struts2國際化的技術(shù)特點(diǎn),結(jié)合被測項后的實(shí)際情況,總結(jié)測試重點(diǎn)涉及頁面文件(文件后綴為Jsp)、校驗(yàn)器配置文件(文件命名規(guī)則為Action類名-validation.xml)、Action類文件(文件后綴為Java)和資源文件(文件后綴為Properties).

        本自動化測試方案使用Java語言實(shí)現(xiàn),具體流程如圖1所示.首先通過相應(yīng)類庫對上述文件進(jìn)行解析,提取文件中國際化敏感數(shù)據(jù)元素或方法.針對這些元素或方法,利用正則表達(dá)式進(jìn)行檢測,從而確定可疑的硬編碼和過度翻譯問題候選項.

        圖1 自動化測試方案總體框圖

        3.2.1 針對頁面文件的測試

        在頁面文件中,第一類硬編碼問題比較常見.Struts2框架的用戶界面標(biāo)簽是在很常見的Html標(biāo)簽上額外添加前綴小號“s:”,主要分為兩類:

        ①表單標(biāo)簽

        主要用于生成Html頁面的表單元素,以及普通表單元素的標(biāo)簽,對應(yīng)“s:label”,“s:submit”等.

        ②非表單標(biāo)簽

        主要用于生成頁面上的非表單區(qū)域等,對應(yīng)“s:text”,“s:div”等標(biāo)簽.

        正確的Strust2頁面國際化,主要是通過指定用戶界面標(biāo)簽的Name、Key或者Label等屬性進(jìn)行的,如:

        硬編碼的情況是:

        因此,在自動化測試時,查找頁面文件并解析標(biāo)簽是首要任務(wù).我們選取了Jsoup工具進(jìn)行解析.Jsoup是著名的第三方類庫,其主要應(yīng)用于解析Html文件,獲取用戶需要的數(shù)據(jù).它提供了一套非常完善的API接口規(guī)范,開發(fā)者可以通過DOM遍歷或者類似于JQuery的操作方法來取出和操作數(shù)據(jù).同時它還包含了一個支持最新Html5技術(shù)的解析器分支,能夠很好的降低解析的時間和內(nèi)存的占用.

        使用Jsoup解析頁面文件后,將分以下三類情況進(jìn)行檢查:

        ①測試頁面文件的純文本

        將頁面標(biāo)簽除去,檢查是否包含純文本.如果仍存在純文本,將與需要排除的字符串進(jìn)行比對.這些需要排除的字符串,由測試人員預(yù)先設(shè)定,如URL、IP地址、公司Logo等特殊字符串.如果不能對比成功,則認(rèn)為該字符串是硬編碼候選項并輸出在測試報告中.

        ②普通的Html標(biāo)簽的屬性和內(nèi)容檢查

        對普通的Html頁面元素的內(nèi)容和屬性值進(jìn)行利用正則表達(dá)式檢驗(yàn),例如Title標(biāo)記、Img的Alt屬性等.

        ③Struts2標(biāo)簽的屬性和內(nèi)容檢查

        如上述Struts2框架的用戶界面標(biāo)簽,不僅需要對Struts2標(biāo)簽的內(nèi)容利用正則表達(dá)式進(jìn)行檢驗(yàn),而且要檢查標(biāo)簽的Name、Key或者Label等屬性.

        當(dāng)然,在頁面文件中,也可能出現(xiàn)第二類硬編碼錯誤.這類錯誤的發(fā)現(xiàn),需要依賴通過預(yù)先設(shè)定國際化敏感的系統(tǒng)變量,將硬編碼候選項進(jìn)行自動對比完成.

        3.2.2 針對校驗(yàn)器配置文件的測試

        頁面上顯示的校驗(yàn)錯誤信息也需要國際化,主要涉及第一類硬編碼問題.Struts 2 針對編碼驗(yàn)證和驗(yàn)證框架都提供了國際化實(shí)現(xiàn),處理非常便捷.在本測試項后中,校驗(yàn)信息是通過校驗(yàn)器完成的.例如檢驗(yàn)密碼的長度不小于6個字符,正確國際化的實(shí)例為:

        其中Message元素的Key屬性,就是驗(yàn)證錯誤信息在資源文件中的鍵值.

        如果出現(xiàn)硬編碼,則會書寫為:

        因此,首要任務(wù)是搜索校驗(yàn)器配置文件和解析.這些文件是以“validation.xml”字符串為后綴的XML文件,他們的解析也是通過Jsoup工具完成的.Jsoup提供了強(qiáng)大的XML操作能力,高效又靈活.通過Select方法和Xpath,程序?qū)⒎祷匾粋€Message標(biāo)簽的Elements對象集合.從而,逐個檢查Message標(biāo)簽中是否缺少Key屬性,即可得到硬編碼候選項.

        3.2.3 針對 Action 類的測試

        Action類文件也可能存在硬編碼問題.與頁面文件相似,這些缺陷多半是第一類硬編碼問題,極個別是第二類硬編碼問題.

        針對這些以Java為后綴的Action類文件,主要采用普通文件讀取方式,進(jìn)行逐行測試.在Action類中,想要正確地進(jìn)行文本信息國際化,一般需要使用“getText(String key)”方法.這個函數(shù)將返回國際化資源文件中 Key 對應(yīng)的值.當(dāng)然,也有時通過 “getText(String key,String[] params)”實(shí)現(xiàn)占位符填充.

        因此,自動化測試的重點(diǎn)是檢驗(yàn)缺乏“getText”方法的字符串或輸出語句.這里的輸出,有涉及頁面的直接輸出,也有涉及業(yè)務(wù)的異常錯誤輸出.另外,第二類硬編碼問題的發(fā)現(xiàn),與頁面文件相同,與測試人員的預(yù)先設(shè)定相關(guān),不再贅述.

        3.2.4 針對資源文件的測試

        Struts2的國際化資源文件分為三種級別:①全局范圍資源文件.② 包范圍資源文件.③ Action 范圍資源文件.針對國際化資源文件的測試,三類文件均需考慮其中的過度翻譯問題.下面是一個日期信息過度翻譯的消息文本:

        demo1=今天是 2017-1-1

        正確的國際化方式,日期不需翻譯.首先,在資源文件中使用參數(shù)參數(shù)替換占位符{0}替代日期內(nèi)容.在頁面文件中,使用嵌套的Param標(biāo)簽來設(shè)置參數(shù).例如,資源文件中消息文本為:

        demo1 =今天是{0}.

        頁面文件代碼片段為:

        Properties屬性文件內(nèi)容都是以鍵值對形式存在的.因此自動化測試時,讀取Properties文件后獲取值的部分,檢查其中是否包含過度翻譯的內(nèi)容.其中,國際化敏感的數(shù)據(jù)作為測試的重點(diǎn),數(shù)據(jù)格式可能遍布資源文件的各個地方,包括數(shù)字、貨幣、時間、日期、度量衡等.

        4 結(jié)語

        伴隨軟件國際化開發(fā)技術(shù)不斷發(fā)展的同時,國際化測試的研究也需要更多重視.本文論述了國際化軟件的硬編碼和過度翻譯問題的概念、分類和測試方法現(xiàn)狀.針對硬編碼和過度翻譯兩個問題,分析了現(xiàn)有人工測試的不足和Struts2國際化的技術(shù)特點(diǎn),結(jié)合被測項后的實(shí)際情況,研究并實(shí)現(xiàn)了自動化測試方案.

        本文提出的已經(jīng)應(yīng)用于某公司的Web產(chǎn)品的國際化測試中,實(shí)踐驗(yàn)證了對硬編碼和過度翻譯的自動測試的支持,并取得了良好的效果.當(dāng)然,國際化測試涉及的問題還有很多需要繼續(xù)深入研究,例如對數(shù)據(jù)庫數(shù)據(jù)國際化的研究和國際化測試平臺的研究等.

        1 董俊龍,王武魁.淺議基于JSF的Java國際化編程及其實(shí)現(xiàn).微計算機(jī)信息,2009,25(27):170–171.

        2 劉雅君,徐進(jìn).軟件全球化測試技術(shù)的研究與實(shí)現(xiàn).計算機(jī)系統(tǒng)應(yīng)用,2010,19(1):40–45.

        3 劉建國.軟件項后國際化和本地化的研究[碩士學(xué)位論文].北京:華北電力大學(xué)(北京),2013.

        4 雷輝.國際化軟件測試研究[碩士學(xué)位論文].武漢:湖北大學(xué),2007.

        5 劉雅君.軟件回歸測試技術(shù).計算機(jī)系統(tǒng)應(yīng)用,2011,20(7):156–159.

        Research on the Automatic Testing of Hardcoding and Over-Translation Problems in the International Software

        LIU Ya-Jun,LI Ai-Min,LIU Sheng,YUAN Ting
        (Xi’an University of Technology,Xi’an 710043,China)

        With the development of software internationalization technology,internationalization testing research is attracting more attention.In order to solve the problems of hardcoding and over-translation in international software,this paper proposes an automatic testing scheme.By analyzing the concept,classification and testing methods of the two problems,this paper summarizes the shortcomings of existing manual testing and the characteristics of Struts2 internationalization technology.Finally,combined with the actual situation of the tested project,the automatic test scheme is elaborated.The scheme has been applied to the internationalization testing of a real Web product,which is proved to be the support to hardcoding and over-translation automatic test,and has achieved good results.

        software internationalization testing;hard coding;over-translation;automated testing

        劉雅君,李愛民,劉晟,袁婷.國際化軟件的硬編碼和過度翻譯問題自動測試研究.計算機(jī)系統(tǒng)應(yīng)用,2017,26(9):274–278.http://www.c-sa.org.cn/1003-3254/5983.html

        2017-01-04;采用時間:2017-02-13

        猜你喜歡
        字符串過度頁面
        大狗熊在睡覺
        刷新生活的頁面
        中藥煎煮前不宜過度泡洗
        過度減肥導(dǎo)致閉經(jīng)?
        希望你沒在這里:對過度旅游的強(qiáng)烈抵制
        英語文摘(2019年2期)2019-03-30 01:48:32
        過度加班,咋就停不下來?
        一種新的基于對稱性的字符串相似性處理算法
        依據(jù)字符串匹配的中文分詞模型研究
        一種針對Java中字符串的內(nèi)存管理方案
        同一Word文檔 縱橫頁面并存
        美女狂喷白浆网站视频在线观看 | 国产麻豆久久av入口| 寂寞少妇做spa按摩无码| 初尝黑人巨砲波多野结衣| 亚洲先锋影院一区二区| 九九久久精品一区二区三区av| 久久久久高潮综合影院| 久久亚洲国产成人精品性色| 无码日韩人妻AV一区免费| 免费看男女啪啪的视频网站| 亚洲女人毛茸茸粉红大阴户传播| 亚洲码国产精品高潮在线| 中国大陆一级毛片| 青青草在线成人免费视频| 日本xxxx色视频在线观看免费| 亚洲国产精品久久久久婷婷老年| 亚洲日韩图片专区小说专区| 琪琪av一区二区三区| 亚洲精品宾馆在线精品酒店| 精品无码中文字幕在线| 91久久国产自产拍夜夜嗨| 天堂网av在线免费看| 人人做人人爽人人爱| 日韩精品一区二区三区视频| 国产精品狼人久久久影院| 水蜜桃精品视频在线观看| 久久精品成人无码观看不卡| 亚洲午夜成人片| 久久久噜噜噜久久熟女| 领导边摸边吃奶边做爽在线观看 | 亚洲天堂在线视频播放| 偷拍一区二区三区在线观看| 亚洲国产成人久久综合碰碰| 国产在线精品成人一区二区三区| 日韩在线视精品在亚洲| 日本一区二区三区清视频| 无码国内精品久久人妻| 欧美自拍区| 久久伊人久久伊人久久| 玩弄少妇人妻中文字幕| 伊人色综合九久久天天蜜桃|