• 测试十年总结


    一 对测试的一点总结

    测试十年,有一大半时间在做手工测试。这么多年的测试工作,测试方法总结起来只有一个:一定的条件下,做一定的操作,验证得到的实际结果与预期结果是否一致。

    测试设计得好不好,在于条件和操作的组合考虑的是否完全(也就是覆盖率高不高。测试方法和经验、对业务的理解、对系统的了解程度、对程序内部实现的了解程度都会影响测试覆盖率)

    测试执行得好不好,在于两点。

    一是实际结果与预期结果比对是否完全。(漏测很多时候不是测试人员没有执行那条用例,而是执行了却某一点预期结果未验证,或不知道还有这个点需要验证。)

    二是执行方式的选择,缩短时间,提高效率。(手工/自动化协助手工/纯自动化/工具的选择等等)

     

    举个栗子:

    比如用户下单虚拟产品支付成功。除了提示支付成功,前端要验证用户账单有支付记录,订单里有订单记录且账单和订单各字段信息都正确,产品权限开通,权限正确。 后端验证支付列表、订单列表、产品权限新增记录且各字段正确。数据库要验证订单、支付信息、用户信息、用户权限的数据正确性。考虑是否涉及其他的功能和系统验证。实际上工作中大部分测试时间都花在验证实际结果与预期结果是否一致上面。

     

    二 关于自动化测试

    最近几年开始学自动化测试,有多年手工测试的基础,学习进展挺快的,尤其是接口自动化和功能自动化。

    自动化测试在我看来就是用工具或者脚本一一实现手工测试的步骤和验证。

     

    举个栗子:测登录。
    
    手工测试:打开浏览器,输入登录网址,登录框输入用户名,密码框输入密码,点击登录按钮。验证是否登录成功
    
    自动化测试:打开浏览器,请求登录网址,识别登录框并输入用户名,识别密码框输入密码,识别登录按钮并点击。断言是否登录成功

     

    测单独一个get请求接口
    手工测试:浏览器请求网址,验证响应正确性
    自动化测试:工具发送请求,添加断言验证响应正确性

     

    步骤都一样吧。测试重要的测试思想,手工和自动化都可以实现测试思想所转化出的用例,只是在某些情况下自动化可以提高测试的效率。要根据项目的实际情况来判定用什么方式执行测试效率更高。

      

    自动化测试的分类

    接触的自动化测试大方向上主要包含三大块:

    1 性能测试  必须自动化。

    2 接口功能自动化

    3 ui功能自动化 

    第一项性能测试属于专项测试,工具使用容易但是性能分析和优化深入难。 后面两块都属于功能验证,如果不用自动化也可以测,而且手工测试人员实现起来很容易上手。一个项目用手工还是自动化主要在于测试时间和成本效率的平衡与取舍。实际工作中有很多测半天甚至1个小时的小迭代版本,手工测试很快就完成。要是写脚本也许脚本还没写完,上线时间点都到了。但换一个有几十个接口的项目,手工验证与自动化验证相比自动化效率更高。

     

    项目中应用自动化可行方式

    1 用工具或编写一些脚本协助手工测试

    举个栗子:测问题回复模块需要多条用户提问。
    
    手工测试需要用户1登录,提问;用户2登录,提问。然后老师登录,回复。
    
    用接口工具可调用用户提问的接口,并参数化提问的用户和提问内容发送提问。

    2 实现部分功能的自动化

    举个栗子:支付模块的回归,用脚本实现自动下单过程,自动跳转到支付页面,省去了每次下单的手工点击过程。


    3 全量验证--适合于接口测试、数据测试。可以替代人工抽样验证的不足,提高测试覆盖率。

    举个栗子:
    之前测试的炒股大赛,通过脚本可以验证每个用户当天的收益率是否正确,赛事期间每天盘后清算后跑一次验证。
    
    另一个接口测试项目,通过脚本可以验证全部股票数据的正确性。
    人工验证只能抽样。跑100条数据有2条错误数据,2%的异常,抽样验证出来的概率特别低。

    像这种数据类验证用等价类边界值等都是抽样验证,用自动化实现全量验证,可以提高覆盖率到100%。而且在数据更新后可以执行一次,验证数据更新的正确性。

    测试的效率和覆盖率都有很大的提升,非常适合用自动化。如果遇到这样的项目,不要放过练手的机会。

    有时候全量验证脚本的编写也并非是一步写到位。刚开始可能写了一个协助手工测试的脚本,不断调整添加之后实现了部分功能的自动化,再完善变成了全量验证脚本。 

    谈自动化的学习

    重要的一点:先知其然,而后知其所以然。

    学技术先快速入门使用。实践中再继续深入学习,理解原理。 就像新人学做菜,跟着教程先买好材料配好菜(搭环境),再起油锅下原料还有调料一番煎炸炖煮出锅(实践),学一步做一步(学一点代码敲一点)。味道好坏不提,总归知道如何做一道菜了。如果先学菜系理论,营养学(原理 理论)等等,可能兴趣耗尽都还是不会做菜。

    还有注意不要陷入找资料的漩涡。早期我也浪费了大量的时间找资料,搜哪个工具更好。其实没有好不好,对某一个专项测试而言,会一种工具另一种很快就能上手,一通百通。

     

     我的学习记录:

    2008-2015  接触各种项目:手机测试、web测试、报表测试、接口测试、数据库迁移测试各种项目都做过,用的最多的是sql。

    2016至今 学了fiddler  Jmeter postman  python selenium。也是在这个时间点之后同步在博客园写主妇笔记的博客。

    会的工具就这几个,但是每一个都在项目中有实际应用。学一种工具,就要想办法在项目中应用起来。比如之前一直用jmeter做接口测试,学了postman之后再做接口测试就用postman,其实除了界面功能都差不多。在学习python之后,便用python+requests实现接口测试了。当会使用多种方式实现之后,你会慢慢领悟到什么样的项目适合用什么样的工具。只验证接口正确性的用jmeter和postman方便,如果接口数据还要做复杂的处理再验证的则更适合python。

    工具不用学多深再用,我经常说excel我们用的功能只有它全部功能的很小一部分吧。这些自动化测试工具都是,不用学得多精多全才去用。会一点用一点,下次有项目再用一点,越用越深入。

     

    the end!

     

  • 相关阅读:
    让PHP更快的提供文件下载
    thinkphp5接入QQ第三方登录
    tp5隐藏index.php
    thinkphp5 表达式
    后台无限级分类添加的实现方式
    PHP系统左侧菜单栏的管理与实现
    mongoDB基本命令
    Java基础-反射和注解
    Java基础-多线程
    Java基础-网络编程
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/10013714.html
Copyright © 2020-2023  润新知