文摘
移动应用无处不在。发布的应用在全球范围内要求他们可用在许多语言中,包括双向语言。开发人员和翻译通常是不同的人。而自动测试本身很重要,一般为了能够开发高质量的软件,这样的自动测试成为绝对有必要当开发人员不具备足够的知识从右到左的语言需要维护为双向语言编写的代码。一些存在双向本地化测试的移动应用程序。然而,它们的功能是有限的,因为它们只覆盖翻译和采用不同的地区。在本文中,我们提出我们的方法自动双向本地化测试为Android应用程序与一个完整的考虑bidi语言问题。目标是检查任何本地化产品缺陷。提出的方法用于测试双向应用的一般问题,专门为阿拉伯语。结果表明,该方法能够有效地揭示缺陷在应用程序的设计,确保本地化应用程序匹配所有本地用户的预期,并保证产品是当地习俗文化一致。
1。介绍
快速扩散的智能手机和互联网的快速增长方便“应用程序”(为移动设备应用程序)来访问和下载来自世界各地。根据最新的国际数据公司(IDC)的初步成果,在2015年第四季度,在全球智能手机销量超过3.995亿部,同时Android是最受欢迎的操作系统的市场份额达到82.8%1,2]。最大的挑战不仅是开发应用程序还要测试他们保证可用性和鲁棒性。通常应用程序分发给许多国家和语言地区(1,3]。有许多应用程序在谷歌玩超过30至50种不同的语言来自世界各地,包括语言与中国传统与现代等奇异的字体,希腊、泰国(4]。每个国家或地区都有自己的文化和风俗;因此谷歌强烈鼓励开发人员定位他们的应用程序,以满足本地用户的需求,从而增加销售。本地化,然而,通常开发人员知之甚少,即使他们的知识他们愿意支持的所有语言,高频手工测试的本地化版本几乎是不可行,尤其是在一个高度迭代开发过程中测试每天必须多次执行,以避免错误和其他问题的积累和扩散的开发团队的成员。因此,自动应用程序本地化测试是受到越来越多的关注5]。
一般来说,软件全球化(G11n)是一个过程有两个阶段:国际化(I18n),和本地化(L10n) [6]。国际化是指的过程设计和开发一个系统,支持不同的语言和地区。本地化的过程是指修改国际化软件用于一个特定的国家,地区,或文化,通过增加地方的特点和翻译文本(6,7]。
国际软件的质量是完全依赖于软件的本地化水平;因此,本地化测试是国际软件质量保证的重要组成部分,因此变成了国际软件测试的主要类型7,8]。
目前,大多数的本地化的软件只是表达语言翻译和适应的时间,日期、数字和货币格式。此外,本地化语言的准确性、完整性、界面布局,和文档内容必须满足本地用户的需求和地域文化9]。然而,本地化测试通常是很少不完成或手工完成,只有部分,通常忽略了语言不是由测试人员;例如,本地化版本的应用程序只是spot-tested手动释放前几个选定的语言。
流行的软件通常是产生在许多语言版本为了和可用的用户更容易理解。压倒性的比例这些应用程序构建为从左到右(LTR)语言如英语或德语。相比之下,阿拉伯语写和读从右到左(RTL) [9]。另外阿拉伯语是草书这意味着字母连接在一起喜欢英语笔迹。相同的字符集利用表达已经超过25种语言除了阿拉伯语(10]。
领域的软件本地化,阿拉伯语被认为是最具挑战性的语言之一。阿拉伯语“非常不同的字符,形态、和diacritization从其他语言,和要求,否则将是一个错误”(11]。它是世界上排名第五的语言在母语,也是联合国六种官方语言之一(10]。由于这些,不同的问题应该考虑软件本地化阿拉伯语。
双向(BiDi)等语言阿拉伯语、波斯语、乌尔都语和希伯来语,文字在哪里读和写从RTL虽然数字读写LTR,需要布局定制不仅用于文本,也为所有的用户界面(UI)小部件,包括按钮、文本视图、编辑文本,寻找酒吧、复选框、菜单和对话框。有许多UI元素需要调整功能和内容本地化。这些包括字符串、布局、图片和多媒体、字符集和语言环境数据(9]。
软件本地化测试是一个关键的方法,进行了控制产品的质量定位为一个特定的地理区域或文化。这个测试就像一个护照为你的应用程序从国家转移。L10n自动软件测试的主要目标在测试驱动开发过程文档的特性不同的本地化需求的开发人员不知道他们从自己的文化背景和确保缺陷和不足,介绍了稍后不失本地化方面的产品。
事实上,测试必须能够证实本地化软件的功能和性能和组件根据原始产品和检测语言和功能问题[12,13]。
至关重要的是,翻译的正确性验证,保证文化的考虑问题。然而,本地化过程通常介绍了严重问题,比如以下(14,15]:(我)剪字符串或字符串,重叠的边缘UI元素在屏幕上。(2)日期和时间格式。(3)未翻译的字符串(字符串显示在源语言,而不是他们的目标语言,可能错过翻译;这个应用程序时经常会发生连续的方式发展,并不是所有的翻译都可以添加在同一时间)。(iv)不恰当的或文本布局方向。(v)不正确的字母排序。此外,L10n测试是在某些情况下能够揭示缺陷在软件的设计9,12]。
许多本地化问题需要回顾讨论Kopsch [6]。开发人员应该考虑每个目的地的特定特性。的翻译,也有一些化妆品检查需要实现的。例如,一个需要检查标签仍然适合在屏幕上,他们是否剪,他们不是与其他UI元素重叠,等等所讨论的Cavalleri [7]。
在定位过程中,应该考虑许多良好的实践和技巧,测试人员应该遵循本地化清单和使它成为一个优先级揭示I18n和L10n缺陷首先集中在在五种语言,包括英语。经验表明,我们是最容易找到具体问题在以下语言:德语、日语、阿拉伯语、北印度语,讨论Kotze [12]。
然而,移动应用程序的本地化bidi语言还没有达到其全部潜力由于缺乏研究。多数提议的方法被设计用来测试为桌面和传统的web应用程序本地化问题讨论(9,13]。此外,发表论文的一些识别有关的各种独特的挑战与移动应用程序的本地化测试中讨论(5,16并识别组件包含在一个有效的测试策略建立本地化测试中讨论(5]。
在本文中,一个自动化的BiDi L10n的智能手机应用程序测试方法介绍;我们提出的方法应用于测试图像处理应用程序的一个关键问题。本文的主要贡献是再造我们的口袋油漆应用程序本地化满载bidi语言问题的注意事项,特别是阿拉伯语,和检查应用程序本地化用户界面缺陷。
2。双向本地化测试在移动世界
倾向移动应用开发增加了在过去的几年里。手机和应用软件玩我们的生活不可分割的一部分,和应用程序必须正确地随时随地工作。在开发方面,提供本地化的软件版本仅仅增加潜在客户的数量,也因此是一个强劲的经济动机提供的软件在尽可能多的潜在市场的主要语言。然而,一些国际化和本地化测试,手动或自动,之前是必要的市场分布是有意义的。
本地化测试的应用面临着许多问题,因为测试这些应用程序的复杂性和资源有限的移动设备。本地化测试移动应用程序更为复杂和挑战性相比传统的基于web和桌面应用程序的本地化测试(17]。
移动应用程序在多个操作系统Android和iOS等工作。特别是在Android的案例中,许多不同的Android版本支持完全不同的GUI元素,额外的GUI修改等硬件制造商三星和HTC,大量不同的键盘程序,用户可以自由选择,和巨大的不同显示分辨率和高宽比的设备,使开发的GUI应用程序所有这些组合一个困难的挑战。
图1说明了设计一个有效的过程为bidi语言本地化测试方法。时应该考虑的关键要素后,这种方法如下:(我)需要做本地化测试在不同的类型的设备在不同的平台上。(2)除了原始语言,通常我们英语,移动应用程序需要支持bidi语言。(3)本地化测试的自动化可以减少时间和成本的一个重要因素bidi语言的测试应用程序。
3所示。本地化测试自动化
手工测试的多语种移动应用程序需要花费大量的时间和资源,而自动测试可以节省时间和精力,以及增加对本地化测试的准确性和可重复性。一般来说,自动化测试可以被认为是最理想的一种测试。自动化测试也可以写入控制系统开发的进度和早期发现缺陷和有效5,18]。
声称的应用特性,不是测试实际上是不存在的,是重构的基本原理,根据定义是内部软件质量的提高没有添加新的特性和实践非常有助于开发健壮的软件,只能在测试,另有格言“永不改变一个运行的系统”将占上风,和重构没有测试会导致意想不到的消除未经测试的功能或可能导致更严重的后果。
另一方面,通过按按钮当自动测试可以运行和测试都是“绿色”,也就是说,没有异常行为的软件,开发人员可以确定当前版本的应用程序符合或者,换句话说,是正确的关于这些测试用例。从心理上来说,有好处,开发人员和的感觉,以防他们在某种程度上在开发循环,还客户好当他们看到,测试都是成功的。如果测试所有功能,发展生产力的增加,其他好处,由于减少调试时间,时间,因此可以花在更有意义的活动(19]。
此外,本地化测试的自动化测试步骤时非常有效的一直重复同样的也在大量的测试环境。与不同类型的平台和操作系统可用于智能手机,这将是不切实际的所有排列(手动测试5,19]。
4所示。为什么先测试吗?
在测试驱动开发中,开发人员最初第一个写自动化测试之前必须失败编写相应的生产代码。这个测试描述所需的改进或新功能,从而既正式规范,可以自动检查的一致性和人类可读的描述测试用例。在第二步不仅开发人员编写产品代码通过测试,然后测试应该成功运行19]。
开发我们的口袋里油漆应用,我们写了一个自动化的测试,定义了文本方向bidi语言。因为没有代码还使测试通过,这个测试最初应该失败。然而,出乎意料的,测试用例通过了!这怎么可能?在这种情况下的原因是测试用例本身是不正确的,因为它检查文本的方向不正确的语言环境配置,如下所示。
因此,立即反馈给程序员使用不同的配置BiDi文本方向,如下所示。测试写了吗后产品代码已经存在,测试也会成功,但是错误的原因!
文档的编写自动化测试软件开发人员有效,而测试用例描述的规范定义的客户,同时也避免用户和开发者之间的任何歧义或误解。但是,如果开发人员想要编写一个测试任何主题,他应该首先了解被测试对象。
开发人员理解的最佳途径之一是通过将它们转化为测试要求。几个优势提前编写测试代码如下:(我)如果测试都写在最后阶段(当所有编码已经完成),他们很有可能不会写。(2)开发商承担更多的责任来生产高质量的产品。(3)如果测试写的早,他们会非常有用,因为更多的客户团队的需求和期望是清楚地传达给开发人员,从而减少误解的可能性。
5。口袋漆:一个简短的介绍
口袋涂料是涂料编辑器和图像操作安卓应用,允许部分图片设置为透明像素级和缩放。它是集成到口袋里的代码,但它也可以用于自己的(20.]。
口袋油漆应用功能,如邮票复制粘贴和调整的部分图片,吸管挑选一个RGBa(红绿蓝α=透明度)颜色,常规的形状(矩形,圆形/椭圆形),或填充。
口袋涂料是用于简单的图像编辑如旋转、翻转、放大/缩小,裁剪。用户可以绘制线条的不同形状(圆形或矩形),也可能变厚或薄利用线宽度和样式设置。
口袋里的油漆颜色选取器,你可以选择颜色从预定义的颜色的调色板或通过一个RGBa对话框。
图像保存为PNG (alpha通道)在“口袋漆”文件夹中,可以发现通过画廊和照片应用程序。口袋油漆是免费和开源开发的非营利Catrobat项目(20.]。
6。考虑本地化双向应用
应用程序不应该局限于一个市场销售;移动应用商店是全球性的,因此应用程序应该。应用商店有超过150多个国家,并达到这一全球市场的第一步是国际化应用程序。用户试图下载应用程序可以位于任何地方。今天,定制本地化的应用程序是必须的。
在实践中,本地化需要复杂和技术工作通过各种各样的专家,包括工程师、翻译、图形设计人员、测试人员、程序员和项目经理。以下是一些应用程序的最佳实践来考虑BiDi本地化。
资源。一个关键的问题是,没有一个UI元素的文本、颜色、图像或风格应该是硬编码的软件(即在源代码中。、分离代码)。他们应该存储在资源文件;资源文件的内容可以由软件在运行时向用户供应这些元素在他们当地语言。
外部化资源。与应用程序相关的所有noncode资产视为资源,如内容、图片和视频。本地化过程需要开发人员将合适的资源添加到手机应用程序来确保一个给定的国家,语言环境,语言,或文化的支持。因此,所有资源放置到外部文件中。之后,定位可以成为一个简单的过程在创建为每个受支持的语言资源文件的新版本。
用户界面镜像。bidi语言通常是镜像的UI和右对齐。自然,常见的阅读顺序从RTL bidi语言的使用者。这是因为这些语言写在一种被称为RTL和字符串流方向如图2。
一般来说应该反映所有UI元素,其中包括列表,滚动条,进度条,弹出框,网格和画廊。用户界面将自动反映当用户更改系统语言RTL的语言。文本的方向也改变了RTL除了电话号码,默认国家代码,和类似的数字LTR也在RTL的语言。注意,一些观点和小部件的方向在UI布局可能不会自动改变。
此外,内容如图片、视频和地图并不反映。然而,一些方向如箭头需要镜像图像。的控件类型不应反映在bidi语言如下:(我)视频控制和时间表的图标,因为他们代表的方向带。(2)图像(如果他们指示方向或订单除外)。(3)时钟。(iv)图(- - -相互重合在RTL LTR是一样的)。(v)音乐的音符。
图标。虽然大约90%的用户界面需要镜像,并不是很多的图标实际上都受到影响。很难说哪个图标需要镜像,哪个不是因为这取决于图标的语义。因此,合作设计人员、开发人员、和语言专家(例如,译者)应该被考虑。图形是关于镜像direction-sensitive引入了另一个挑战。这些图形可以镜像时得到一个不正确的意思。
LTR布局在一个导航器,一个箭头指向左边意味着导航回到前一页;一个箭头指向的权利意味着它前进到下一个页面。BiDi布局是镜像时,意义会恰恰相反,因为镜像重新排列了UI元素的布局没有反映实际的图标,如图3。
(一)
(b)
因此,应特别注意direction-sensitive图形如图标,有一个特定的方向取向(回来,接下来,撤消和重做),帮助气球,或者烤面包的消息。数据4和5显示后,接下来,撤消和重做图标的RTL的语言。
(一)
(b)
(一)
(b)
解决方案处理direction-sensitive图形是有不同的图形目录在你的资源时使用绘图目的地是RTL的方向,换句话说,从来没有硬编码图像或布局。此外,一个完整的优化提供了RTL布局通过添加完全分开布局文件使用ldrtl资源限定符(ldrtl代表layout-direction-right-to-left),如图6。
此外,RTL语言UI图标布局应遵循自然RTL方向。镜像效应只是替换对话框的图标没有镜像图标的图像。这部分的解决方案没有解决布局问题在口袋油漆等一些图标和翻转图标。它只给了他们新的镜像对话框如图中的位置7。
(一)
(b)
在这种情况下,功能本身就是镜像解决UI布局如图的问题8。
(一)
(b)
复选框。复选框和UI元素复选框是反映和右对齐,但实际“检查”符号不得镜像。
本地化的字符串。面向用户的文本需要本地化。因此,需要翻译的文本到一个特定的语言前显示给用户。更具体地说,所有的字符串资源文件应存放在值;检索的文本可以由软件在运行时向用户供应这些元素在阿拉伯语。因此,另一个字符串。xml必须创建如图9。
在口袋漆的情况下翻译阿拉伯语是由志愿者使用一个以社区为基础的翻译工具(Crowdin)。必须翻译的字符串文件被上传到web环境中为了访问我们的翻译。实际上,在Android UI元素定义并存储在一个XML文件,和每一个字符串需要翻译元素项添加的字符串。值目录中的xml文件(21]。阿拉伯语翻译创建文件夹并命名values-ar (“ar”代表阿拉伯语根据ISO 639 - 1) (22]。
介绍了许多工具翻译的字符串;有些集成开发环境,而有些人是独立于平台的。实际上,翻译字符串自动并不简洁,完整,正确当母语翻译。然而,一些词有多种含义的原始语言也在目标语言。例如,在某些应用程序中,有一个单字原图文本“杀死”,意思是“停止应用程序。”在阿拉伯语中,直译“杀死”意味着“杀死一个人/杀死动物”;因此熟练的语言专家,也需要领域专家的应用程序能够正确翻译所有字符串。一个好的译者必须合格,相关基础知识工程领域为了翻译这一项“停止”,而不是“杀死”。
在现实生活中,开发人员和翻译人员之间的沟通不可能产生许多缺陷。在实践中,应用程序中的字符串可能操纵没有翻译的知识,和翻译后的字符串可以保持在一个古老的国家。因此,开发人员必须通知翻译字符串的任何更改文件,并保持产品质量。
如果开发者需要区分不同的区域使用,例如,英语,他们可以添加英语区域变体美国、英国、澳大利亚、新西兰、加拿大、香港、应用程序等等,只有琴弦都写在一个不同的方式需要在字符串中包含文件要翻译后;例如,“颜色”是喜欢在英国,美国和“色”是如图10。
默认的资源。应用程序的默认资源是那些没有标注任何语言或语言环境限定符。如果没有默认为依靠,那么应用程序会停止,因为Android寻找资源,不能找到一个相匹配的配置设备。
屏幕尺寸变化和局限性。手机提供的最重要的挑战之一是有限的屏幕大小。然而,如果应用程序是设计用于在不同的国家,I18n和L10n测试用例都是尤其重要的约束下实施的不同的屏幕尺寸。而开发人员可能设计应用英文看起来不错,看上去不是在德语或其他语言的字符计数将消耗更多的空间。另一方面,一些中国的语言,像在每个字符包含大量的信息,因此通常需要更少的空间,但这可能并不适用于其他类似的语言,比如日语,因为字符包括中国汉字的起源和纯粹的语音平假名和片假名字符,后两个占用相对更多的空间。额外的一些亚洲语言的问题是自动换行可能非常困难,因为单词之间没有空格字符,和换行符是不可能在所有地方,额外的复杂规则正确分解线。
灵活的布局。灵活的布局用于允许观点相对不固定的起源,宽度和高度。设计的UI元素包含任何文本必须是灵活的。分配更多的空间比必要的英语以适应大多数其他语言(高出30%是正常的)。实际上,如果使用固定宽度的限制,在某些语言本地化文本可能出现截断。因此,约束删除和“包装内容”属性是用于允许限制每个UI元素的宽度。
显然,小部件和对话框必须被设置为可扩展的,从水平和垂直方向上,为了适应文本的宽度和高度的变化。阿拉伯语的字体可以扩大横向和纵向比英语。结果可能是一个截断UI小部件提供的文本,因为空间是不够的。
阿拉伯语字符比拉丁字符结构分化和显示。有时译者可能需要两个单词或更多阿拉伯语用英语描述一个词。例如,在口袋里画有一个单字原图字符串“缩放。”在阿拉伯语中,直译的“变焦”包含两个单词和显然不适合留给英语”的文本视图缩放,“但没有短词具有相同含义的阿拉伯语。这同样适用于“椭圆”图标如图所示,也显示在图11。
移动应用程序的字体样式。字体样式的文本是气馁等布局设计的特殊字体,斜体,或大胆的,因为它们可能影响复杂的角色在某些语言的可读性。
系统提供的格式化方法日期、时间、数量和货币。系统格式用于指定日期、时间、数字、货币和其他值,可以改变的所谓“语言环境”,从而确保正确格式化的数据根据语言环境。如果有一个特定的格式,它是基于假设用户的语言环境,这个问题将会出现当用户更改到另一个地方。典型的问题是“https://static.hindawi.com/articles/misy/volume-2016/2872067/figures/...”。美国和欧洲之间的日期格式的日期格式,目前尚不清楚10/2/2016是10月2日(美国)或10日2016年2月(大多数欧洲国家)。
文本内容的重要性。因为手机的小屏幕大小,很多短语和单词都建议缺乏内容以及有多个含义的单词,例如,“集。“这可能导致歧义和错误在本地化过程中。因此,本地化应用,整个本地化团队应该非常熟悉应用程序域。
7所示。持续集成
持续集成是一种最重要的在现代软件开发实践。背后的想法持续集成的关键是执行预定义组的步骤是基于一个特定的触发;触发器可能是一个新的拉请求的版本控制系统,或触发时间,例如,自动创建一个构建和运行所有的测试用例,然后创建一个报告,可以通过一个web界面检查感兴趣的各方,并可能报告的要点的测试运行项目的开发商的irc频道。简而言之,持续集成的过程是指将所有开发工作在预定义的时间或事件以自动测试和构建。我们的想法是,这使识别错误的早期发展过程(23]。
我们使用詹金斯持续集成;它是一个开源的工具,允许控制任意自动化的执行步骤。詹金斯有能力来通知用户构建的成功或失败。它可以通过命令行执行或可以在web应用程序服务器中运行。詹金斯是易于安装和有一个直观的和健壮的用户界面(23]。
自动化测试是任何持续集成环境的一个重要组成部分;它允许团队成员接收反馈的状态发展在仪表板视图(不是唯一的),并确保通过文档测试成功,并定期执行的结果,和各种各样的其他机制一起和集合的统计数据,例如,对于自动代码质量评估或测试覆盖度量。
8。本地化测试bidi语言为何如此重要?
本地化测试是一种质量保证测试;主要侧重于产品的功能的评价,化妆品,和质量的本地化。bidi语言自动软件本地化测试的主要目标如下:(我)文档的属性不同的本地化问题对于那些开发人员不知道他们从自己的文化背景。(2)确保缺陷和不足,介绍了稍后不失本地化方面的产品。(3)检测和报告应用程序的本地化的缺陷。
9。本地化测试方法
产品定位后,本地化测试执行。目标是确保本地化产品功能齐全,外观上正确,语言准确,和文化上适当的本地化过程中没有产生问题。
图12说明提出的架构自动化本地化测试的方法。该方法结合最佳实践GUI测试工具为Android (Robotium和浓咖啡)和通过持续集成服务器调用他们为了执行所有自动化GUI测试从一个中心位置。本节提供实质性的、完整的开发和用户满意度测试方法定位方面的应用。
9.1。本地化资源测试
这个测试验证所有必需的本地化资源(文件和文件夹)中BiDi语言版本。
9.1.1。回退的语言
应用程序测试后所有bidi语言和地区,另外的后备语言应用程序检查。为了验证这一点,设备不支持语言是改变了这一检查,这个应用程序使用后备语言实现。这个测试套件确保应用程序运行正常,恢复默认的资源。在下面的代码片段中,配置更改为现代汉语,语言不支持的手机应用程序,在这种情况下,后备语言检查以确保应用程序恢复我们英语。此外,setLocale()方法实现以保证测试的完整性。
9.1.2。本地化的媒体和默认的资源
测试替代图形是否特定于本地语言环境的资源检索RTL模式,提供正确的应用程序在运行时设备的场所是RTL改变语言。同时,编写测试用例,以确保一个完整的设置的默认资源无论语言或语言环境包含在应用程序的结构如下所示。
9.1.3。Overtranslation
如果显示默认的文本而不是接口的任何部分的翻译文本,这些文本可能会被忽略或被评论家。这样的文本不应该翻译并保持不变。在实践中,overtranslation测试很难实现。然而,测试应该检查的文本显示在文本视图是一样的预期中定义的文本字符串。xml文件。因此,它可能是不切实际的检查应用程序中的所有元素的文本。
事实上,在某些情况下一个翻译字符串不是被视为一个软件缺陷。例如,翻译文本可能属于一个新特性添加到应用程序还没有被翻译,或者一个UI元素,应该保持源语言和所有的语言都是一样的,如超链接或商标的产品名称。Overtranslation问题评论家的责任。
9.2。语言测试
语言验证或验证的所有文本翻译本地化产品,是另一个非常重要的任务。在拟议的方法中,熟练的语言专家可以使用截图验证语言内容的所有产品屏幕检查语义翻译的正确性。
9.3。化妆品测试
翻译有一个巨大的影响应用程序的化妆品质量。化妆品测试的目标是验证本地化阶段并没有引入任何视觉缺陷,并确保UI在所有支持bidi语言版本有一个一致的外观,和产品不含缺陷如截断字符串,重叠的小部件,偏差小部件,在本地化过程中引入的。
需要解决的一个重要问题是包含的UI布局,弹出框、列表和窗口小部件。所有UI元素需要支持RTL方向如图13。
(一)
(b)
设备上装。视图刷方向
大多数小部件,如寻求酒吧、进度条、转轮和大纲视图出现了。每个寻求栏视图测试。执行的测试方法可以滑动的游标寻求一个新职位的酒吧。这些观点的水平布局方向应该从RTL;否则,视图需要调整。断言方法用于比较预期的布局方向测试的结果到实际的布局方向如图14。
下面的代码片段说明了测试用例的细节以及如何寻求酒吧的水平布局方向测试。测试用例检测到在哪个方向用户移动时他或她的手指触摸寻求酒吧,是否到左边或者右边的方向。显然,测试用例模拟用户行为和交互。定义两个变量downXValue和upXValue存储值,当用户的手指压下来,分别。当RTL布置图的方向,成功测试通过。
9.3.2。Direction-Sensitive图形
自然,在RTL接口从右到左移动,因此任何“返回”类型箭头指向正确的和向前向左箭头。然而,本地化过程变化撤销和重做的方向图标很容易理解阿拉伯语。同样重要的是,撤销和重做图标应该在所有语言正确表达时间的方向。提出了一种新的测试用例检查镜像意识本地化产品direction-sensitive图形使用一些图像处理技术。然而,镜像后LTR图像特征的匹配应该BiDi特性;否则,测试失败(见图15)。
相应的测试用例实现本地化版本检查镜像意识。然而,在RTL撤销功能的语言是一样的一个镜像的原始版本。所以,下面的代码展示了镜像意识是如何测试。
这两种方法imageAreEquals()和doMirroring()实现来保证测试的完整性。
9.3.3。自动布局的视图
该方法需要检查所有固定的起源,宽度和高度是消除应用程序的视图,这样本地化文本语言或语言环境时可以自动回流改变如图16(对比图11)。下面的测试代码断言“包装内容”属性,这意味着视图可以生长成为足以适合自己内部的内容。
(一)
(b)
9.3.4。重叠
翻译完成后,本地化工具可以检查部件的重叠与其他UI小部件。主要,noOverlaps()方法被用来确保你发布的应用程序是没有重叠的UI。生成一个错误报告是否重叠的小部件。例如,在图14,右侧RedView RedSeekBar在中间,左边的RedValue可以用这种方法进行测试。下面的代码片段显示了重叠的测试。
9.3.5。元素的位置
本地化过程变化的UI布局由于翻译,和翻译后的文本可能会影响UI元素的大小。因此,一些视图的宽度和高度通常增加从原来的大小。这个尺寸拉伸会导致丢失的观点。出于这个原因,本地化过程应确保所有布局视图位于屏幕的UI设计规定。对于这个问题,testOnScreen使用方法,和一个起源的观点开始寻找指定请求的视图。
此外,isLeftOf和isRightOf方法用于检查UI元素的位置根据现场方向和镜像后的接口暴露缺陷。在实践中,本地化画笔工具按钮图(17日)阿拉伯语,图标应该在右边的文本,如图17 (c),不像错误如图左边17 (b)。
(一)
(b)
(c)
下面的代码片段演示了使用isRightOf方法的验证图标是否放置在文本的正确与否。
9.3.6。偏差
这个测试比较了对齐的RTL对话框到原始视图。检查,以确保如果一组视图是一致的在一个特定的轴在原来的对话框中,他们都在同一轴对齐。检查偏差,提出了下列测试方法。
测试用例断言的观点是右对齐,也就是说,他们的右边是一样的的位置。为了验证视图对齐布局像我们预期的那样,L10n工具应该实现一个assertRightAligned()方法。为左对齐测试,L10n工具需要实现一个测试用例维护视图左对齐。
也是必要的本地化工具检查正确的立场观点之前和之后的镜像。因此,assertBottomAligned()方法引入到断言两个视图底部对齐,和他们的底边是相同的之前和之后的镜像位置。此外,介绍了测试用例验证所有视图顶部对齐镜像之前镜像不调整之后。图18说明工具对话框的失调。
(一)
(b)
如果发现任何不满意,应调整UI元素。那么这些测试用例应该检查每个活动,对话框和其他用户界面布局。
9.3.7。文本方向
文本的方向成为一个关键问题在应用阿拉伯语的文本,从RTL读写。因此,所有用户界面元素都应该支持阿拉伯语;文本对齐方式和文本阅读顺序从RTL。
每个视图的文本方向如文本视图、编辑文本,按钮,弹出菜单测试。执行的测试方法可以为每个用户视图提供阿拉伯语的文本字符串。断言方法用于比较预期的文本方向测试的结果到实际的文本方向与它抛出异常运行后如果不满足条件,如下面代码片段所示。
9.3.8。字符串截断验证
测试UI是否足够灵活,能够适应一些语言字体和字符串长度,下面的方法用于验证一个视图显示正确,因为它是XML布局文件中定义,它符合UI没有截断。测试用例检查省略计算每行文本视图,不仅对最后一行。如果省略数大于零,方法返回true。图19显示了一个与截断文本工具对话框,因为UI小部件提供的空间不够大。
9.3.9。键盘布局
一个键盘允许用户输入文本。它不是一个GUI方面;相反,它是一个操作系统方面。有些操作系统提供了一个框架,允许用户创建屏幕键盘输入方法,如虚拟键盘。然而,RTL语言的符号输入电网必须反映和右对齐。在RTL UI,光标总是被放置到正确的默认。测试是通过使用键盘键将数据输入UI视图,如一个编辑文本或文本视图。输入的值存储到数据存储,然后显示到UI小部件或与实际文本如下所示。
必须考虑以下要求的测试方法:(我)阿拉伯语语言包。(2)字体文件支持的阿拉伯语。(3)友好编码的字符串(utf - 8)。
9.4。功能测试
本地化功能测试主要关注是否本地化阶段引入问题,验证定位后所有功能正常工作。因此,所有的功能测试用例执行本地化过程之后,下面的代码片段是一个功能测试用例。这个测试用例是用来检查颜色选择器对话框,检查改变颜色的功能。
10。结论
摘要L10n测试自动化方法是引入本地化一个Android应用程序与丰富的GUI阿拉伯语语言和文化。阿拉伯语版本的原始产品看起来好像已经在阿拉伯语用户的开发。传统的测试方法可以应用于任何软件本地化从英语到其它拉丁系语言。另一方面,移动应用程序的本地化bidi语言尤其具有挑战性的测试。bidi语言软件需要精明的测试方法和努力确保有效的测试。阿拉伯语语言需要镜像意识以适应RTL的阅读秩序,为应用程序提供一个完美的从右到左的外观和感觉。本地化bidi语言不仅影响文本的布局和UI元素也是肖像。拟议的方法确保UI元素和图标正确反映在RTL地区通信方向。此外,该方法完全和完全认为所有bidi语言问题为了有效地揭示所有常见的本地化问题在应用程序的设计。方法确保本地化软件满足当地用户的期望的语言特性,传统意义上的和用户体验。从本质上讲,自动化方法可以节省时间和精力,提高准确性和重复性进行本地化测试和维护应用程序的可用性和可移植性。此外,它会导致明显降低回归测试的努力和时间。 Finally, the approach’s principles can easily be applied to any smartphone platform.
相互竞争的利益
作者宣称没有利益冲突。