【测试金字塔】自动化测试概要
更新时间:2022-03-07 11:23:45 作者:多测师 浏览:223
自化测试动广义:自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。狭义:使用工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。自动化测试目的是解放双手,做更多更有价值的测试,比如探索性测试、集成测试等等。
测试金字塔背景
测试金字塔最早由MikeCohn(用户故事与敏捷方法作者)提出,MartinFowler在文章TestPyramid中有详细介绍总结说来,测试金字塔是一种思考如何使用不同类型的自动化测试来创建平衡投资组合的方式。最初的原型分三层,底层是单元测试,中间层是API测试,上层是UI自动化测试。而且底层的单元测试需要做最多的测试工作,越往上测试工作应该越少。测试金字塔是自动化测试分层覆盖情况的一个参考模型,其特点是:
a.金字塔底层的测试是最接近代码的测试——单元测试,编写成本低、执行速度快、定位问题也更准确,但是离业务层较远,不能很好的体现业务价值。
b.金字塔顶层的测试是UI层的自动化测试,这一层离业务近,能够体现业务流程覆盖情况,但是编写成本较高、执行速度较慢、不够稳定、定位问题也更难。
c.而中间层的集成测试,则是成本和价值都是处于居中位置。
在敏捷开发模式,往往传统以功能测试为主的测试难以适应新的角色,而敏捷团队也面临着产品质量和快速市场的压力,需要通过快速的迭代抢占市场,但另外一方面质量的问题,又可能导致市场丢弃,这时,测试应尝试调整测试的重心和方法,目标是做到敏捷测试,即测试与开发并行,测试的重心更应移到后台的业务逻辑测试,并建立起新的测试模型,特别后端接口的自动化测试,有了自动化测试,我们所说的持续交付才有可能真正实现,在开展敏捷测试时,可以在各敏捷小组之上增加量个角色以保证产品质量和迭代的效率,一个测试开发角色,负责团队基础测试技术如性能测试,安全测试,负责测试工具、测试平台开发,测试实验室的建立;而另一个过程管理角色,则负责提升整个敏捷流程效率,梳理各环节的问题,对产品、开发、测试、运维的工作成果进行审计,促进设计、开发、测试、运维等角色密切协作,倡导3C(Card、Conversation、Confirmation)。
总的来说,敏捷测试的终极目的是为了持续交付,快速向市场交付可靠的产品;在敏捷开发模式下,迭代使得代码量逐步累加,越靠后的迭代我们所面临的整合测试压力、测试任务就越大;敏捷测试需要测试人员能够随时启动自动化回归测试对发布的迭代代码进行快速验证,以确保开发人员在进行新功能开发的同时,未对已有的功能进行破坏。
如何选择一款自动化测试框架,对于每个测试负责人来说,都具有一定的挑战,首先自动化测试框架没有万能的,不是任何一款自动化测试框架都可以直接引入到项目中,也不是流行的或者优秀的自动化测试框架就一定适合当前的项目。
考虑维度
a.项目的技术类型
b.项目测试需求
c.测试人员的代码能力
d.不同的自动化测试框架特点分析
e.测试框架的扩展能力
f.测试框架的成熟度
接口自动化测试框架设计
使用工具及框架开发语言:Java项目构建工具:maven测试框架:testNG管理/执行测试用例底层接口自动化支持库:RestAssured/HttpClient日志系统:Log4j可视化报表:Allure设计思路①用例通过Excel管理,用例编辑方便直观。
②数据驱动DataProvider。
③参数化设计—解决接口依赖参考postman类似设计,将接口依赖数据提取出来存放到全局共享池中,需要时通过引用即可。
④JDBC操作数据库二次封装,数据库断言更方便。
⑤随机工具类实现,用例前置所需数据方便获取。
⑥log4j日志集成。
⑦集成Allure可视化报表。
⑧Jenkins持续集成。
总结
实现自动化测试,可以执行更多与应用程序相关的测试。这样可以很大程度地提高测试覆盖率,且可以改善测试效率。对应用程序的回归测试更加方便。测试本身具有一致性和重复性,自动化测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。自动化测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。可以使测试减少手工测试量、更好的管理/编写测试用例以及友好的可视化界面,可以更快的做到及时响应,通过svn/git管理代码,并集成至CI/CD,通过触发器,定时的执行测试脚本。
以上内容为大家介绍了自动化测试概要,本文由多测师亲自撰写,希望对大家有所帮助。了解更多接口自动化测试相关知识:https://www.aichudan.com/xwzx/