从用户数据到测试用例——语音测试改良记

村长写在前面的话:李雪,地图测试组中写得了代码,打不过流氓,跳的了年会热舞,也能静心种花,最关键的是还能做一手好菜的“女金刚”,承蒙兄弟姐妹们抬爱,赠予花名“村长”!现负责腾讯车联网的业务测试工作,在测试管理、测试分析上有将近五年的积累。

车联ROM系统是搭载腾讯TAS智能车载系统。系统搭载在路畅\华阳合作伙伴硬件平台上,实现了车机联网,实现了智能语音、网络音乐、实时路况、在线升级等特有功能,并且延伸了腾讯的社交基因,微信和QQ社交能力在乘驾上得以延伸。

村长下面讲的故事,就是围绕车联ROM中智能语音APP展开,请各位看官轻拍~

一、村长为啥干

作为一名腾讯移动客户端测试工程师。跟其他的测试同学一样,从需求、计划、用例设计评审、执行、报告、发布按部就班的进行了自己本职的工作,比如说,车联ROM中语音APP的测试。但是有一天村长回头看自己的语音APP的测试用例,发现测试用例越来越多,测试回归验证时间周期不断加长,同时,仍旧有用户反馈的漏侧等各种问题。 她不禁思考:测试用例真的“足够好”么?真的可以反应真实用户的使用场景么?回归测试时真的需要去运行如此多的测试用例么? 有了这样的疑问和困惑,她去查找很多资料,突然一次例会上交流让她有了新灵感:产品同学对于新功能都会加上埋点以看到用户对新功能的使用反馈,进而对产品设计进行调整。 测试:为何不从用户使用角度来对用例进行划分优化呢?

二、村长想怎么干

在腾讯,倡导的理念就是“一切以用户的价值为依归”。那么在以用户价值为导向的理念下,产品、运营都是从用户使用角度出发,为何测试不能也从用户数据上做文章呢? 下一个问题?这个文章怎么做?怎么指导测试用例?那就需要从用户数据入手,抓住用户主要使用场景,进而优化测试策略,最终又通过版本发布反向验证方式的可行性。 基础思路:基础数据提取——基础数据清洗——基础数据整合——用例修改——版本发布&用户反馈总结

三、村长实际操作

说干就干,说着村长就撸袖子挽裤腿的去干活了。

步骤1:基础数据提取 村长先着手查看运营数据。看到运营数据后,村长脸上写了大大的“蒙圈”。运营数据那么多,具体要从哪些数据里来提取所需信息呢?下面先看看用户数据基本有哪些:

结合项目特点:村长选取了所有事件&点击流作为分析基础数据; 为什么选取这两个基础数据: 1. 抓住主要工作流,这里就是主要是用户输入流,保证80%以上的场景可覆盖; 2. 其他20%事件可以作为补充用例,可以分不同版本&情况来覆盖; 最终语音APP选取出来的数据字段是这样的,包含了日期、id、用户名、版本号、用户语音识别文本、语音调用应用类型等等。 基础数据ready,怎么分析呢?

步骤2:基础数据清洗 目的:清除无用数据,为下一步数据整合提供输入; 村长拿到基础数据后,哭的心都有了,数据不但多,而且杂,中间夹杂了不少无效数据,也就是“脏数据”。这些数据肯定不能直接整合使用的。那么哪些是不需要的“脏数据”?怎么清洗“脏数据”呢? 通过观察,语音APP中上报字段中,先去除关键字段为空的数据,表现为下面几个字段: 1.SessionID为NULL; 2. SpeechID为NULL; 3. Speechtext为NULL; 在拿到的数据样本中,工具语音会话4499次,脏数据共占比941次,其中840次是操作了语音但是实际并未声音输入,可能就是用户误操作的行为。同时意外发现埋点上报一个BUG,即sessionID=NULL&speechID =NULL,但是speechtext非空(QA中彩蛋,发现这个BUG后,村长默默的乐了)。 最终,剩余的3558次语音会话,就是有效样本数据。Binggo~~有了阶段性成果~继续加油~

步骤3:基础数据整合 目的:按照所需处理格式,对基础数据进行重新整合,分类整理。 村长拿到基础数据清洗后结果,问题又来了:怎么归纳整理成修改用例的输入?归纳整理的结果是什么样的? 答案就是:结合需求开搞。啊呸~说的容易,也不举个例子。呃,各位村民,别急,村长慢慢给你说。 话说从软件研发起,就有传说中的需求,也就是指导开发实现的文档。这个文档说明了软件实现的功能点、软件性能指标等方方面面。也就是有了这么一个神圣的文档,测试同学就有据可依去跟开发GG直面PK,是否完成需求的实现等等。 语音APP也有语音需求,如语音需求总表,详细说明了需要调用的APP,具体的每个话术、每个结果状态等等。 在村长的项目中,语音有几方面的话术:导航\音乐\电话\节目等等。每个主功能上又会对应具体的话术,如“打电话给张三”\“打电话给张三的联通号码”等等详细话术的要求。村长灵机一动,根据每个类型的的话术进行统计,从统计结果上看,导航类的语音请求最多,详细的语料展示如下。

