测试的那些事
01
概述
测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有缺陷(Bug),测试软件是否具有稳定性(Robustness)、安全性、易操作性等性能,写出相应的测试规范和测试用例的专门工作人员。简而言之,测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。
按其级别和职位的不同,可分为三类:
高级软件测试工程师,熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够对可能出现的问题进行分析评估;
中级软件测试工程师,编写软件测试方案、测试文档,与项目组一起制定软件测试阶段的工作计划,能够在项目运行中合理利用测试工具完成测试任务;
初级软件测试工程师,其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷。
思考
02
测试和开发的爱恨情仇
对话场景
测试:这个功能有bug。
开发:是不是你点错了?
测试:怎么可能是我点错了....
开发:肯定不会有问题的,我本地开发环境都点过了的
....
开发:测试净找麻烦,用户跟本不可能像你们那样使用
测试:问题总是会在看似极端的条件下产生,用户总是会不经意触碰到看似极端的,不可能出现的条件
开发:测试花在异常情况下的精力比测试主流程还多,不知道轻重缓急
测试:开发从来不考虑测试的感受,连测都不测就扔给我们
开发:我都测了,还要测试人员干什么
测试:这么明显的问题你们都不测一下,把我们测试当垃圾桶啊
……
开发和测试的关系
其实
测试和开发拥有同一个目的:让软件更完美。
测试和开发的关系,是一个问题的两面,应该是相辅相成和平共处的。
测试不是为了挑刺儿,他提出的问题也不针对生产软件的开发人员,而仅仅是在努力让开发人员的产出物看起来更好用。只要开发不将测试提Bug这个行为看成针对个人的行为,一切就有了美好的前提。
否定软件,并不是否定开发软件的人。这是开发和测试都需要明确的一个原则和前提。
还有的人认为开发和测试之关系类似皮与毛,皮之不存毛将焉附?
流程与标准
相互抱怨
开发根本不看我们的测试用例,评审邮件从来就不回复
我们一报Bug,开发就说用户根本不可能这么用,还说不知道我们怎么会这么测
送测单里根本不写测试范围或者寥寥几句跟没写一样
开发调整设计从来也不告诉我们
为什么产品经理和UI只和开发讨论需求变更?
为什么发布计划里不给测试预留测试时间?
为什么开发写完代码测都不测就扔给我们?
为什么客户那里发现了问题老问是谁测的?为什么没测出来?
测试老是一声不吭就把Bug优先级设置为Major
测试总是把大量时间花在用户根本不可能用到的功能上
测试分不清哪些什么是重点,你给他说他还老是一堆道理这了那了
测试提的Bug,现象描述也不准确,重现步骤也没有,有的根本就不知道是不是误操作
测试老来打断我,一会儿叫一下一会儿叫一下,根本没办法专注开发
jira上的Bug重复率太高,一个问题提N遍,难道就不能合并一下?
测试发现Bug,一声招呼都不打就直接告诉老板了,搞得我很被动
测试就是专门挑刺儿的,有劲不往正地儿使,你倒是测测用户常用的功能啊
那么简单的Bug都能流出到用户那里,真不知道测试怎么测的
为什么开发写完代码测都不测就扔给我们?
内心独白
这个问题普遍存在,它反映出的是程序员和测试人员的工作边界难以界定的矛盾。
开发:我都测一遍,还要你们测试做什么?
测试:你测都不测,冒烟都过不了,有没有责任心?
开发:要我写测试用例,搭各种环境,遍历各种正常、异常逻辑,我还有没有时间写代码了?
测试:我们测试是垃圾桶吗,什么烂玩意儿都直接扔给我们,我们的时间就那么不值钱?
开发:测试本来就是干这个的,你不测谁测?
………
如何解决
如何创造性的发现适合团队的方法来让大家顺畅地协同工作,比标准、制度更重要,这往往依赖于技术管理者的能力和团队成员的意识。没有普适的方法,只有适合这个组织的、此时此地的策略,在战斗中摸索出最适合当下的道路。至于像给测试预留多长的测试周期、调整设计要不要通知测试、需求调整要不要测试参与等问题,合理的流程和标准可以起到很大的辅助作用,技术领导者只要依据合理的制度,引导大家有效参与,就可以化解。
资源
测试:别动我们测试的服务器,你们自己搭一个!
开发:我们没环境,不用你们的用谁的?
测试:谁把我们的测试手机拿走了?你们申请一个嘛,老来占我们设备。
开发:谁在用我们的账号?招呼都不打!我要用,赶紧退出来!
建议
服务器环境问题,尽快上报领导
测试机 贡献出自己的机器
态度
场景一
测试MM对阿猿说:发现了一个Bug。
阿猿矢口否认:不可能,绝对不可能!
测试:真的有Bug,你过来看一下!
开发:我都不用看,在我这儿好好儿的。
测试:你来看一下嘛……
开发:看什么看,肯定你环境问题,动什么东西了吗?重启了吗?
场景二
测试MM想在jira上提个Bug,先在QQ上对阿猿沟通一下
测试:有个Bug,你过来看下?
开发:忙着呢,焦头烂额的。
测试:一分钟都用不了,你来看下吧。
开发:思路一打断就不好恢复了,等会儿!
测试:你不看我提到jira上了啊。
开发:随便,你不就是爱提Bug嘛。
场景三
测试MM呼叫阿猿:阿猿阿猿,程序又崩溃了,快来看看!
阿猿慢腾腾地起身过来,鼠标点几下:看不出来什么问题,你怎么操作的?
测试:这样点一下,那样,这样,……回车……。
开发:重现不了啊,你想办法重现,重现了再叫我,我忙着呢。
测试:………
开发和测试的日常工作中,上面的情景不断上演,这其中有一部分原因来自态度。
我们有时还能听到类似下面的话:
你Bug里的现象描述根本没用
你根本就没理解这个逻辑,给你说不清楚
测试什么都不懂……
你听我的,我让你怎么测你就怎么测
你这种测法儿,再好的软件都经不起你折腾
用户根本不可能这样用,你们整来整去净瞎耽误工夫
一轮都没测完,你们就给老板说可以按期交付没问题?
你们安排计划时根本不考虑测试,三天,三天怎么可能测得完!
讲道理
开发和测试拥有共同的目的:生产高质量软件。具体说,每一个产品、项目、版本都有明确的目标,这些目标是属于开发和测试的,是大家的。我们把共同的目标牢记在心,摆在首位,我们还要想着别人所做的一切,都是针对软件本身,都是在为目标而努力,这样就心平气和多了,就容易从当下的泥沼中超脱出来,求同存异共同前进。
03
移动测试和Web测试
相同点
不同点
APP测试的特殊点
网络种类多
移动端有多种网络:无线网络、2G、3G、4G等,断网、网速较差及网络之间的切换时页面的显示等,这些对于移动端来说很重要。此外,在非wifi下,还需要注意网络使用量问题。
弱网测试
模拟App在网速慢,网络不稳定的情况下。
中断测试
移动端有一个很重要的问题,一般情况下在使用软件的过程并不是长久的,这中间可能发生很多中断,如电话、短信、通知、断电等等,软件需要特殊处理这些特殊情况。
打开一个页面,或在操作的过程中(点击一个按钮后),将手机屏幕锁住,再打开时,应用能否正常处理。
1. 来电中断: 呼叫中断、被呼叫挂断、通话挂断、通话被挂断
2. 短信中断: 接受短信、查看短信
3. 其他中断: 蓝牙、闹钟、插拔数据线、手机锁定、手机断电、手机问题(系统死机、重启)
屏幕的限制
图片及文字的显示;
上传不同的图片尺寸显示是否正常;
图片和文字一起显示时,效果如何。
操作区域;
web端的应用,一般不会受到屏幕的限制,而且通过鼠标操作更加准确,但是移动端由于屏幕较小,页面及按钮会受到屏幕大小的限制,再加上用户都是通过手指进行操作,一些按钮、选择框 等是否容易点击,多个可点区域位置较近时,点击部位稍微偏移,也许就会造成不同的结果,这种情况下是否可以达到预先的效果。
安装卸载测试
用应用市场安装
用apk文件安装。
完全卸载(用户的profile文件)
部分卸载
升级测试
从上一个版本/上两个版本直接升级到最新版。
全新安装最新版
新版本覆盖旧版本安装
卸载旧版本,安装新版本
卸载新版本,安装新版本
增量更新
强制更新
测试点在于:升级之后,已经登录的用户,是否仍处于登录的姿态,用户的缓冲文件,配置文件是否还在。
软件启动运行
移动端启动、卸载、升级几个特性,这是比较常见、也很重要的,比如升级时用户的数据怎么办,卸载后用户的数据怎么处理,卸载再安装用户登录数据的显示等。
手势
移动端还有一大特性,就是移动端有自己比较简单的手势,用户可以通过手势进行一个操作,比如左滑删除、右滑返回上一个页面、左右滑动图片等,软件需要对这个手势进行适配。
多点触控
事件触发区域
04
测试用例设计方法
白盒测试用例设计方法
黑盒测试用例设计方法
领取专属 10元无门槛券
私享最新 技术干货