测试人员常被看做bug寻找者,但你曾想过他们实际是如何开展测试的吗?你是否好奇他们究竟都作些什么,以及他们如何在一个典型的技术项目中体现价值?安全
做者将带你经历测试人员的思惟过程,探讨他们测试移动app时的各类考虑。本文的目的在于揭示测试人员的这一思惟过程,并展现他们一般所考虑内容的广度和深度。网络
测试人员须要询问问题app
测试人员的核心能力在于提出有挑战性的相关问题。若是你能将调查、询问技巧和技术、产品的知识结合起来,渐渐地,你也会成为一个好的测试人员。布局
好比,测试人员可能会问:测试
· 这个App应该在什么平台上使用?网站
· 这个App究竟是干什么的?ui
· 若是我这样作,会发生什么状况?this
诸如此类。spa
测试人员能从各类场景中发现问题,它们可能来自对话、设计、文档、用户反馈或者是产品自己。这些可能性太多了……所以,让咱们一探究竟吧!操作系统
从哪里开始测试
理想状况下,测试人员应该掌握所测产品的全部最新细节资料。但事实上这不多见,所以,像其余人同样,测试人员只能将就使用手上有限的资料。但这不是不能测试的借口!测试人员实际上是能够从内部和外部多种不一样的来源处收集信息的。
这个阶段,测试人员能够问这些问题:
· 有哪些信息:规格?项目会议?用户文档?知识渊博的团队成员?有支持论坛或者是公司在线论坛提供帮助?有现存Bug的记录吗?
· 该应用是在什么系统、平台和设备上进行运做和测试?
· 该应用是处理什么类型的数据(好比我的信息、信用卡等等)?
· 该应用有整合外部应用(好比API和数据来源)吗?
· 该应用须要用到特定的移动端网页吗?
· 现有消费者如何评价这个产品?
· 有多少时间可用于测试?
· 测试的优先级和风险是什么?
· 哪些用户使用起来不愉快,为何?
· 如何发布和更新?
基于以上收集的信息,测试人员能够制定测试计划了。一般预算决定测试方法,一天测完,一个星期或一个月测完的方法确定不一样。当你逐渐熟悉团队、工做流程以及这类问题的解决方式时,你就更容易预测结果了。
案例:Facebook App的社会评论
看成为一名测试人员收集信息时,我喜欢选用Facebook App做为案例,由于用户的抱怨处处都是。如下仅仅展现了部分遇到难题的用户在iTunes App Store中发表的评论,网络上还有不少。
iPhone上的Facebook App有不少负面的评论
若是我接受挑战去测试Facebook这个App,我确定会考虑这些反馈,不然就是傻子。
测试人员的创造力
你可能知道这个App本来想作的事,可是它究竟能够作什么事呢?用户其实是如何使用它的?测试人员擅长做为旁观者来思考,尝试不一样的事物,以及不断地询问“若是。。。会怎么样”和“为何”的问题。
好比,移动端的测试人员经常以不一样的用户角色进行测试——固然有点夸张,可是,这种把本身当成不一样用户进行思考、分析和设想的能力对测试是备受启发的。
测试人员可能会设想本身是如下用户:
· 毫无经验;
· 颇有经验;
· 爱好者;
· 黑客;
· 竞争对手。
固然还有更多可选的角色,这主要取决于大家所开发的产品是什么。其实除了角色特色外,其操做行为和工做流程也很重要。人们使用产品方式经常很奇怪,好比:
· 在不该该返回的时候返回了;
· 不耐心并且屡次敲按键;
· 输入错误的数据;
· 不理解该怎么作;
· 可能没有按要求进行设置;
· 可能会自觉得是地认为本身知道该怎作什么(好比一般不阅读说明)。
测试人员遇到这些问题时,也经常发现意料以外的Bug。有时候,这些Bug微不足道,可是更深刻的调查就会发现更严重的问题。
不少问题是能够被预先肯定和测试的。测试移动端App时,如下的问题并不都有关,可是也能够尝试问问:
· 是按设计完成任务的吗?
· 不是按设计完成任务的吗?
· 若是处于一直被使用或者负荷状况下,情况会怎么样?会反应迟钝吗?会崩溃吗?会更新吗?有反馈吗?
· 崩溃报告会反馈到App吗?
· 用户可能有哪些创造性的、逻辑性的或是消极的导航方式?用户相信你的品牌吗?
· 用户的数据安全如何?
· 有可能被中断或是被破解吗?
· 运行到极限时会发生什么情况?
· 会要求打开相关服务吗(如GPS、Wi-Fi)?若是用户打开会怎样?没打开又会怎样?
· 将用户从新引向哪儿?去网页?仍是从网页到App?这会致使问题出现吗?
· 沟经过程和市场反馈是否符合该App的功能、设计和内容?
· 登陆流程是怎样的?能在App上直接登陆仍是要去网页端?
· 登陆是否整合了其余服务,好比用Facebook和Twitter账号登陆?
案例:Run Keeper’s gy Update
RunKeeper,是一款能跟踪你健身活动的App,最新发布的版本里有个“目标设置”的功能,对此我很感兴趣去体验一下,一部分从测试人员的角度来看,更多的是做为一个真心喜欢产品的用户来体验。但我发现了一些问题:
1. 默认单位是英镑,我却想要把公斤做为重量单位;
2. 英镑和公斤间的切换根本很差用;
3. 当设定目标后,会致使展现错误的数据和图表,这让我很迷惑;
4. 因为第3条,我想删除目标,但却根本找不到删除的地方;
5. 为了解决这一问题,我不得不改变的我的体重的值,直到 “目标设置“范围以内,这样目标达到了,就能从新设定目标了;
6. 我会再次尝试添加目标;
正由于以上疑惑,我花了更长的时间把玩它,看能不能找到其余的问题;
如下是一些发现问题的屏幕截图:
该App的最新版本包含了一个新的“目标”部分。设置日期的时候,我发现开始和结束的日期均可以从公元1年开始,另外,为何有两个1年可选(译者注:年份那列从上往下应该显示为“一、二、3”)?
另外一个Bug,是“当前体重”部分的一个拼写错误,当清空数据时会出现拼写错误的“Enter“(应用中用的是Etner),这只是一个小Bug,可是看上去很是不专业。
发现问题没有捷径,你只能反复的慢慢的试用。每一个App及其团队都会面临不少不一样的挑战。可是,测试人员的典型的特色就是:超越极限,作一些很是规的、能够改变周围事物的事情,保持长时间的测试(测试几天、几个星期甚至几月,而不是几分钟就测完),即便明明知道这些事情是不可能发生的。这些也正是能够找到和引出的场景所在。
哪儿有全部的数据?
测试人员喜欢从数据上找问题,这让开发人员有时候很郁闷。事实上,用户或者是软件开发人员在信息流中确实太容易迷惑了,由于可能会出现不少错误,因此基于数据和云的服务更为重要
也许你能够尝试在如下场景中检查出问题:
· 移动设备数据已满;
· 测试人员移除了全部的数据;
· 测试人员删除了App,那数据怎么办?
· 测试人员删除并重装了App,数据怎么办?
· 过多或者过少的内容致使设计和布局的改变;
· 在不一样的时间段和时区使用;
· 数据不一样步;
· 同步被中断;
· 数据更新影响其余的服务(好比网页和云端服务);
· 快速处理数据或是处理大量的数据;
· 使用无效的数据
案例:Soup.me的错误
我试用过的Soup.me, 是一个能够经过地图和颜色将我的Instagram 中的照片进行分类的网页服务,可是我却没用多久。当注册时,它提示我Instagram上的照片不够多,然而个人帐号中明明有500多张照片。我并不清楚问题出在哪儿,也许是数据问题,也许是表现层的问题,也有多是该App出错提示的问题。
另外一个案例:Quicklytics
Quickytics是一个iPad上的网页分析应用。在使用过程当中,尽管我已经从Google Analytics中删除了网站配置,但它仍然存在。这里有一些问题:
· 我已经删除了网站配置,为何仍是有这些信息?
· 左边模块没有解释为何“该操做没法完成”,那么是否是能够改进以免迷惑用户呢?
测试人员也很喜欢测试极限数据下的状况。他们经常是做为典型用户来了解这个App,因此极限下的测试并不会花很长的时间。数据是混乱的,因此测试人员要考虑到软件的用户类型,以及在不一样的数据场景下如何进行测试。
好比,他们可能尝试如下场景:
· 测试用户可输入的极限值;
· 用重复的数据进行测试;
· 在全新无数据的手机里测试;
· 在老手机上测试;
· 预先安装不一样类型的数据;
· 考虑汇集你们的资源来进行测试;
· 让一些测试自动化;
· 用一些超出预期的数据去测试,看它是怎么处理的;
· 分析信息和数据是怎么影响用户体验的;
· 无论用户看到的是否正确,都要一直问问题
建立出错提醒和消息
这里,我不是从设计师的角度来要谈论好的错误消息的设计,而是想从用户或是测试者的角度来看这个问题。出错提醒和消息是测试人员很容易发现问题的地方。
关于错误信息要问的问题:
请考虑如下问题:
· 出错提醒的UI设计能够接受吗?
· 错误信息内容能够理解吗?
· 错误信息是否保持一致?
· 这些错误信息有帮助吗?
· 错误信息内容是否合适?
· 这些错误是否符合惯例和标准?
· 这些错误信息自己是否安全?
· 运行记录和崩溃是否能被用户和开发者得到?
· 是否全部的错误都被测试过?
· 用户处理完错误信息后,将处于什么状态
· 是否在用户应该接受错误信息时,却没有错误信息弹出?
错误信息会影响用户体验。然而,很差或无用的出错提醒无处不在。虽最理想的状态是避免用户遭遇错误信息,但这几乎不可能。出错状况的设计、实现和确承认能与预期相反,可是,测试者每每善于发现意料外的Bug,并能仔细考究是否改进它们。
错误信息的案例
我很是喜欢举iPhone上Facebook App这个例子。这些冗长又晦涩的文字不只仅试图涵盖了许多不一样的场景,并且还可能无故地丢失。
可能以下的消息提示框能够列入反例“名人堂”了?
看看这款iPad上的The Guardian应用,若是我不想“重试”,该怎么办呢?
特定平台上的注意事项
对于任何项目团队成员来讲,了解相关平台的业务、技术和设计上的限制,都是相当重要的。
那么,移动端App的测试人员应该找出哪些平台相关的问题呢?
· 是否遵守了这个特定平台的设计规范?
· 与竞争对手以及行业内的设计相好比何?
· 是否适应外围设备?
· 触摸屏支持手势吗,如:轻拍、双击、长按、拖动、摇动、夹捏、轻拂、滑动?
· 这个App能够被理解吗?
· 当转动设备的方向时,有什么变化?
· 可使用地图和GPS吗?
· 有用户指南吗?
· 电子邮件的工做流程友好吗?
· 经过网络分享时,它运行得流畅吗?是否整合了其余社交应用或网站?
· 当用户正在进行多任务工做,并在不一样App间切换的时候,它还运行正常吗?
· 当用户更新它时,它是否会显示时间进度?
· 默认设置如何?有通过调整吗?
· 使用音效会有不一样吗?
案例:ChimpStats
ChimpStats是iPad上一个查看邮件广告详情的应用。我第一次使用这个应用是处于横屏模式。当我须要输入API密码的时候,我被困住了。我根本不能在水平模式中输入API密码,直到切换成竖屏模式,才输入成功。
链接和中断的问题当链接断断续续或是意外中断时,不少有趣的事情就可能发生了。
你是否尝试过在如下场景中使用App:
· 走动环境下?
· Wi-Fi链接下?
· 没有Wi-Fi的状况下?
· 3G模式下?
· 间歇性地链接?
· 设置为飞行模式?
· 一个电话打进来时?
· 接收到一条信息时?
· 接收到一个提醒通知时?
· 在电量很低甚至自动关机时?
· 被强制更新时?
· 收到一条语音留言时?
这类测试最容易发现错误和Bug。我强烈建议你在这些状况下进行测试(不只仅只是开机、确认它能够正常工做,还要尝试用户使用的整个流程,并在特定的时间间歇内强制链接和中断)。
· 这个App提供了足够多的反馈吗?
· 数据传输为用户所知吗?
· 它会慢慢中止,而后崩溃吗?
· 开启时会发生什么?
· 任务完成中会发生什么?
· 是否可能丢失未保存的操做?
· 你能够忽视通知提醒吗?忽视后会发生什么?
· 你能够对通知提醒作出响应吗?响应后会发生什么?
· 对某些问题,使用错误信息是否恰当?
· 当登陆过时或超时会发生什么
App的维护
想要加快整个测试的过程很简单,只需测试一次就一劳永逸了,对吗?请三思。
此刻我遇到的一个问题是: iPad上的一些App在更新后,不再能下载了。对于一个用户来讲,这是很是使人沮丧的。
可能,这也是开发者控制不了的。谁知道呢?我只知道它对于用户来说是不能用的。我也尝试卸载App,而后重装,但这个问题始终未能解决。我在网上大量的搜索,除了找到一些关于更新操做系统的建议外,没有任何其余解决方式。可能,下次有空时候,我还会再试试看。
关键问题在于:若是一个应用只被测试过一次,且只有一次(或仅在很短的一段时间内测试过),不少问题你都发现不了。一个App自身可能不会发现变化,但外界条件却可让这些问题发生。
当外界环境持续变化时,App又会受到哪些影响呢?让咱们问问本身:
· 我能够下载这个App吗?
· 我能够下载并安装更新吗?
· 更新以后还能使用吗?
· 当不少App处于等待更新状态时,我能更新它吗?
· 系统更新后,它会发生什么?
· 系统未更新,它又会发生什么?
· 它会经过iTunes自动同步下载到其余设备吗?
· 它自动执行任务或测试有意义吗?
· 它会链接到网络服务吗?这会带来什么不一样?
移动端的App每个版本发布后,最好都去测试一下。每次发布新版本时,先定义最高优先级测试,确保其能在各类条件下进行(主要是在主流的平台上)。随着时间的推移,测试能够变得自动化。但请记住,自动化不是灵丹妙药,发现问题,只能经过人的眼睛。
案例:iPhone上的Analytics应用
我使用这个App已经两年了,以前它一直没有什么问题。可是如今,它却显示出我某些网站数据为零(但实际上,不止一我的一个月内访问过个人网站!)。从App Store的评论来看,我不是惟一一个遇到这个问题的人。
另一个案例是iPhone上的Twitter。更新并启动这个App后,我瞬间看到了以下这个提示语:“你的时间线数据显示为空,你至今没有关注任何人” (但我是拥有5年经验的活跃用户)。我担忧了一下子,庆幸的是,这个消息很快就消失,而后加载出历史数据。
测试不是对错判断
咱们讨论了移动测试的一些方面,但这些前提是:带着问题,才能发现问题。
一般,测试被认为是彻底合乎逻辑的、可计划的和可预测的,过程包括:测试脚本和测试计划、经过和失败、正确和错误的反馈。走完这些测试流程就离真相不远了。
固然,若是必要,咱们能够用上述方法进行测试,但这并非测试的目的。咱们不只是为了建立测试用例、发现Bug,更重要的是找到关键的问题,为项目组决定何时发布App提供有价值的信息。而找到那些关键问题的最好方法就是:提问!