拿到统计结果,村长粗略核对了下产品详细需求,发现39类导航语音话术中,实际用户使用的只有7种。这7种语料中,“我要去\我想去”+“导航到XXX”占比最高,也就是用户在发起路线规划的需求是最高的。于此同时,可以看出用户直接说出地名占比也较高。产品层面分析:发起语音时,产品页面会有文字等方面的提示,也就是这些语料占比高的原因。另一些问题:沿途查找\导航过程中查询时间\路况等方面,均未有用户使用。 分析到这里,村长在想下一步,怎么来指导用例的修改呢?是全面替换原有用例么?

步骤4:用例修改 目的:使用基础数据分析结果,来指导测试用例的编写&修改,最终达到保证用户场景80%的使用。 上文提到了,已经得到了基础统计结果&分析结果。村民一般反馈,那直接用这些数据去修改测试用例得了,还墨迹啥。不,其实还是需要对用例区别对待。不可以全部只按照用户反馈修改,不可以不参考用户反馈修改。这句话很拗口,说白了就是:需要对原有用例按照用户实际路径进行修改,并且修改优先级。在语音APP修改时,按照测程进行重新规划。 原来case,因为不清楚用户实际使用频次,所以所有的语料都必须全量覆盖测试。新case,修改一部分case,并且重新按照用户使用频次标注优先级,在测程中得以优化。 如下语音唤起导航case:原本P1-case:175条。新修改P1-case:31条。同时将原本的“回家\去公司\查找XX地点\放大缩小地图”类case归类为P4,即统计中用户并未使用过的语料。 图1. 修改前部分case优先级

图2. 修改后部分case优先级

步骤5:版本发布&用户反馈 目的:修改后用例,需要在真正版本发布后,对用户反馈进行归纳整理,选出语音模块漏侧case,完善测试用例和场景。 村长就根据分析出结果,修改后的用例,对V2.1.1版本进行语音APP集成测程重新规划,并最终发布以观察效果。具体效果待后续展示。

四、村长实践后效果

村长在实际实践中,对比了V2.1.0&V2.1.1的的case量、测试耗时、漏侧等相关数据,结果如下图所示,对case量进行调整,case级别进行调整后,实际上用户反馈漏侧也没有任何变化。看来这么干是可行的。

五、村长后续的打算

做完语音测试用例优化后,村长想从后续几个方面去优化推广: 打算1:统计数据,从运营平台上自动化获取; 打算2:统计数据中,数据整合&数据清洗自动化处理; 打算3:推广到其他测试周期长应用中~ 以上是村长在实际测试中,从用户数据逐步提取关键信息,最终指导测试用例删减的故事,希望大家能够喜欢&提出建议和意见。

原文发布于微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文发表时间:2016-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

2017 年成为 Linux 专家的 4 个热门技能

你需要刷哪些技能? -- Shawn Powers 本文导航 -1、 安全17% -2、 DevOps34% -3、 开发49% -4、 软技能64% 编译自...

34170
来自专栏花叔的专栏

那个工具该不该加功能?

加班写完一个PPT后,跟公司同事叫了个外卖,顺便聊起工具迭代的问题,讨论的焦点是一个叫MPT的工具,我首先介绍一下这个工具 。 其实这是一个公司内部的、由我主导...

29150
来自专栏mukekeheart的iOS之旅

《JavaScript高级程序设计》学习笔记(2)--JS运算符详解

欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。 思维导图 前面对JS的运算符的操作很多细节的东西没有提及,今天给大家分享一张网上找...

38640
来自专栏专知

专知主题链路知识推荐#3——主题模型LDA Gibbs Sampling采样讲解

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

32750
来自专栏互联网数据官iCDO

移动端优化案例分享——有谁不想获得1.3万美金的额外收益呢?

译者:熊兔兔 本文长度为2969字,预估阅读时间5分钟。 鉴于目前市场营销者们面临的问题,已经不是是否要在移动领域进行投资了,而是如何才能拓展相关投资,专栏作家...

32550
来自专栏SDNLAB

混合虚拟化网络,网络性能优化之辩

网络设备在虚拟化后是否依旧可以快速提供良好的性能?这是目前大家最为关注的问题之一。下面就讨论一下传统网络设备和虚拟化后面临的问题以及怎样使用网络设备才能提供实时...

43570
来自专栏腾讯开源的专栏

腾讯开源的使用秘籍,你值得拥有

腾讯开源经历了5年的发展,越来越多的优秀项目成为开源项目,供广大开发者学习与使用。我们看到,腾讯的工程师们已经被开源的力量唤醒。微信团队开源了绝大部分微信的代码...

49640
来自专栏架构师之路

分层架构,前后端分离有啥坏处?

前文《互联网分层架构,为啥要前后端分离?》详细介绍了前后端分离的缘起,很多朋友在评论中留言,纷纷表示,要往前后端分离架构上转型。 任何脱离业务发展,业务特点的架...

42160
来自专栏BestSDK

Snips推出语音助手SDK,支持离线工作

Snips是一家法国初创公司,其提供的服务主要是为用户建立自定义语音助手。Snips并不使用亚马逊的Alexa语音服务或谷歌助手SDK,而是帮助用户建立自己的语...

68450
来自专栏IT大咖说

腾讯DevOps体系之研发管理那些事儿

内容来源:2018 年 5 月 05 日,腾讯研发管理部CODE平台产品负责人孙晨星在“2018 DevOpsDays Beijing”进行《腾讯DevOps体...

29420

扫码关注云+社区

领取腾讯云代金券