概述

背单词APP是非常受大学生青睐的手机应用,但它的发展尚未成熟,存在一些缺陷。我们决定深入地分析一组典型的背单词APP:百词斩(A产品)、扇贝单词(B产品),寻找当前背单词APP中的提升空间。下面给出了预估项目完成时间表。

项目 内容说明 预估耗时(分钟) 实际耗时(分钟)
Planning 1.计划 10 5
· Estimate · 估计这个任务需要多少时间 10 5
Testing Design 2.测试设计 160 120
· Analysis · 需求和测试需求分析 40+80 30+30
· Design Test Cases · 设计测试用例 40 60
Testing Environment 3.搭建测试环境(安装测试工具、管理工具等相关运行和支撑软件) 60 30
Testing Implementation 4.测试实施 300 480
· Test · 执行测试 300 480
Reporting 5.报告 100 60
· Test Report · 测试报告 40 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 60 30
合计 630 695

模块划分

百词斩和扇贝单词都是功能齐全、十分综合的APP。他们的模块划分图形如下图:


接下来,我们将对它们四个主要的共有的模块——背词模块学习模块词库模块交际模块,进行测试。

我所负责的模块是学习模块,学习模块的作用是帮助用户通过视频、阅读文章的方式进行学习。这里要将它与“背词模块”加以区分。背词模块是用户使用APP的主体部分,侧重点在按照计划学习单词、背词、打卡。学习模块强调的是APP向用户提供其他材料,使用背单词以外的方式使用户达到学习的目的。

百词斩的学习模块包括

  1. 单词TV(专题)——拥有两个专题(大话词源、斩家情景剧),以视频的形式呈现给用户。视频可以自动连播,用户还可以进行评论
  2. 单词TV(已学单词)——将用户之前学习的单词以视频讲解的形式提供给用户
  3. 单词TV(发现)——将用户尚未学习的单词以视频讲解的形式提供给用户
  4. 单词电台(单词音频)——将用户已学单词以音频讲解的形式提供给用户,可以连播
  5. 单词电台(阅读计划音频)——将一些经典的英语名著以文字和朗读的形式呈现给用户
  6. 单词电台(真题音频)——给用户提供了重要英语考试的听力材料
  7. 爱阅读——根据用户制定的计划和专辑,给用户提供阅读材料,以文字和朗读的形式呈现给用户。用户可以在阅读材料中做笔记、分享
  8. 单词量测试——为用户提供一系列单词选择题,以测试用户的词汇量
  9. 小讲堂——包含一系列学习向的文章
  10. 兴趣圈——相当于一个用户论坛,按照不同主题划分区域,用户可以发帖交流

扇贝单词的学习模块包括

  1. 用短语背单词——用户选择一本教材,然后使用短语的形式学习这些单词
  2. 用视频学单词——以情景剧的形式展现一段视频材料,帮助用户学单词,可以评论、分享
  3. 扇贝自习室——由扇贝单词发布一系列学习有关的话题,用户可以在下方评论
  4. 扇贝同桌——为用户匹配到一个有相同需求的用户,相互监督学习
  5. 扇贝小组——相当于一个论坛,以用户相互监督学习为目的
  6. 每日一句——每天提供一个美句供用户欣赏、学习
  7. 扇贝精选——包含一系列学习向的文章
  8. 单词量测试——为用户提供一系列单词选择题,以测试用户的词汇量
  9. 小游戏——通过小游戏的形式帮助用户学习单词

我们发现,很多功能在这两个APP中,虽然有不同的名称,但是却有相同的功能。如:单词TV←→用视频学单词、小讲堂←→扇贝精选、扇贝小组←→兴趣圈。接下来的测试用例设计中,我们会重视这些共同拥有的功能,做一些对比性功能测试。

测试用例的设计

首先列出两个APP总共40个测试用例。(我们使用了禅道9.8.3作为测试管理工具)




关于禅道的使用方法(如测试用例的导出),可以在彩民的这篇文章中看到。

对于被测试的绝大部分功能,由于非常简单,在这里不再赘述。下面我只对几个特别的测试用例设计进行说明。

单词电台(百词斩)

百词斩的“单词电台”具有繁杂的功能,它将用户已学单词以音频讲解的形式提供给用户,并且支持连播。用户可以从头开始收听单词电台,这样,他将依次听到他之前所学习的所有单词。他也可以点选一个特定的单词去收听。那么我们就有了一个等价类划分。

从头播放意味着用户进入单词电台后,直接点击播放按钮。播放结尾意味着,用户直接选择单词电台的结尾进行播放。

从头播放

