经常听到有用户反馈,某某输入法好用,很准!某某输入法连“楼脆脆”都敲不出来!等等。这些用户的体验其实都是和输入法的准确率相关的。向大家简单介绍一下我们是如何测试输入法的准确率的。

  一个好的输入法是要能让用户敲什么有什么,感觉“很准”。“很准”的其中一个衡量尺度是我们要讨论的输入准确率。

  用户分类

  那我们怎么测试输入法的准确率呢?回答这个问题,首先要回答另一个更本质的问题:为什么要软件测试?很多人会说是为了保证产品质量。很对。但为什么要保证产品质量呢?是为了用户!

  测试输入法的准确率的目的是为了衡量用户体验,所以首先要对用户群体进行研究。通过对用户行为的研究分析,我们发现输入法的用户有几种不同的分类,例如:

  ● 不同的背景知识(教育、军事、医药等等)

  ● 不同的输入长度(整句输入,单词输入,单字输入等等)

  ● 不同的全简拼习惯(主要是指有的用户习惯用首字母来敲一些常用字,例如“srf”来敲出“输入法”;而另外一些用户更倾向使用完整的拼音)

  ● 不同的方言背景(有些地区的人倾向混用z和zh,有些地区的人倾向混用n和l,等等)

  这些用户都是我们的上帝,我们关心他们的输入体验。但不同的用户分类方法有很多,每个用户个体的也有各自独特的输入习惯,要一一衡量不同的用户是不可行的。这需要测试人员化繁为简,研究主流人群的主流习惯,针对这些主要的行为习惯进行衡量。

  测试方法

  测试输入法的准确率直接的方法是邀请一些特定用户到现场输入一些文本,然后通过问卷反馈得到用户对输入法准确率的满意程度。

  除此之外,我们开发了自动化的工具来模拟这些用户的输入,方便地重现用户输入过程,随时随地得到测试报告。自动化的测试过程简单来说分成以下几个部分,如下图所示。首先是预处理,将原始的中文文本进行分词和注音,并根据不同的用户行为封装成测试用例。然后这些这些测试用例会作为自动化工具的输入,由工具来模拟用户的行为,终得到准确率的测试结果报告。

  那么如何具体覆盖到不同的用户行为的呢?以不同背景知识的用户作为例子,我们尽量使测试文本覆盖不同领域,并保持大小平衡,下图列举了一部分:

  对于准确率的具体计算方法有很多,其中一种用于计算测试文本和输入法实际敲出文本的差距大小,学术上称为编辑距离(Edit Distance),简单的讲是从一个字符串需要经过修改得到另一个字符串的次数。例如,用户想要输入的字符串是“夏雨去西安”,但是在输入法输入“xiayuquxian”的时候却得到“下雨曲线”,那么要如何进行修改呢?

  第一步:下雨曲线 → 夏雨曲线(用“夏”替换“下”)

  第二步:夏雨曲线 → 夏雨去线(用“曲”替换“去”)

  第三步:夏雨去线 → 夏雨去西(用“西”替换“线”)

  第四步:夏雨去西 → 夏雨去西安(在末尾插入“安”)

  这里列举的只是其中一种修改办法,它们之间的编辑距离是4。如果另外一个输入法输入“xiayuquxian”的时候得到“下雨去西安”,这时只需一步修改即可得到想要的“夏雨去西安”

  第一步:下雨去西安 → 夏雨去西安(用“夏”替换“下”)

  编辑距离是1。从这个数值可以看出第二个输入法要优于第一个输入法。

  编辑距离是一种广泛用于计算机科学信息论里的方法,具体的种类和计算方法有很多种