【分享实录】测之以恒——代码精进而不觉 | IDCF DevOps案例研究
共 5724字,需浏览 12分钟
· 2022-01-20
内容来源:DevOps案例深度研究第6期——持续测试实践研究战队(本文只展示部分PPT及研究成果,全程视频请移步文末)转载请注明出处。
本案例内容贡献者:唐正美、冯建伟、程琳琳、欧建斌、熊小龙、李静、李国有、薛建、余晓蒨、陆奕彪
第一篇:发展历程
1.1 软件测试的发展历程
原来软件测试也能追本溯源(不是程序员拍脑袋想出来的),也有其存在的必然性与合理性。
迄今为止,软件测试的发展一共经历了5个重要时期:
1957年之前-调试为主(Debugging Oriented) 1957–1978-证明为主(Demonstration Oriented) 1979–1982-破坏为主(Destruction Oriented) 1983–1987-评估为主(Evaluation Oriented) 1988–至今-预防为主(Prevention Oriented)
调试(Debug):确保程序做了程序员想它做的事情。 测试(Testing):确保程序解决了它该解决的问题。
The process of executing a program with the intent of finding errors. 测试是为发现错误而执行程序的过程。
Verification: Are we building the product right? Validation: Are we building the right product?
出现测试经理(test manager),测试分析师(test analyst)等职称。 开展正式的国际性测试会议和活动。 发表大量测试刊物。 发布相关国际标准。
第二篇:测试理念
本章主要通过5W1H分析方法论,简单了解测试/持续测试在日常测试工作中的方方面面。
其中 what-什么是持续测试 在第一篇中有介绍。
Why-为什么测试
测试的重要性不言而喻,这里列出了为什么需要测试:
为产品提供信心。 找到薄弱环节。 形成质量等级。 确定满足产品需求的程度。 加深对整个系统的理解。 证明可用性、可操作性。 对app能否deploy 提供足够的信息。
提高测试效率,加快release 速度。 及时获得反馈。 DevOps的最终目的是持续交付,只有实现持续测试,才能实现持续交付。
蓝色的线表示bug在什么时候引入,85%的bug在最初的coding阶段就存在了。 黄色的线表示 bug在什么时候发现,大部分的bug是在功能测试和场景测试过程中才发现。 红色的线表示修复bug的代价,非常明显可以看出修改bug的时间越晚cost越高。
第三篇:测试生命周期与工具
3.1 软件测试生命周期
需求阶段(Requirements phase) 计划阶段(Planning Phase) 分析阶段(Analysis phase) 设计阶段(Design Phase) 实施阶段(Implementation Phase) 执行阶段(Execution Phase) 总结阶段(Conclusion Phase) 结束阶段(Closure Phase)
过程化编程:一个单元就是单个程序、函数、过程等。 面向对象编程:最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
可以及早发现问题。 更改不影响其他模块。 模块间集成更容易。 使设计和文档变得简单。 表达设计。
测试名称的麻烦。 编写错误的测试类型。 缺乏适当的初始条件。
开发语言:JUnit、TestNG、NUnit、 SimpleTest... ... 辅助:JUnit-addons——对Junit功能补充,如设置、获取被测试对象的私有属性的值,调用对象私有方法等;EvoSuite——用于自动生成单元测试用例。 配合:DJUnit——通过代码自动生成Mock对象,省去编写Mock类;EasyMock——通过编程自动Mock掉与测试对象无关的类和方法。
保证系统的正确和稳定,为系统接口进行全面高效持续的检测。 可以获得较高的投资回报; 有利于测试前移。 通过持续测试和监控能够及时发现项目中存在的问题接口。
工具 | 入门难度 | 持续集成 |
---|---|---|
PostMan | 低 | newman+jenkins |
SoapUI | 中 | ant/maven+jenkins |
Jmeter | 中 | ant/maven+jenkins |
Katalon | 高 | jenkins |
其中POSTMAN是一款功能强大的调试HTTP接口的工具,易用性高,设计得很人性化,适合简单的API功能测试或者测试新手。原理图如下:
POSTMAN持续集成流程:
3.4 契约测试
原则:
快速反馈。 消费者与提供者解耦。 消费者驱动设计优于提供者驱动设计。
第四篇:测试展望
软件测试的技术趋势其实有很多,在这里说其中两点:DevSecOps和AI Test接口。
4.1 DevSecOps
随着网络诈骗、网络犯罪、网络威胁和漏洞快速增长,导致网络风险时时刻刻都存在,随之而来的就是客户对安全性的感知也越来越重要。
安全是整个IT团队(包括开发、运维及测试团队)中每个人的责任,需要贯穿整个业务生命周期每一个环节,通过加强内部安全测试,主动搜寻安全漏洞,及时修复漏洞、控制风险,实现与业务流程的良好整合。
Security安全在DevOps的各个环节都有体现,不同的阶段有不同类型的安全层面的考虑。
4.2 AI Test
上图 给出了 近年来测试的演变过程,从最开始的瀑布式测试方法,到自动化测试,再到DevOps的持续测试。
再接着就是所谓的AI Test, 图中叫autonomous Testing--自治化测试,而自治化测试是通过AI和Machine Learning实现。
注意这里的名字是自治化测试,它和自动化测试的区别:自动化只是自动化执行特定的测试用例,自治化测试更加smart更加智能,并不是简单地去执行测试用例,而是能够生成最优的测试脚本和测试用例, 能够根据不同的需求选择不同的测试用例,同时能够预知客户的行为。
既然AI Test是趋势,它能做什么,有什么优点呢?下面两种图给出了答案。
第6期DevOps案例深度研究交付包括《牛转乾坤——持续运维》、《降龙十八掌——CICD持续集成持续部署》、《测之以恒——代码精进而不觉》、《协作开发——让需求价值通过协作开发流动起来》,识别下图二维码可购买全部视频~