这是一种默认的播放方式(但不一定最实用),APP将首先播放片头,然后顺序播放单词列表中的所有单词,然后播放片尾,最后循环回到第一个单词。(之后的循环不会再播放片头)

点选单词播放

这种方式最适合用户学习。首先APP会播放用户点选的单词,然后顺序播放单词列表中的所有单词,然后播放片尾,最后循环回到第一个单词。(之后的循环不会再播放片头)

这个等价类具有两个边界值:用户点选单词列表第一个单词、用户点选单词列表最后一个单词。

在我们的测试用例下,“单词电台”没有表现出缺陷。

播放结尾

这种方式仅仅会在测试中用到(一般用户不会播放结尾)。此时,APP会播放片尾,然后循环回到第一个单词,顺序播放单词列表中的所有单词,如此往复。(依然不会播放片头)

用短语背单词(扇贝单词)


扇贝单词的“用短语背单词”有一系列复杂的事件流,在这里我们选用了场景法进行测试。
经过归纳总结,我们画出了场景事件流,它看起来像是这样的:

注意到结点①③④⑥均为分支节点,于是环复杂度为5,且不存在相互依赖的事件流,于是我们设计了五个测试用例。
用例一:0,1,3,4,5,4,3,0
用例二:0,1,2,1,3,0
用例三:0,1,3,4,6,5,4,3,0
用例四:0,1,3,4,6,5,4,5,4,3,0
用例五:0,1,3,4,6,5,4,3,0,1,2,1,3,0
它们是一组相互独立的测试用例。并且他们均通过了测试

发现的缺陷

在学习模块中,百词斩和扇贝单词的表现均十分良好,大部分功能都很好地实现了。

美中不足的是,在百词斩的“爱阅读”功能中,出现了一些小缺陷。

“爱阅读”的专辑播放功能,允许用户按照顺序,自动播放一个专辑中的所有文章。但是在播放时,出现了专辑中不同文章的播放音量大小不统一的问题。如,在专辑“爱之初体验(高级)”中,《独立日激情演讲》音量很高,而同属于这一专辑的《张国荣出任CASH形象大使英文演讲》的音量就很低。用户尽管选择了自动连播,但却要自己调整每一篇文章的音量。APP没有做到预先调整每一篇材料的音量,这是一个影响用户体验的BUG。

可用性测试

我们还对邀请了亲朋好友(总共13位,分为4批)进行了“百词斩”的可用性测试。我们总共设计了四个场景,被测用户按照要求依次完成每个场景中的任务,用户一边执行任务,一边说出自己的感受。在每个场景结束后,我们会询问用户是否遇到产品缺陷。如果用户说不出来,我们还会告诉用户之前几批被测用户遇见的问题,以激发用户的思维。

具体的场景设计、测试过程、测试结果可以在毕博平台上的“可用性测试报告”上找到。

总结

关于两个APP

百词斩和扇贝单词在功能方面,可以说是非常全面。它们主要的缺点就在于,功能还不够“精”。上文所说的“爱阅读”的缺陷算一个。在别的模块中,还发现了更多的BUG。例如,在交际模块的“单词PK”功能中,好友PK提醒过于隐蔽,导致用户很难发现自己被人邀请PK。更多的缺陷还可以在levey的博客西瓜的博客、以及彩民的博客中进一步了解。

百词斩的“单词TV”和扇贝单词的“看视频学单词”都为用户提供了看视频进行学习的途径。但是百词斩的视频数量更多,而且有着统一的分类(大话词源、斩家情景剧),而扇贝单词就显得很杂乱,仅仅有一个“最新发布”的入口,里面放着寥寥无几的视频材料,这一点,百词斩更有竞争力。

左图是百词斩“单词TV”,右图是扇贝单词“看视频学单词”。

百词斩的“小讲堂”和扇贝单词的“扇贝精选”,为用户一系列学习向的文章。就功能而言,他们不分伯仲。就界面而言,百词斩明显在色调、界面分布、字体大小上多下了一些功夫。

由此可见,相同的功能,百词斩比扇贝单词制作地更加精美。百词斩把这么一个背单词APP,做出了一款交际APP的感觉;而扇贝单词只是一个专业的背单词APP,它尝试做出一些扩展功能,但是效果并不好。

关于我们

最初,我们拿到这个任务时,一致认为:“百词斩和扇贝单词这两个APP使用这么广泛,怎么会有BUG呢?要是有BUG也早就被其他用户发现,然后已经修复了。”后来,随着一个又一个测试的推进,大家还是发现了很多BUG。这就告诉我们,一个APP,对于它的测试是没有止尽的,它被使用的次数越多,就会暴露出越多的BUG。

