测试人员 VS 质量工程师
测试人员:如同出考卷通过考试来考察学生,发现问题。介入时间较晚、被动、单一。
质量工程师:是一个系统的工程,在前期介入,发现学生的不足、进而制定提高的计划和方法。是积极主动的,能产生多方面影响的。
敏捷的测试:以feature为单位,快速介入测试,测试完成后直接发布
测试向前一步:早期介入,看需求、看dev design
如何做需求分析
1、编写需求:
a、了解用户/用户场景:产品真的能满足用户的需求吗?
如何了解用户场景?下面给出一些案例分析:
微博:微博被N多人关注&转发,满足自我实现需求;360:安全需求,开机速度领跑则满足成就感;豆瓣:高级豆粉评论的权威性;Alipay:支付安全需求;Online game:在网络世界中实现自我需求
b、有自己的设计原则:需要经验的累积,站在设计的角度,假设自己就是这个产品的设计者,从自己认为最优的方式去设计产品.
2、产品简单和易用、非二义性:一步到位而不是两步或者三步、避免做重复的事情、批处理任务。设计test case时,也遵循这个理念。
一个不太好的login case:以前淘宝login时,输入正确的用户名和密码,点击登录后会再跳出输入验证码的提示
3、查阅文档:“每个人看到的都是一样的吗?”、“将要”vs“可能、应该、可取”
4、可测试性与可持续性
5、智能
看开发的设计
1、了解开发的设计:工作流、数据流、数据结构
例子:outlook会议,会提前15分钟弹出通知,why?把事件存储到本地,放入queue,时间程序检测queue。
工作流:哪些service在跑;数据流:calendar;数据存储:queue。
了解这些才能发现瓶颈。
2、覆盖不同的用户场景
3、可测试性
4、风险
看代码
1、接口、参数:不需要对代码细节很了解,看关键api,了解结构。系统api,jdk api,自己写的api,由参数导致的问题很多
2、代码检查或审查:评论是轻量级的、目标代码的子集、检查最关键的点/难点
3、调试技巧:通过debug加深对系统的理解,有成就感
第二阶段:改变流程
从bug中学习
1、找到原因:软件的问题最终取决于人。
2、开发和测试都做过程中的一环,改进、提高过程。
3、Bug的“社交网络”
Bug之间也会有联系,过段时间回头来review下这些bug,总能找到一些共同点和联系。
开始行动
1、从小事做起,取得阶段性的成果
2、树立榜样
Q&A环节的一些问答
问:以上的讲述,测试已经插手了部分PD和Dev的事情,测试如何建立自己的权威性?
答:这个有需要时间和技能的累积的,并不是在一无所知的时候就参与这些事情、指手画脚。刚开始的时候可以只起补充作用,补充遗漏的场景;2. 长期与开发合作后,向开发了解产品的设计和实现;3. 提升自己技能后,让开发觉得自己可以帮助减轻开发的工作,开始协同合作。
问:测试做事情动力不足,如何解决
答:1、定义有价值有意义的bug,适当表扬;2、避免做重复的事情;3、根据个人特点,分配不同的人做不同的事
问:在功能测试和自动化测试中保存平衡,并行执行它们
答:1、定期团队分享,分享个人在某个领域很深的理解;2、专注做某一件事情,等过了半年或一年后再去做不同的事情,不提倡所有的事情都去做&权重都一样,有侧重的培养团队成员。