Develop Internationalized Software
?
Develop Internationalized Software<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
?
1.?? Glossary
開發(fā)國際化軟件包含很多專業(yè)術(shù)語,現(xiàn)在將常用的列舉如下:
1、 國際化(Internationalization,I18N)
軟件國際化是在軟件設(shè)計和文檔開發(fā)過程中,使得功能和代碼設(shè)計能處理多種語言和文化傳統(tǒng),使創(chuàng)建不同語言版本時,不需要重新設(shè)計源程序代碼的軟件工程方法。由于單詞較長,為了便于書寫,將中間的18個字母省略,簡寫成I18N。
2、 全球可用(Word-Ready)
適當(dāng)?shù)貒H化設(shè)計,可以方便地實現(xiàn)本地化的程序。國際化軟件的設(shè)計目標(biāo)就是設(shè)計成全球可用軟件程序。
3、 本地化能力(Localizability)
本地化能力是表征國際化軟件實現(xiàn)本地化的難易程度的指標(biāo)。良好的軟件國際化設(shè)計是增強本地化能力的基礎(chǔ),可以降低軟件本地化過程的成本。
4、? 單一二進制(Single binary)
國際化軟件中的完全國際化的二進制功能文件,不用再做修改即可用于該軟件的任何本地化的語言版本。
5、? 區(qū)域(Locale)
區(qū)域指的是與某個地方或者某種文化關(guān)聯(lián)的一組信息。也就是說,區(qū)域是由語言、國家/地區(qū),以及文化傳統(tǒng)確定的用戶環(huán)境特征的集合。
6、? 硬編碼(Hard-coding)
軟件工程師在進行國際化軟件編碼時,把需要本地化的字符串放在程序的主體代碼中,而不是放在外部可以易于本地化的資源文件中;基于假設(shè)的字符串長度,設(shè)定字符串的長度數(shù)值常量;在代碼中對需要本地化的關(guān)于語言或文化方面的任何假設(shè)(例如日期和時間格式等)。軟件國際化設(shè)計應(yīng)該避免任何硬編碼,以提高本地化能力。
7、? 偽本地化(Pseudo localization)
偽本地化是自動模擬本地化過程,并且構(gòu)建和測試模擬的本地化版本的過程。把軟件中的需要本地化的字符串轉(zhuǎn)變?yōu)?/span>“偽字符串”,用來國際化軟件的本地化能力,包括本地化功能和外觀。
8、? 國際化功能測試(Internationalized functionality testing)
軟件經(jīng)過國際化設(shè)計后,對軟件的國際化功能和國際化支持程度的測試,用來驗證軟件的全球可用性和軟件的本地化能力。
9、 雙向語言(bi-directional language)
對于希伯萊語或阿拉伯語,文字是從右向左顯示;而其中的英文單詞或商標(biāo)符號從左向右顯示;對于中文,都是從左向右顯示。
10、????????????? 編譯版本(build)
軟件開發(fā)過程中編譯的用于測試的內(nèi)部版本。一個大型的軟件項目通常需要執(zhí)行多個內(nèi)部版本的測試,因此需要按計劃編譯出多個版本用于測試。
11、????????????? 代碼頁(code page)
字符集和字符編碼方案。對每一種語言字符,都用唯一的數(shù)字索引表示。
12、????????????? 偽翻譯(pseudo translation)
將軟件中的可以翻譯的字符串用長的本地化的字符代替的自動或手工處理的過程,主要用于發(fā)現(xiàn)編譯和執(zhí)行本地化文件時潛在的問題。
2.?? World-Readiness
World-Ready software是指完全國際化的且易于本地化的軟件。World-Readiness(全球可用)包括兩個方面:全球化(Globalization)和本地化能力(Localizability)。World-Readiness和Localization(本地化)一起構(gòu)成了國際化軟件的基礎(chǔ)。
開發(fā)國際化軟件,首先需要在軟件需求規(guī)格說明書中明確World-Readiness需求,這些需求大致應(yīng)涵蓋:
1、? Globalization——全球化方面的需求。
2、? customizing features——客制的特性。
3、? MUI——可本地化的UI的需求約束。
4、? legal issues——相關(guān)法律條文。
5、? accessibility of features——可達(dá)成的特性。
6、? target languages——將要翻譯成的語言。
7、? locale-aware feature's behavior——特定區(qū)域中特性的不同行為。
開發(fā)國際化軟件的平臺是操作系統(tǒng),它必須符合國際化軟件的需求。另外,還需要一些專業(yè)工具和輔助工具,比如翻譯軟件、自動化測試工具、資源文件查看和編輯工具、文檔處理工具和通信工具等等。
2.1. Globalization
全球化是指:開發(fā)特性和代碼設(shè)計都不僅僅基于某一種語言的核心程序的過程。其輸入、顯示和輸出都是使用Unicode編碼的,而數(shù)據(jù)和特定的區(qū)域相關(guān)。它是指軟件內(nèi)建的可以支持所有的目標(biāo)語言和區(qū)域的能力,它是包括以下任務(wù)的一個過程:
1、? 明確需要支持的語言和區(qū)域。
2、? 設(shè)計時需要考慮到所支持目標(biāo)市場、語言和區(qū)域。
3、? 對于所有軟件支持的區(qū)域,編寫的代碼所具有的功能完全一致。
這些任務(wù)都集中于“locale-awareness”的概念。另外,全球化的第二個方面包括為內(nèi)部處理編碼數(shù)據(jù)以及和其它應(yīng)用程序共享數(shù)據(jù)。第三個方面為輸入、輸出和顯示數(shù)據(jù)給用戶。
開發(fā)國際化軟件的步驟:
1、? Use Unicode。
2、? Make application locale and culture aware。
3、? Designing application’s text output, and declaring with fonts in a multilingual context。
4、? Deal with MUI(Multilingual User Interface) 。
2.1.1.??? Use Unicode
開發(fā)全球化的第一步就是使用Unicode編碼。
?
Unicode的簡介:
Unicode是一種字符編碼方法,它是由國際組織設(shè)計,可以容納全世界所有語言文字的編碼方案。Unicode的學(xué)名是"Universal Multiple-Octet Coded Character Set",簡稱為UCS(Unicode Character Set)。UCS規(guī)定了怎么用多個字節(jié)表示各種文字。UCS有兩種格式:UCS-2和UCS-4——UCS-2就是用兩個字節(jié)編碼,UCS-4就是用4個字節(jié)(實際上只用了31位,最高位必須為0)編碼。而怎樣傳輸這些編碼,則是由UTF(UCS Transformation Format)規(guī)范規(guī)定的,常見的UTF規(guī)范包括UTF-8、UTF-7、UTF-16和UTF-32。UTF-8以字節(jié)為編碼單元,沒有字節(jié)序的問題;UTF-16以兩個字節(jié)為編碼單元,存在編碼單元的字節(jié)序的問題,這靠BOM(Byte Order Mark)來區(qū)別Big-Endian和Little-Endian。
?
Windows對Unicode的支持:
Windows從Windows NT3.1開始支持Unicode;Windows NT 4、Windows 2000和Windows XP 講Unicode作為其 native encoding。基于Windows NT的操作系統(tǒng)使用的是UTF-16。所以通常我們應(yīng)該使用UTF-16。
?
創(chuàng)建Win32 Unicode Application:
數(shù)據(jù)類型:使用TCHAR、_TCHAR、LPTSTR、LPTCH,而不要使用char、LPSTR、LPCH。
API:使用generic function prototypes,在自定義function的時候也必須使用Unicode Version。
使用TEXT macro:將“L”加在一個字符串的前面來表示其為Unicode字符串。
編譯: Win32 編譯時標(biāo)志 -DUNICODE 和 C 運行時編譯時標(biāo)志-D_UNICODE 都必須被定義。
2.1.2.??? Locale and Cultural Awareness
使用了Unicode編碼僅僅是國際化軟件的一部分。有很多因素需要考慮,其中包括Locale and Cultural Awareness,它主要體現(xiàn)在語言規(guī)則和文化習(xí)慣,比如日期、時間、日歷、貨幣符號、地址、紙張大小、電話號碼和度量單位等。
2.1.3.??? Text Input, Output, and Display
需要作下面的事情:
1、? 使得應(yīng)用程序能處理不同的輸入語言和方法。
2、? 正確顯示所支持的語言文字。
3、? 通過平衡對語言處理的系統(tǒng)支持,懂得用來顯示文本的不同選項(Understand different options for displaying text by leveraging system support for multilingual computing.)
4、? 學(xué)會如何處理字體。
對于Input和顯示不同語言的文字,Windows已經(jīng)提供了很好的支持。
2.1.4.??? Multilingual User Interface (MUI)
國際化軟件的終極目標(biāo)是授權(quán)給用戶能以任何語言訪問和操作數(shù)據(jù)。
Windows從Windows2000開始MUI。
啟用MUI本質(zhì)上必須作:
1、? 將注冊表中的string轉(zhuǎn)移到資源文件中。
2、? 從內(nèi)核將可本地化的string移除。
3、? 使用MUI-enabled shell去顯示本地化的內(nèi)容(比如開始菜單、快捷方式等)。
4、? 防止開發(fā)者將文件路徑硬編碼(hard-coded)。
5、? 如果使用了非傳統(tǒng)的Win32資源(比如XML和HTML),則阻止每個組件中的特定代碼安裝和加載資源文件。
?
實現(xiàn)MUI的三種方法:
1、? 為每種語言編譯一個binary。此方法通常運用于老版本的windows。
2、? 編譯一個語言上中立的binary,帶有一個含有多種語言支持的資源動態(tài)鏈接庫(DLL)。
3、? 編譯一個語言上中立的binary,每個語言一個資源DLL。是目前廣泛采用的一種方法。
?
MUI in Win32 Applications:
1、? 檢測操作系統(tǒng)的UI使用的語言。
2、? 獲得應(yīng)用程序能支持的語言列表。
3、? 根據(jù)操作系統(tǒng)的UI語言,加載合適的資源DLL。
4、? 允許用戶選擇不同的UI語言。
?
Web內(nèi)容:
1、? 將資源存儲在數(shù)據(jù)庫、XML文件或者資源文件中。
2、? 使用變量引用string 資源。
3、? 檢測在初始化時顯示的語言。
4、? 在顯示時加載合適的資源。
2.2. Localizability
本地化能力是軟件具有被本地化的能力——在不改變軟件功能和代碼的情況下,可將軟件本地化為任何語言。它可以分為軟件本地化能力和內(nèi)容本地化能力。
?
Software Localizability Guidelines
1、? 獨立可本地化的資源。
l???????? 不要將不需要本地化的資源和可本地化的資源存放在一起。
l???????? 將可本地化的資源都存儲于resource? repository(比如資源文件、數(shù)據(jù)庫等)中。這些資源包括——UI 資源(比如菜單、按鈕、工具欄等);用于改編產(chǎn)品的資源(比如區(qū)域信息、文件名、賬戶名等),這些資源如果本地化不當(dāng)會影響到軟件的功能,最好不要存在應(yīng)用程序內(nèi)部,且令這樣的資源越少越好。
l???????? 使用API去獲取系統(tǒng)的本地化的值(比如使用SHGetFolderPath函數(shù)獲取本地化的文件夾路徑)。
l???????? 可以將不需要本地化的資源放入頭文件中。
l???????? 不要輕易改變資源的ID。
2、? 處理String。
l???????? 避免運行時合成字符串。比如對于可以枚舉的少數(shù)動態(tài)情況,“Are you sure you want to delete the”+一個變量(可能是file和directory),應(yīng)該改變?yōu)閮蓚€完整的提示信息"Are you sure you want to delete the file?"和"Are you sure you want to delete the directory?"。
l???????? 如果必須使用變量(字符串中有占位符),則應(yīng)該使用唯一的名字。比如將"Not enough memory to %s the file %s."改變?yōu)?/span>"Not enough memory to %1 the file %2."。
l???????? 使用FormatMessage來格式化消息。
l???????? 盡量保持一個句子完整。顯示給用戶的信息最好是一個string就是一個完整的句子,以便于理解和本地化。
l???????? 觀測string的Buffer Sizes。由于不同的語言表達(dá)相同的意思所使用的字符個數(shù)不同,編碼不當(dāng)會造成緩沖區(qū)溢出(buffer overruns)的錯誤。
3、? 對UI的本地化能力的考慮。
l???????? 為控件預(yù)留較多的空間,比如將Label放在Edit上方,以給Label和Edit都留下比較大的空間來顯示字符。
l???????? 令對話框可以改變大小。
l???????? 界面上使用完整的語句,而不是把一個語句分割在控件兩邊。
l???????? 不要將某些控件(比如Button、Dropdown)置于其它控件之上;后者將控件隱藏于其它控件背后。
l???????? 不要將Button的Text和某個變量聯(lián)系在一起,即其Text不應(yīng)該是動態(tài)的。
l???????? 避免使用特定文化的圖片和圖標(biāo),而應(yīng)該使用中性的標(biāo)志。
l???????? 避免使用肢體圖片。
l???????? 避免Gender-Specific Roles and Ethnic Stereotypes。
l???????? 避免宗教相關(guān)的引用。
l???????? 避免政治符號。
l???????? 避免圖片文字。如果將文字嵌入圖片中,則不利于本地化。
?
Mirroring
如果需要支持阿拉伯文,則需要考慮Mirroring。
Content Localizability Guidelines
隨著產(chǎn)品發(fā)布還有相關(guān)文檔(比如幫助文檔),它們需要滿足:
1、? 內(nèi)容盡量簡單明了。
2、? 內(nèi)容(文字、藝術(shù),多媒體)必須是文化上可接受的。
3、? 內(nèi)容必須遵從一致的模式。
4、? 不管用戶選擇什么區(qū)域,幫助系統(tǒng)的功能都是一樣的。
3.?? Localization
主要是大量的翻譯工作——包括產(chǎn)品中的所有text、menus、 dialog boxes、buttons、wizards、online Help、printed documentation、 packaging、CD labels 和multimedia files。這其中需要考慮每個區(qū)域特定的因素(比如文化習(xí)慣、法規(guī)等等)。
4.?? Testing
開發(fā)國際化軟件是需要整個開發(fā)流程都以國際化為目標(biāo)——包括需求、設(shè)計、編碼,還有測試。
4.1. Testing for World-Readiness
World-Readiness軟件測試包括軟件國際化測試和軟件本地化能力測試。軟件的國際化測試是重要的測試階段,必須在本地化測試之前進行測試。國際化軟件的測試目的是判斷軟件的國際化程度,確定軟件是否支持可能的任何區(qū)域,是否可以容易地進行本地化。
4.1.1.??? The Approach to Testing
老的測試方法(測試每個語言版本的功能、本地化的正確性等)是較為低效的,如果軟件需要多支持一倍語言或區(qū)域,則必須付出多一倍的資源,即使有兩個區(qū)域是非常相似的,也不能保證在其中一個區(qū)域運行良好的軟件能在另外一個區(qū)域正常工作
?
通過使測試全球化,我們可以使測試變得容易和有效率。這里有一個重要的概念“enabling(Altering program code to handle input, display, and editing of bidirectional or East Asian languages, such as Arabic and Japanese, respectively.)”——修改程序代碼分別處理雙向語言或東亞語言的輸入、顯示和編輯,比如阿拉伯文(從右向左書寫文字)和中文。在正確地做了“enabling”后, 全部world-ready 的應(yīng)用都能處理底層平臺支持的所有語言。因此,我們不是去測試每個本地化版本的功能,而是為核心產(chǎn)品測試被全球化的功能。但這并不是說就根本不用去測試每個本地化版本了,不同于老的測試方法的地方是——我僅僅需要檢查產(chǎn)品對于給定的區(qū)域或語言適應(yīng)得如何(we only need to check how well the product was adapted for a given locale or language,to verify that localization does not break globalized and localizable resources);此時,測試人員此門語言的掌握程度成為關(guān)鍵因素。
在進行本地化之前,必須確保軟件是國際化的和易于本地化的。如果產(chǎn)品核心開發(fā)和測試滿足了word-ready標(biāo)準(zhǔn),則軟件的多語言sim-ship是可能的;本地化能力測試應(yīng)當(dāng)和國際化功能測試并行;在代碼足夠穩(wěn)定后就開始進行本地化,且僅在本地化能力測試的初始階段開始后。將國際化思想貫穿整個開發(fā)的各個階段,測試和開發(fā)同步進行。這樣的好處是,很多軟件缺陷(核心功能缺陷和國際化缺陷)可以在軟件開發(fā)階段修正,從而軟件本地化變得非常容易進行,減少了軟件本地化后的缺陷。
?
?
Testing process required for shipping an internationalized product
?
測試不再是開發(fā)后的一個被動執(zhí)行的過程,盡早介入測試可以發(fā)現(xiàn)、報告和修正軟件缺陷,由于國際化不再是一個單獨的過程,所以軟件的功能測試、國際化測試將同步進行。這樣即使沒有本地化Build,測試人員可以使用“偽本地化版本”進行“偽本地化測試”,以便發(fā)現(xiàn)本地化能力方面的缺陷。
4.1.2.??? Globalization of the Test
我們最先開始的就是驗證軟件的功能是否全球化了。即檢查其是否滿足全球化的條件:
1.? 基于Unicode。即能正確處理任何Unicode text,處理多語言文本時沒有數(shù)據(jù)丟失。
2.? 如果需要進行文本轉(zhuǎn)換,是否選擇了正確的編碼。
3.? 代碼遵從用戶特定的文化設(shè)置。系統(tǒng)區(qū)域僅影響編碼轉(zhuǎn)換(encoding conversions),用戶區(qū)域設(shè)置只定義了date, time,number 和 currency formatting,calendar 和 sorting 設(shè)置。
?
在進行測試之前,需要作一些準(zhǔn)備工作:
1、? 將需要測試的內(nèi)容劃分成幾個部分。
2、? 確定一個測試的優(yōu)先順序,優(yōu)先測試對全球化影響大的組件。比如未處理未進行Unicode編碼的數(shù)據(jù)的組件、大量處理文本數(shù)據(jù)的組件、操作文件進行存儲和數(shù)據(jù)交換的組件等等。
3、? 選擇一個合適的測試平臺,比如English Windows XP(它能讓我們自由調(diào)整區(qū)域和語言設(shè)置)。
4、? 建立測試環(huán)境。模擬一些多國語言的場景以檢查軟件是否能正常工作,比如:對于分布式系統(tǒng),檢查其是否能在不同區(qū)域的系統(tǒng)間正確地交換數(shù)據(jù);組件是否能正確處理和尊崇用戶的區(qū)域設(shè)置等等。
?
執(zhí)行測試:
為了進行國際化的測試前,需要國際化測試數(shù)據(jù)(比如使用不同于系統(tǒng)區(qū)域的其它區(qū)域的Unicode text、各種語言文字混合的文本、特定區(qū)域的一些特殊要求),測試覆蓋到了各個功能,認(rèn)清國際化問題(globalization problems)——比如不能正確地顯示文本。
?
測試方法:
1.? 測試通用功能。
l???????? 在各種語言環(huán)境下安裝應(yīng)用程序。
l???????? 各種系統(tǒng)和用戶區(qū)域設(shè)置的通用功能。
l???????? 通過各種區(qū)域設(shè)置卸載應(yīng)用程序。
2.? 測試文本處理功能。
l???????? 使用不同區(qū)域的輸入法編輯器交互式文本輸入。
l???????? 多語言文本的剪貼板操作。
l???????? 用戶界面的文本處理。雙字節(jié)字符集的輸入和輸出。
l???????? 多字節(jié)字符集文本的緩沖區(qū)大小的處理。
3.? 測試區(qū)域特征功能。
l???????? 遵循區(qū)域標(biāo)準(zhǔn),正確輸入、存儲并檢索區(qū)域特定數(shù)據(jù)。
l???????? 驗證帶有數(shù)據(jù)分割符的輸入時間、日期和數(shù)值。
l???????? 紙張和信封的大小和打印的正確性。
l???????? 區(qū)域有關(guān)的度量衡的處理功能。
4.1.3.??? Localizability Testing
本地化能力測試的目標(biāo)是被測試過的軟件的UI能被很容易地翻譯成為目標(biāo)語言而不需要重新設(shè)計或者修改代碼。由于其bug必須在開發(fā)階段被修正,所以應(yīng)該盡可能地在開發(fā)的早期就進行檢查。但是不幸的是,這些bug通常要到做本地化的是否才能發(fā)現(xiàn);此外,本地化只有在代碼完成后且趨于穩(wěn)定的時候才會進行,所以不可避免地在開發(fā)和本地化之間有一個很長的時間跨度。解決此矛盾的辦法如下:
1、? 運行一個pseudo-localized版的程序。偽本地化版本測試可以不用實際本地化,就能夠發(fā)現(xiàn)在本地化過程中的用戶界面的翻譯錯誤。鏡像技術(shù)也是偽本地化版本測試的常用技術(shù),發(fā)現(xiàn)一些本地化過程中的控件布局方面的錯誤。
2、? Code review。檢查代碼以發(fā)現(xiàn)代碼中存在的違反Localizability的問題(比如必須將code和resource隔離開、不能在運行時控制UI控件的位置和標(biāo)簽(caption),圖標(biāo)和圖片不能含有文字、不存在對驅(qū)動器和文件名或者注冊鍵的假設(shè)等等)。
3、? Review UI和documentation。確保用戶界面和文檔中所用的術(shù)語清晰、一致、明確。當(dāng)用戶界面和文檔提到相同的特性,使用的術(shù)語不一致,或者當(dāng)文檔使用了太多的技術(shù)行話時,會使本地化過程增加很大難度。如果本地化能力依賴于偽本地化,更應(yīng)該注重檢查文檔的內(nèi)容。
4、? 運行一個試驗性的項目(project)。雖然針對偽本地化版本的測試能夠發(fā)現(xiàn)很多本地化能力方面的問題,但是仍然不能代替對實際的本地化版本進行本地化能力的測試。在選擇合適的本地化版本時,通常考慮以下方面:
l???????? 選擇熟悉的可以迅速創(chuàng)建和測試的本地化語言版本。
l???????? 選擇特別容易暴露本地化問題的語言版本。
l???????? 選擇非常重要的目標(biāo)市場的語言版本。
4.1.4.??? Localization Testing
本地化測試檢查軟件是否恰當(dāng)?shù)乇环g為目標(biāo)語言。它建立于國際化測試基礎(chǔ)之上,如果產(chǎn)品不是足夠國際化的以支持該語言,那根本沒有必要開始進行本地化。
軟件本地化測試的目的是為了發(fā)現(xiàn)和報告本地化軟件的錯誤和缺陷。通過對這些錯誤和缺陷的處理,確保本地化軟件的語言質(zhì)量、互操作性、功能等符合軟件本地化的設(shè)計要求,滿足當(dāng)?shù)卣Z言市場用戶的使用要求。通過分析錯誤產(chǎn)生的原因和錯誤的分布特征,可以幫助項目管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過程的缺陷,以便改進。同時,這種分析也能幫助設(shè)計出有針對性的檢測方法,改善測試的有效性。
?
Localization Testing需要關(guān)注的方面:
1、? Things that are often altered during localization, such as the UI and content files。
2、? Culture-specific, language-specific, and country-specific areas。
3、? The availability of drivers for local hardware and the encryption algorithms incorporated into the application。
4、? The rules and regulations for distribution of cryptographic software differ from country to country。
5、? The customization that could not be automated through the globalization services infrastructure (Win32 NLS APIs and the .NET Framework)。
6、? Basic functionality tests; setup, upgrade, and uninstall tests that are run in the localized environment。
7、? Application and hardware compatibility tests according to the product's target market。
重點是發(fā)現(xiàn)軟件因本地化產(chǎn)生的錯誤。不要過多的耗費時間測試軟件的功能,因為本地化測試前,源語言軟件已經(jīng)進行過功能測試和國際化測試。所以,應(yīng)該將本地化測試的重點放在本地化方面的錯誤。
?
使用的平臺:
建議使用English Windows XP。
?
對UI的Localization Testing:
1、? 當(dāng)應(yīng)用程序運行了某些進程(比如運行了一些windows 服務(wù)),要特別注意應(yīng)用程序的行為。比如UI上使用的是用戶設(shè)置的區(qū)域設(shè)置,而后臺服務(wù)使用的操作系統(tǒng)的區(qū)域設(shè)置。
2、? 驗證所有的應(yīng)用程序資源。
3、? 驗證語義準(zhǔn)確性和資源屬性。
4、? 檢查排字錯誤。
5、? 檢查各種文檔(比如用戶手冊、在線幫助、消息通知等)是彼此一致的。
6、? 確認(rèn)遵從系統(tǒng)、輸入和顯示環(huán)境的標(biāo)準(zhǔn)。
7、? 檢查UI的可用性。
8、? 確認(rèn)文化上的適應(yīng)性。
9、? 檢查政治上敏感的內(nèi)容。
10、????????????? 確保關(guān)于本公司的信息(聯(lián)系信息、產(chǎn)品支持服務(wù)電話)都是最新的。
11、????????????? 產(chǎn)品發(fā)行地的法律規(guī)定。
4.2. Testing Localizability with Pseudo-Localization
偽本地化將產(chǎn)品中的那些文本(字符串)翻譯為偽字符串,這樣產(chǎn)生的偽語言(pseudo-language)就用來測試不同方面的本地化對產(chǎn)品的功能和外觀會產(chǎn)生怎樣的影響。“不同方面的本地化”包括用不同字符集的字符來翻譯字符串以及加長的字符串,還有對圖片、圖像聲音、文檔內(nèi)容的偽本地化,以及偽翻轉(zhuǎn)(pseudo-mirroring)等。通過將產(chǎn)品偽本地化,可以得到產(chǎn)品的偽本地化版本。使用偽本地化技術(shù),我們可以不必等到真正的本地化過程才開始國際化測試。隨著產(chǎn)品的開發(fā)進程,產(chǎn)品變得日益復(fù)雜,對偽本地化版本的測試應(yīng)當(dāng)成為國際化測試的一個部分,它可以幫助我們發(fā)現(xiàn)那些產(chǎn)品的本地化能力bug。偽本地化測試工作可以使用自動化測試工具來進行,一般自動化測試工具都有此功能。
?
本地化能力bug的分類:
l???????? 需要本地化的資源沒有暴露給本地化人員。
l???????? 需要本地化的文件的格式不是可以被本地化的格式,或者被Hard-Coded到了源代碼中。
l???????? 將不需要本地化的字符串進行了本地化。
l???????? 非拉丁字符導(dǎo)致了功能或者表面問題。
l???????? 字符串長度的擴展導(dǎo)致了緩沖區(qū)溢出錯誤。
l???????? 功能性字符串沒有被一致地本地化。比如文件名。
l???????? 產(chǎn)品不能修改以適應(yīng)本地化要求。比如和特定區(qū)域相關(guān)的字體、字典等。
l???????? 產(chǎn)品的UI不能進行翻轉(zhuǎn)(mirroring)。比如阿拉伯文是從右至左書寫文字的。
l???????? 在運行時生成字符串和調(diào)整UI。這樣的字符串和UI根本無法進行本地化。
4.3. The Role of Test Tools
測試工具在測試過程中起著很重要的作用,尤其是自動化測試工具。雖然自動化測試工具不能完全代替手工測試,但是在很多領(lǐng)域它都發(fā)揮了巨大的作用。通過在初始版本和本地化版本上運行自動化測試,可以檢驗本地化是否破壞了功能。另外,確保被國際化的產(chǎn)品在多種不同的環(huán)境下測試,進行大范圍輸入數(shù)據(jù)的測試。
為能正確地測試全球化軟件,測試工具本身必須要求是全球化的軟件,它能自動根據(jù)區(qū)域設(shè)置調(diào)整自己,并且能夠處理國際化文本數(shù)據(jù)。另外,如果它必須通過名字來訪問本地化對象,則測試工具必須被本地化的。如果工具本身存在一些局限性,可以作一些工具來有效利用工具:
1、? 通過資源的identifiers, ordinal numbers, 或者 window classes來訪問對象,而不是caption。
2、? 將文本資源從代碼中獨立出來以方便本地化。
5.?? Tools and Utilities
5.1. pseudoLocalizer
pseudoLocalizer -- a tool to aid development and testing of internationalized applications
5.2. Strgen
Strgen generates multi-lingual strings to be used in globalization testing, (runs on only Windows NT/2000/XP/Server 2003).
5.3. Microsoft Advanced Character Mapping Tool for Traditional Chinese Windows
The Microsoft Advanced Character Mapping Tool helps users migrate from the proprietary solution to the Unicode standard, reducing the time and effort needed to find the correct Unicode value for a specific character.
5.4. Robot
其思想就是:測試人員把標(biāo)準(zhǔn)答案都告訴Robot,然后Robot就會對照著系統(tǒng)進行檢查。用Robot直接錄控件,它會對控件進行識別(就是一個一個的對象),從而可以獲得每個對象的屬性,然后我們可以檢查這些屬性,就和編程的原理一樣。Robot的語法使用Basic的語法,它的語言使用SQA Basic。
5.4.1.??? Features of Robot
支持多種 IDE:
l???????? Microsoft Visual Studio .NET
l???????? Oracle Developer/2000
l???????? <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Delphi
l???????? PeopleSoft
l???????? PowerBuilder
支持多種語言:
l???????? Java
l???????? HTML 和 DHTML
l???????? Visual Basic
l???????? Visual C++
l???????? ActiveX
l???????? XML
自動 GUI 功能測試
l???????? 執(zhí)行分布式功能測試
l???????? 測試所有 .NET 本機控件,包括 VB.NET、C#、J#、Managed C++
l???????? 允許在記錄時查看和編輯測試腳本
Rational Robot可開發(fā)三種測試腳本:用于功能測試的GUI腳本、用于性能測試的VU以及VB腳本,如下表:
| 方面 | GUI腳本 | VU腳本 |
| VU腳本 | 在一臺計算機上同時只能執(zhí)行一個GUI腳本。 | 在一臺計算機上同時可以執(zhí)行多個VU腳本。 |
| 語言 | 包括對GUI對象的鍵盤敲擊以及鼠標(biāo)點擊行為,腳本用SQA Basic語言寫成。 | 包括客戶端發(fā)送到服務(wù)器的要求,腳本用VU語言寫成。 |
| 測試領(lǐng)域 | 用于功能測試和性能測試。 | 通常用于加入用戶負(fù)載的性能測試,例如:測試不同負(fù)載下服務(wù)器響應(yīng)時間。 |
| 查證點 | 可以包括查證點,用于比較記錄回放時捕獲的信息。 | 不支持查證點。 |
| 用戶 | 單用戶,模擬前臺的實際用戶操作 | 多用戶,虛擬測試者模擬發(fā)送到數(shù)據(jù)庫、Tuxedo或者Web服務(wù)器的請求,Robot記錄網(wǎng)絡(luò)流量等后臺,忽略前臺GUI操作。 |
5.4.2.??? Use Robot to Test Windows Forms UI
一般是使用Robot第一次的輸入,Robot會自動產(chǎn)生腳本,此腳本可以用于自動化測試,我們還可以修改腳本以滿足所需的測試。所有的.NET 的component都可以被自動化測試工具捕捉到,進行捕捉時可以設(shè)置為根據(jù)對象的“ID”進行捕捉,也根據(jù)對象的“text”進行選擇(不推薦,不適用于國際化軟件測試);而對于MFC控件等第三方控件的捕捉帶有選擇性,只有部分控件可被捕捉到——Robot只能識別標(biāo)準(zhǔn)控件,對于用戶自定義控件則常常無法識別。因此,我們可以事先使用rational識別器識別控件,通過識別的控件可以被robot捕捉到。在開發(fā)過程中,應(yīng)當(dāng)盡量使用標(biāo)準(zhǔn)控件,為使用自動化測試工具提供條件。
?
總結(jié)
以上是生活随笔為你收集整理的Develop Internationalized Software的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 锁的一些概念
- 下一篇: linux文件系统挂载不上,nfs文件系