这次的任务主要以测试为主,小组所有成员平摊了所有任务,因为不存在编码,所以大家的工作量没有显著的区别。个人贡献分:25%

基于百词斩和扇贝单词的背单词APP软件测试的更多相关文章

  1. 有道单词导入 有道单词 生词本 批量导入 添加 有道单词XML 背单词

        本程序 主要功能: 对有道生词实现批量导入功能   生成有道单词XML的功能,实现快速导入 有了本程序后就可以批量添加生词. 有道生词本 XML模板 分析 word   为单词,可以为一个单词 ...

  2. 第六周小组作业 软件测试与评估:百词斩VS扇贝单词

    被测产品说明: A:百词斩 B:扇贝单词 一.基本任务 1.测试进度表 | 项目 | 内容说明 | 预估耗时(分钟) | 实际耗时 (分钟) | | -------------- | -------- ...

  3. 做中学(Learning by Doing)之背单词-扇贝网推荐

    做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...

  4. 使用Excel背单词-高效-简单

    背单词是一个很纠结的事,想必那些走在留学路上的很多人都被英语这一关卡住了,这里,笔者就聊聊,不讲背单词的方法,只提供使用vb开发的产品和使用方法,有问题欢迎讨论. 简介:使用excel背单词,有一些人 ...

  5. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  6. BZOJ4567[Scoi2016]背单词

    4567: [Scoi2016]背单词 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 304 Solved: 114 [Submit][Status] ...

  7. 《我爱背单词》 Alpha版 发布说明

    ——发布地址(baidu网盘) http://pan.baidu.com/s/15omtB ——简介  <我爱背单词>是一款英语单词记忆和管理辅助软件,旨在帮助广大考生在短期内攻克GRE. ...

  8. [No000057]一个人默默背单词,小心被传染哦

    不日凛冬将至,全国各地,已有多名少侠因季节变化,出现了不同程度的四肢不勤.bd不分的症状.具体表现为—— 包大人在此高能预警:不想背单词,有可能你已经被传染了. 好好的,怎么突然不想背单词了 哈佛医学 ...

  9. [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?

    由于英语对于一个程序员来说,重要性你懂得.因此我会开始逐渐在博客上加入英语的一些东西. 听说不背单词,考英语会是这种下场 在中国, 「学英语」大抵遵循着这样一条 罗蒙诺索夫质量守恒定律 因为英语学着学 ...

随机推荐

  1. mockito 异常Reason: java.io.IOException: invalid constant type: 18

    原因: mockito内部使用的javassit的版本不一致导致的,修改为一直版本即可. 异常内容: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jd ...

  2. mysql 定时计划任务 wish 按照id分组定时循环启动

    SELECT count(*) FROM wish_sellers_in;UPDATE  wish_sellers_in  SET act_status =0 WHERE  id >=1 AND ...

  3. vs2015 工具栏添加控件

    就是“添加”——“组件(N)”,然后把需要的代码写进去,但是工具栏里面却显示不出来. 结果是得重启系统才行,重启之后的确显示在工具栏显示出来了,但是拖到设计界面的时候还会出现“未能加载工具箱项xxx, ...

  4. 什么是P2P流标

    1.被动流标:在规定的投标时间内,一般是7天,没有凑齐这笔借款,就流标了: 2.主动流标:借款人或平台原因,将为投满的标下架,做流标处理 介绍: 对于投资者来说,在投资P2P理财的时候,可能会遇到过流 ...

  5. Fiddler基础使用三之请求过滤

    在我们抓包的时候如果不设置过滤,那么所有操作中的请求都会被捕获下来,如果我们只想查看指定或者某些请求信息,那么太多的session会给我们造成困扰,增加查找难度.所以我们需要设置过滤区域.fiddle ...

  6. JS创建一个数组1.求和 2.求平均值 3.最大值 4.最小值 5.数组逆序 6.数组去重 0.退出

    rs = require("readline-sync"); let arr = []; console.log("请输入数组的长度:"); let arr_l ...

  7. async:false;渲染阻塞

    当我想让一个节点show()完以后再ajax获取数据进行操作: $("#outerdiv2").show(); $.ajax({}): 如果此时ajax里设置了async:fals ...

  8. ansible批量自动安装LNMP

  9. EasyUIDataGrid去掉垂直滚动条

    打开jquery.easyui.min.js 搜索到var _64f=wrap.width();这行代码 修改为ar _64f=wrap.width()+20;即可 另外在前台datagrid的hei ...

  10. Dubbo 的配置主要分为三大类

    服务发现.服务治理和性能调优:这三类配置不是独立存在的,而是贯穿在所有配置项中的,比如dubbo:service 标签中的interface 是服务发现类, timeout是性能调优类, mock 是 ...