• 【N年测试总结】论提升测试效率和质量的思路


    提升测试效率和测试质量,贯穿测试人员的整个测试职业生涯,也是公司对测试部门的根本要求。如何提高测试效率和质量,基本从两个方面考虑,一个是流程规范的制定和执行,二个是测试技术和工具的使用。从哪方面入手,需要结合公司的具体情况具体分析。

    一、影响测试效率和质量的主要问题及侧重选择

    影响一个公司的测试效率和质量的问题,从公司不同业务发展阶段主要的问题也不一样。
    前期,由于人员少,业务系统少,系统复杂度低,一般测试人员在5人以下,整个产研团队不超过20人,沟通简捷,且以效率为主,不需要繁琐的流程去约束行为,只需要简单的大流程即可,时间紧任务重,这个阶段的主要问题是测试不充分,所以提升效率和质量的思路以测试技术和工具为主。
    中期,随着业务的扩张,系统趋于复杂,人员增多,一般测试人员在7人以上,整个产研团队超过30人,沟通效率下降,这时业务系统已有一定量的用户,这个阶段的主要问题是协同合作和操作不规范,所以提升测试效率和质量的思路则主要以流程规范的制定和执行为主。
    后期,业务系统、人员趋于稳定,经过中期的相对规范的流程制度,团队之间的协同合作已比较熟练,主要问题在于日常维护更新中繁重的重复的工作,所以提升效率和质量的思路以测试技术和工具为主。

    二、流程规范的制定和执行

    流程规范的制定和执行,主要指针对整个产研团队的研发流程体系,解决产研团队协同合作问题。研发流程体系,主要包括需求流程、开发流程、测试流程、上线流程,以及生产问题修复流程。
    需求流程主要解决的是产品方面的问题。整个需求过程大致分为需求调研、需求编写、需求评审、需求排期。
    需求调研 涉及产品人员如何获得需求,一般可以从市场部门、用户、领导等获得最初的需求想法,这部分可以产生需求收集的相关流程规范;
    需求编写 涉及文档的编写规范,是整个需求流程最重要的部分,一份好的需求文档,需要逻辑清晰、易读易懂易维护,结构清晰,有更新记录等,这样才能提高开发、测试人员的理解效率;
    需求评审 涉及需求的理解对齐以及实现可行性,是必不可少的环节;
    需求排期 则需要产品综合考虑现有需求,根据重要紧急度进行排期,可以制定客观的定级标准,再结合主观判断进行排期。
    产品需求是整个流程的根基,根基不稳,后续的研发和测试也都跟着不稳。所以测试效率和质量的提升,依赖产品需求过程的效率和质量提升,从测试的视角,重点关注需求编写这一环节,因为需求文档的质量决定了后续测试用例的编写效率和质量。
    开发流程主要解决的是开发方面的问题。整个开发过程大致分为需求理解、方案设计、代码编写及管理、代码评审、自测及问题修复。开发过程最突出的问题就是开发质量问题,而开发质量问题则体现在提测后问题的多少。开发内部过程相对复杂,开发人员有其自身的局限性,比如在某段时间,既要开发新需求,又要解决生产问题,还要支持测试,频繁的任务切换导致编码思路不连续,压力也相对较大,高质量的代码确实需要比较突出的个人能力。而流程规范只能从一定程度上调整开发的行为,提高开发质量。从测试的角度看开发过程,提高测试效率和质量,需要重点关注自测及问题修复过程。规范的自测及问题修复流程,能大大提高测试的效率。
    测试流程主要解决的是测试方面的问题。整个测试流程大致分为需求分析、用例编写、用例评审、测试执行。
    需求分析过程,看需要可以制定问题反馈相关流程。
    用例编写过程,规范编写和管理规范,有助于用例的统一管理,提高相关方的理解效率,甚至可以对测试时间进行相对科学的量化评估。
    测试执行过程,涉及到接口测试、冒烟测试、用例执行、BUG管理、测试报告编写等,是测试流程规范最重要的一个过程,每一个子过程都有可以制定相关的规范。接口测试规范规定适合公司业务的接口测试;冒烟测试虽然简单,但是落实起来需要测试人员有敢于打回开发的勇气,以及对应制度的支持;BUG管理规范规定BUG提交的内容规范以及如何流转、结束,规范的BUG管理还有助于分析开发的质量问题集中的哪些方面,可以有针对性的进行问题解决;测试报告规定每天或每轮次测试结束之后,对当前测试情况的总结,对整个研发团队比较重要,能让各方清楚的知道目前项目的一个进度,进而对未来工作作出适当的安排。
    上线流程主要解决的是发布生产环境的效率和质量问题。整个上线流程大致分为通过上线决定、各方准备及部署、回归测试。通过上线决定,一般需要综合产品、测试、开发三方的意见作出是否上线以及上线时间的决定,而这个过程就会涉及到客观的上线标准和主观的上线考虑。各方准备及部署是最重要的过程,复杂的项目需求涉及多方的代码和配置,如果没有规范的流程,很容易产生遗漏项或者操作错误,导致上线过程漫长以及上线后发生问题,对已有用户的业务系统影响比较大。回归测试过程其实是最后一个确认的过程,而且是在生产系统进行的操作,往往只能进行主流程的操作,所以准确的判断影响范围及回归范围是重要的,这个过程也是自动化测试最能发挥其价值的过程。
    生产问题修复流程主要解决的是生产环境发生问题后如何跟进解决的问题。整个流程大致分为问题发现、问题定级及处理、问题复盘总结等。问题发现过程一般由用户反馈、业务人员反馈、产研团队反馈等,这些问题纷繁复杂,不同的人对问题的严重紧急程度理解都不一样,如果每一个都需要紧急处理,那将会让整个产研团队陷入救火队的一个状态,严重影响正常的业务产品研发,所以问题的定级及处理是最重要的过程。问题定级及处理,需要规范问题的客观定级标准结合相关决策的人主观判断进行定级,而后再根据问题级别进行对应的处理。最后,当问题解决之后,需要有一个复盘总结的过程,减少类似问题的发生。
    流程规范的制定,必定会带来一定程度上的个体效率下降,一段时间的总体效率下降,但当个体形成习惯,整个机制运行流畅之后,总体的效率和质量一定会得到提升。

    二、测试技术和工具的研发及使用

    测试技术和工具,这里按测试阶段主要使用到的技术和工具划分为测试准备类、测试执行类、测试管理类、测试监控类、其他。
    测试准备类
    需求分析阶段,使用Xmind辅助进行产品需求的理解和测试点的梳理;
    编写用例阶段,使用Excel进行用例编写,也可以使用Xmind,但是不建议,虽然方便编写,但是不方便管理,以及跟一些用例管理软件的交互。对于数值类的测试,可以用Excel的公式编写好,预留出变量,测试的时候能够很快的进行计算和结果的验证,能大大提升数值类的测试效率;
    测试执行类
    接口测试阶段,可以使用Postman、Jmeter、RobotFramework、Python/Java+接口测试框架(pytest、unitest等)+报告(Allure、BeautifulReport、Unittestreport、HTMLTestReport等),不论使用哪种,看测试团队的情况使用。这里比较推荐使用Postman进行简单的接口联通性测试,然后使用代码语言+测试框架+报告的形式,方便管理维护扩展,直接生成报告,自定义程度高等等很多优点,但是对测试人员的能力有一定的要求;
    功能测试阶段,前置条件的达成,可以通过修改数据库、修改返回数据、利用mock系统等操作完成。修改数据库需要了解业务涉及的相关表和字段,才能正确的完成前置条件的构造,一般需要咨询对应的开发。修改返回数据可以使用charles、fiddler等工具,但这种方式仅限于测试前端功能,无法测试后端的逻辑。利用mock系统可以使用Postman或其他mock小工具(charles、fiddler),这种方式需要了解接口的返回数据结构,如果是mock的接口是前端使用的接口,那也只能测试前端的功能,mock更适用的场景是多个后端系统复合的系统或对接第三方提供的系统。
    性能测试阶段,性能测试的工具有很多,比如Jmeter、LoadRunner、第三方提供的服务等,根据公司业务、预算等情况进行选择。性能测试属于非必要的一个阶段,如果要做好也需要比较专业的专门的岗位人员。
    安全测试阶段,安全测试工具也很多,Sqlmap、SoapUI、第三方提供的服务等,根据公司业务、预算等情况进行选择。安全测试也属于非必要的一个阶段,如果要做好也需要比较专业的专门的岗位人员。
    测试管理类
    测试管理涉及用例的管理、BUG管理、测试代码管理、辅助测试平台。用例管理可以简单的用公司的共享文档管理平台进行管理,也可以用git的方式进行管理;BUG管理工具也比较多,常用的Jira、禅道等,这里的建议是最好产品、研发、测试能够使用一个统一的平台,方面任务或问题的流转和提醒;测试代码管理基本就是Git;辅助测试平台一般是公司自研的平台系统,用来管理测试内部的流程,以及提供封装化的测试工具集。
    测试监控类
    产品上线后,从测试的角度,也需要有一定的监控报警,而监控报警基本就是接口自动化测试和UI自动化测试的建设,通过使用Python/Java+测试框架(pytest、unitest、selenium、appium等)+报告(Allure、BeautifulReport、Unittestreport、HTMLTestReport等)的技术组合。从日常的接口自动化和UI自动化中,分类提炼出哪些需要并且可以在生产环境运行的测试用例,通过Jenkins或者自研的定时任务系统,定时触发,通过邮件或企业微信等告知本次运行结果,及时发现生产问题。
    其他
    定位问题也是测试过程中的一项常用能力,而定位问题就要求测试人员从前端到后端全链路进行分析定位,通过Charles、Fiddler、Adb等获取接口数据,结合服务器的日志,还有数据库表等,进行问题定位。

    测试技术和工具的使用,只要熟练掌握了python/java语言的使用,百分之八十的效率问题都可以通过代码解决,是提升效率的根本武器。

  • 相关阅读:
    Python通过Flask+pyecharts对房地产数据实现数据分析结果Web可视化(二)
    Java基础—Document类型的变化
    C#实现时钟控件
    Trapezoidal Rule Integral
    Pytorch框架基础
    UVM 源码__report 机制浅析(一)
    B+tree 与 B-tree区别
    idea联合es 做出jd爬虫
    STC 51单片机51——直流电机PWM
    Dubbo+Zookeeper
  • 原文地址:https://blog.csdn.net/liao152/article/details/133173216