小团队如何保证移动互联网产品的质量


张 朝




软件产品质量的基本属性


开发期:

  1. 易理解性
  2. 可扩展性
  3. 可重用性
  4. 可测试性
  5. 可维护性
  6. 可移植性

软件产品质量的基本属性


运行期:

  1. 性能
  2. 安全性
  3. 易用性
  4. 可靠性
  5. 可伸缩性
  6. 互操作性
  7. 鲁棒性



软件质量 = 需求分析质量 && 设计质量 && 编码质量 && 测试质量 

(‘&&’为逻辑中“与”的关系,即任何一项质量都会直接影响软件整体质量,
并且无法通过其他质量方面得到弥补)

移动互联网产品的特点


  1. 需求变化快
  2. 项目周期短
  3. 很难高效的自动化测试
  4. 碎片化
  5. 复杂的网络条件

小团队常见场景


  1. 很少人知道测试是什么
  2. 不知道该测什么
  3. 没有测试的策略和方法
  4. 少的可怜的测试人员
  5. 只有测试在测试

如何摆脱困境


  • 提升质量意识,重视测试,思考适合我们的测试策略与方法。
  • 该规范的要规范,先做再说,磨合出适合我们的流程。
  • 高效的测试,即快又好,而不是两选一。

如何走出软件作坊



  • 测试篇
  • 流程篇
  • 自动化篇

测试篇



  1. 编写测试点而不是测试用例
  2. 设立优先级策略
  3. 使用100个好的应用
  4. 移动应用测试必须走出去
  5. 让产品融入生活
  6. 了解其他岗位的工作

编写测试点而不是测试用例



  • 步骤一:打开登录界面
  • 步骤二:输入用户名和密码
  • 步骤三:点击登录按钮,验证是否登录成功,成功后返回主界面
  1. 正确的用户名不正确的密码登录
  2. 输入用户名和密码后按键盘确认是否能登录
  3. 开始导航后,地图上的当前位置是否跟着移动
测试用例
测试点

设立优先级策略

  • 高优先级
    • 新需求
    • 主要核心功能
    • 数据相关
    • 主要功能路径

  • 低优先级
    • 层次较深的界面
    • 用户使用少的界面
    • ...

  • 基本测试
    • 兼容性
    • ...

使用100个好的应用

No use no sense
好的软件要用,竞争对手的软件也要用

移动应用测试必须走出去




中国拥有世界上最复杂的网络条件
  • 运营商:电信、联通、移动...
  • 移动网络模式:Wifi、4G、3G、2G

让产品融入生活





你经常使用我们自己开发的软件吗?

了解其他岗位的工作





不懂产品的程序员不是好的测试

流程篇



  1. 流程没有银弹
  2. 在需求和设计阶段投入更多时间
  3. 统一应用程序发布出口
  4. 规范错误反馈的周期
  5. 开发人员与测试人员形成闭环
  6. 要坚持

    自动化篇



    1. 尽量避免界面自动化
    2. 自动化从小工具做起
    3. 不要为了自动化去自动化
    4. 关键系统要持续集成

    尽量避免界面的自动化




    你的项目迭代快速吗?
    你的界面变化频繁吗?
    你根本不会写代码?

    OK,那请不要自动化界面测试

    自动化从小工具做起

    
        it('can get mail by id', function(done) {
    		var digest = 
            md5(key + identify + 6177 * 12).toUpperCase();
    		request
    			.get('http://ouhai.maitianer.com/findById.php')
    			.query({proof: digest, id: 6177})
    			.set('Accept', 'application/json')
    			.end(function(error, res) {
    				if (error) return done(error);
    				should.exist(res.body);
    				res.body.should.be.json;
    				res.body.code.should.eql(1);
    				should.exist(res.body.letter);
    				res.body.letter.id.should.eql(6177);
    				done();
    			});
        });
    
    一个简单的接口功能测试







    不要为了自动化而去自动化


    • 请问有什么工具能做性能测试?
    • Robotium好用吗?
    • 听说Athrun不错,我的项目是不是也要用?
    • iOS和Android用什么做自动化?

    我们应该优先考虑我们的测试点是什么?
    自动化与工具让我们的测试变的更高效,而无法提升测试的质量。

    关键系统要持续集成


    • 客户端接口
    • 核心模块


    什么是持续集成?
    当一个产品有多个系统组成时,
    如客户端+服务端接口的模式,
    最好在每次代码提交时,自动化测试服务端接口集成的正确性,
    并汇总报告通知开发者。



    测试的最高境界是什么?

    • 有的人说:完全覆盖的自动化测试
    • 有的人说:测试用例的自动化生成
    • 有的人说:根本不需要测试

    一个小故事(扁鹊三兄弟)

    扁鹊是位名医,他有三个兄弟,某天一人问扁鹊,他的医术和他的几个兄弟相比如何,扁鹊回答说:

    • 老大医术最高,他总是在病人发病前将他治好,所以人们以为他的医术最低。
    • 老二医术一般,他总是在病人发病初将他治好,所以人们认为他的医术比老大高。
    • 老三扁鹊的医术其实最差,他总是在病人病重的时候将他治好,人们认为他连这么重的病都能治,肯定医术最高了。

             

    如果软件产品中的质量问题(bug)是疾病那测试就是扁鹊,

    测试在质量管理中是一种后置的补救措施,

    而质量管理的最终目标是前置的预防(医术最好的老大)。


    测试的最高境界:
    告诉更多人什么是质量,
    从点点滴滴的积累,提升团队整体的产品研发水品

    Thank you!

    小团队如何保证移动互联网产品的质量

    By cosmo2097

    小团队如何保证移动互联网产品的质量

    • 4,774