如何找到自动化测试的思路

简介:
要找到自动化测试的思路,首先得明确自动化测试的本质。对自动化测试的本质的理解不同,导致了在进行自动化测试过程中对于组建团队、制定目标计划等的不同,决定了最终自动化测试的实施和效果的不同。所以必须先把自动化测试的本质说明白。

  谈本质的问题,每个人的理解是不尽相同的。咱们这里说的自动化测试的本质,主要基于对 “人工被机械替代 ” 的理解:随着工业时代的开启,“人工被机械替代”已成为很普遍的现象,运行着的机器,以成百上千倍于人工的效率在进行生产。如果测试能自动化,不也能节省大量人工吗?这也是人们的直观感受和期望。

  但如果撇开直观现象和感受,我们如何看“人工被机械替代 ” 呢?

  第一,能量。 

  粗略地从能量到角度看,人工过程是生物能量向动能转化的过程。就测试而言,是食物转化为脑力思考和手工测试的行动,再转化为电脑执行的电能。

  机械是化石能源向动能的转化过程。就自动化测试而言,是化石能源和人的生物能(脑力思考)转化电能,电能之间再进行转化。

  既然是能量转化,那么可以明确知道:1遵守能量的守恒定律,但实际的转化过程存在能耗;2 熵(无序性)会增大,为了有序,必须有额外的能量。

  所以从能量的角度来理解:1 能量要守恒,那么人工测试与自动化测试所需要的能量是相当的,但能量的来源从生物能变成了一部分的化石能源或者电能,减少了人的生物能,所以人会轻松一些。但还是需要消耗生物能,人得设计自动化的工具,脚本。2 限于介质,能量不可能完全转化;限于脑力,测试不可能能全自动化,总有无法自动化的。3为了维持自动化的有序进行,必须额外地投入其他能量,就像是维护测试工具、脚本、测试环境等日常工作

  第二,经验。

  能量之所以可以转化,需要介质。而人工转自动执行的重要介质是人的脑力。由人的脑力消耗到自动化的工具、脚本、测试场景等这些产出物是人的经验的表达。所以自动化测试,可以看成是测试的经验复制和积累的过程。

  所以根据复制积累的经验不同,就可以产生不同的自动化测试。例如:

  最常见的是积累手工测试人员的经验。于是就产生了很多以录制或模仿行为为基础的自动化方案。例如功能自动化工具的selenium、qtp,安全测试中的端口扫描、sql注入、脚本注入等工具。这从根源上回答了为什么脱离手工测试而开展的功能自动化测试都会失败的原因。

  接着是积累由机器交互行为产生的经验。这必须借助手工测试运行,来录制或模仿机器间的通信过程。例如,常见的性能测试工具LR、jmeter。所以,从这个角度出发,就可以理解,性能测试人员一定要理解业务场景、系统交互流程、系统真实运行的场景。

  再者是积累基于历史的经验。例如IBM的appscan家族的安全工具。通过积累各种web安全问题和变种,进行自动化的安全检测;findbugs、fortify通过积累bug模式和规则进行源码的自动扫描。

  另外,就是根据自身业务特点进行的经验积累:

  比如,对于偏重流程的系统,像交易系统,OA系统,不同的数据会走不同的流程,限于测试人员的经验范围,现在需要积累客户的经验范围进行自动化,就会需要把生产的数据下载到测试环境中,进行脱敏处理后、跑用户的数据进行回归测试,常被称为业务仿真测试。

  比如,对于偏重规则或模型的系统,像风控系统、搜索引擎,不同规则的设置有不同的触发场景,不同的模型需要不同的基础数据。自动生成这些基础数据,营造场景的触发条件,或者不同因子的积分或计数条件来匹配模型,计算模型效果等。

  当然,以上积累的经验都是来自人的。如果把机器学习加入到自动化测试中,积累机器自己的经验,或者挖掘生产数据,使其在一定程度上自我学习,也会是很有挑战的思路。

  总的来说,自动化测试,不论功能、性能、安全等,都是能量转化的过程、是经验积累的过程。好的,这是一句废话,但不可忽视。

  以上说的不能告诉你具体自动化测试的思路,理解自动化测试过程中的所有问题。但世界就存在于你的概念之中,当你明确了你的自动化测试的本质了之后,才能把握解决个中问题的解决方向。
相关文章
|
关系型数据库 MySQL Java
confluence部署
confluence部署
1503 0
confluence部署
|
9月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
存储 缓存 NoSQL
深入理解后端缓存机制的重要性与实践
本文将探讨在后端开发中缓存机制的应用及其重要性。缓存,作为提高系统性能和用户体验的关键技术,对于后端开发来说至关重要。通过减少数据库访问次数和缩短响应时间,缓存可以显著提升应用程序的性能。本文将从缓存的基本概念入手,介绍常见的缓存策略和实现方式,并通过实例展示如何在后端开发中有效应用缓存技术。最后,我们将讨论缓存带来的一些挑战及其解决方案,帮助您在实际项目中更好地利用缓存机制。
|
监控 安全 Go
使用Golang调用摄像头
近年来,摄像头成为了我们生活中不可或缺的设备之一。从智能手机到安全监控系统,无处不在的摄像头给我们带来了便利和安全。在开发摄像头相关的应用程序时,选择一种高效和易用的编程语言是非常重要的。本文将介绍如何使用Golang调用摄像头并进行图像处理。
|
运维 分布式计算 供应链
医院HIS系统源码,全套云化医院信息管理系统
HIS系统完全基于云端部署,采用B/S架构,并通过软件即服务(SaaS)的形式面向二级医院的可快速交付、便捷运维、云化的医院核心业务平台产品。融合医院HIS和EMR两大主营系统,构建涵盖患者、费用、医嘱、电子病历等核心业务的医院基础信息系统。将HIS与电子病历整合一起形成一体化医护工作站。
681 0
医院HIS系统源码,全套云化医院信息管理系统
|
开发框架 前端开发 JavaScript
【前端】前端的三大主流框架
【前端】前端的三大主流框架
833 3
|
监控
关键绩效指标和关键风险指标的区别
【8月更文挑战第31天】
790 0
|
机器学习/深度学习 机器人
用MoE横扫99个子任务!浙大等提出全新通用机器人策略GeRM
【4月更文挑战第28天】浙江大学等研究团队提出的通用机器人模型GeRM,基于Transformer和Mixture-of-Experts(MoE)架构,能有效处理多种任务。通过离线强化学习,GeRM在99个子任务中展现出优越性能,优于单一专家网络策略,且具备高训练和推理效率。尽管需更多计算资源,但GeRM为多任务机器人技术带来了新突破,有望推动领域发展。[链接:https://arxiv.org/abs/2403.13358]
282 2
|
SQL 算法 大数据
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
|
安全 网络协议 数据挖掘
游戏盾如何隐藏服务器真实IP
游戏盾采用了智能分布式云接入系统,通过部署接入服务,使得游戏客户端不再直接与源服务器建立连接,而是通过游戏盾连接至分布在各地的高防节点。这一架构不仅实现了网络加速,还巧妙地隐藏了源服务器的真实IP地址,使得攻击者难以直接定位到真实的服务器。