背景
为什么要构建质量体系?
随着系统越来越庞大,业务复杂度不断增加,单一的测试方法已经无法满足质量要求,随之而来的是越来越隐晦的bug,造成越来越大的损失。测试工程师在这期间,逐渐陷入手动测试效率低,时间成本高,漏测率逐步上升,历史问题不断叠加的处境。因此,为了培养测试人员素质,提升产品质量,增加客户满意度,我们针对MES系统进行质量体系建设。
业务框架
MES系统是一个制造行业的管理系统,具有很强的流程性,所有的业务几乎都是为了生产流程所服务的。由其的ToB等业务属性,提取它的核心业务,是我们构建质量体系的基础。
系统框架
MES系统的架构基本与主流Web开发技术框架一致,有别于其他行业的是,在MES系统中会使用到流程引擎相关技术来控制审核流与生产流等。另外还有设备相关的数据采集,熟悉我们技术框架,才能更好的进行系统质量的验证。
质量目标
质量痛点
-
客户满意度:由于过往的质量较低,引发客户的不信任,导致市场占有率不高
-
公司战略:希望有一个稳定的Baseline版本,然后在基线版本的基础上再去开发,以满足不同客户的不同需求,但这会导致测试回归压力巨大
-
研发能力:未编写单元测试,冒烟测试通过率不高,bug收敛性差
-
测试能力:过往测试手段比较单一且浅薄,并没有多维度且深度验证产品质量
-
效能:项目已经迭代一年多,业务复杂度较高,例如构造测试数据难度高,导致项目团队包括研发和测试耗费的时间精力过高
测试计划
-
重要+紧急:根据公司Baseline版本的规划,应当首先满足当前版本的质量,基于Baseline版本去开展自动化工作也是为了后续项目化时的效能提升。
-
不重要+紧急:当前研发团队应当积极复盘线上的问题,不断地优化研发流程,尽力去达到质量和成本的平衡点。同时也要提升各自的技术能力,以应对后期项目化的产品交付压力
-
重要+不紧急:手工测试和自动化测试其本质还是保障软件的功能,而对于一个生产制造行业的软件来说,数据量必然会越来越大,所以应当开启性能测试。另外持续交付和利用AI也是为了在自动化的基础上更好的提升效率
-
不重要+不紧急:目前使用MES产品的甲方由于信息化成本等问题,不考虑集群方案,且也不是一个高并发的项目,所以暂时不需要引入混沌测试。另外线上简单的监控已有Prometheus,且并不是一个ToC业务,不太需要补充前后端埋点。
测试策略
手工测试
1、需求分析,充分挖掘隐式需求
2、技术方案,实现方案的查漏补缺
3、用例设计,规范且高效,等级设定明确
4、测试环境,持续集成,但是要明确新版本增加其他依赖
5、冒烟测试,准入标准明确,避免后期上线风险
6、bug生命周期,维持原则但合理沟通
7、回归测试,考虑充分避免引入新的缺陷
8、测试报告,统计数据并给出结论,附带延期事项
9、线上验证,简单走查,避免污染生产数据
10、迭代复盘,扬长避短,跟踪并落地
预期效果:漏测率降低百分之60,不允许需求文档以内的漏测。
接口自动化测试
1、制定目标,按计划行事,最终目标85%以上
2、技术选型,pytest+requests+logging+allure
3、分层结构,base、cinfig、data、log、report、testcase、tools
4、工具封装,响应断言,文件读取,日期计算,企微消息,数据库等…
5、拓展性,减少代码冗余,增强封装性,避免维护成本过高
6、多线程,代码解耦或规范执行顺序,避免并行运行时出错
7、持续集成,Jenkins提升效率,运行冒烟测试
预期效果:接口自动化满足各种各样异常数据的功能可靠性,降低冒烟测试和回归测试时间80%
UI自动化测试
1、制定目标,按计划行事,最终目标覆盖主流程
2、技术选型,pytest+selenium+logging+allure
3、PM模式,common、data、locator、page、testcase、tool
4、工具封装,响应断言,文件读取,日期计算,企微消息,数据库等…
5、拓展性,减少代码冗余,增强封装性,避免维护成本过高
6、多线程,代码解耦或规范执行顺序,避免并行运行时出错
7、持续集成,Jenkins提升效率,运行冒烟测试
预期效果:UI自动化覆盖了web、WindowsAPP、AndroidAPP三个用户端,保证重要流程的功能正确和用户体验。
性能测试
1、制定目标:按计划行事,主业务流链路压测
2、技术选型:一站式的开源持续测试平台MeterSphere
3、铺底数据:根据企业体量评估3-5年的数据量
4、数据清洗:清理不符合实际需求的数据
5、分布式:通过资源池调用多个NodeController创建jmeter docker多个测试执行节点
6、测试结果:kafka处理高吞吐量和分布式的流量数据特性
预期效果:在3-5年的数据量下,满足QPS达到50,且RT不超过3秒,特殊接口不超过10秒
造数方案
1、制定目标:满足项目流程过长时,研发和测试快速构造测试数据的需求
2、技术选型:APIfox
3、业务分层:快速构造某一业务场景的数据
4、工具封装:外接python或Java代码实现一些功能,例如密码加密
5、参数化:请求参数参数化,使用文件维护
预期效果:接口自动化和UI自动化虽然也会致力于封装一个业务流的case,但是使用时需要注释某些代码,另外造数的用户也有前端和后端研发,甚至还有产品和业务人员。使用APIfox这样的工具对他们更加友好,只需一键构造数据
质量体系
项目流程图
流程细节
1、分层测试:涵盖多维度的测试,单元测试、集成测试、自动化冒烟测试、系统测试、自动化测试
2、逆向节点:需求评审不通过、冒烟测试不通过、bug修复不通过、发布上线失败回滚
3、子流程:计划排期,测试数据准备,bug生命周期,回滚方案,性能需求(若有)
4、过程管理:准入准出标准,过程中的交付文档,提测邮件、测试结果邮件
5、迭代模型:参考敏捷模型,提测后可以需求评审,研发可以逐步开展下一版本工作
6、文档沉淀:需求文档、技术方案、测试分析、测试用例、测试报告、checkList
7、上线后:关注和监控生产环境,发起迭代复盘
团队建设
人才引入
略
技术赋能
略
难点攻坚
略
绩效考核
略