29、OSPF配置实验之被动接口
297
2023-01-11
本文目录一览:
接口测试的目的是为自动化测试和接口测试了增加测试覆盖度、深入度 自动化测试和接口测试,对接口的各个参数做实际场景中很难遇到的异常场景的测试,保证接口的稳定性。如果在这个前提下接口测试还是没有发现 bug,那么可以 review 下历次迭代中是不是业务测试发现的所有 bug 都是前端的。如果是,那么说明自动化测试和接口测试你们的后端开发工程师能力实在很强,应该恭喜你们遇到了这么给力的队友。在测试压力很大的情况下就可以酌情考虑不做接口测试,前端测试完成就上线了。
如果不是那就应该 review 你们的接口测试用例了。是不是用例设计的还不如业务测试全面自动化测试和接口测试?是不是用例设计的时候默认按照正常的取值范围?按照正常的业务逻辑进行的用例设计导致用例的覆盖还不如业务直接黑盒测出来的覆盖全。
自动化测试的主要目的不是发现多少 bug ,而是为了快速对接口做回归、做线上监控等,避免接口出现了低级问题、阻碍问题但是大家不能第一时间知道,等过了很长时间线上出了强反馈或者在错误接口的基础上又做了很多开发才被大家发现。当然,在接口自动化的基础上再做压力测试、稳定性测试等也会更方便。在这个前提下再评估接口自动化测试是否有必要,思路就会清楚一些。
整体上测试是为了保证业务中的 bug 能够在有限的资源下最大量、最快速的发现,业务实际情况不同、测试团队规模不同、测试与业务的合作模式、测试团队成员的技术能力等等都会影响测试方案的制定。
个人觉得如果团队有专人做接口测试,这种情况下接口测试定位到用来发现更多 bug 是没有问题的,如果没有发现 bug 那就需要仔细找找接口测试用例设计的问题。接口测试的目的不是取代业务测试,而是减少业务测试遇到阻碍问题的概率以及减轻业务测试模拟异常场景的工作量。接口自动化测试的目的是在回归场景节约业务测试的工作量,在新业务测试中实际反倒会占用更多的测试资源。
以上是作者拉拉肥对接口测试以及接口自动化测试的理解。你怎么看?欢迎点击 原文链接 在原帖共同讨论。
接口 :外部系统与本系统之间以及系统内部的各个子系统间,以约定标准提供的服务,包括对外提供的接口/对内提供的接口。
在这块我们举一个比较生活化的例子,我们平常使用的笔记本,在笔记本的两端有很多小插口,最常见的就是USB插口,我们可以把鼠标连接在USB插口上,也可以把键盘、U盘连接在USB插口上,为什么同一个USB接口可以连接这么多设备呢,其实这个接口,他就有一个统一对外的连接标准。
在我们开发当中,也有一个对外暴露的接口,因为他们服务的协议都是统一的,最常见的就是hhtp协议,我们规定好一种格式,让客户端来调用我们。
这里面键盘鼠标属于调用方,插到笔记本的USB上,就可以连接设备,就可以进行操作了。对外暴露的一个统一的一个规范,这样去理解接口,更形象一些。
在了解完什么是接口之后,我们来说一下什么是接口测试。
接口测试 测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等,保证对外提供接口的正确性和健壮性。
我们在具体测试过程中,我们不用关心接口调用方和接收方的实现逻辑,我们只需要知道传入什么数据,返回什么的结果是否达到我们的预期。接口测试其实也是黑盒测试,他与UI测试的区别就是没有界面交互,是不可视化的。
测试前置 :我们不能等到整个系统全部开发完成才能进行测试,我们可以通过调用接口来进行测试,把问题拦截在前期,降低问题修复成本。
Bug更容易定位 :因为我们按接口进行测试,出现问题后在被测接口中排查就可以了,它比系统集成之后,发现问题更容易定位,系统集成之后有各种模块的调用,出现bug之后再排查,排查的链路非常的长。另外从机制上更接近出问题的地方更容易命中问题。
前后端分离结构 :现在很多系统都采用前后端分离架构,各服务之间更多的是通过接口来实现信息互通,对接口进行直接测试,可以更全面的覆盖各类测试场景。
自动化测试落地性价比高 :比UI自动化测试更稳定,我们上面已经说了UI层的元素时常发生变化,有时改一个简单的元素,都有可能导致我们的自动化测试走不下去,写一套自动化测试脚本比较容易的,但是维护起来,会耗费很大的时间精力,相对来说,接口就比较稳定,一个项目没有大的改造,入参和出参就是固定的,变化的概率比较小,这样维护起来也比较方便。
减少安全隐患 :比如我们在平常的测试过程中,测试用户名和密码,密码格式要求不能输入特殊字符,前端做了校验,而后端没有处理,这样我们只测试页面,这条case就默认通过了,但一些黑客可能通过抓包的方式进行登录,这样安全隐患就比较大了。我们对接口进行安全测试,可以避免安全隐患。
借助工具 : Postman、Jmeter、jsf平台、jsf测试工具、easytest
编写测试脚本 :Java+TestNG
请关注下一篇如何使用Java+TestNG进行接口自动化测试
1. http代码表,常考题目
404:找不到资源
500:服务器内部错误,无法完成请求。
501:服务器不支持请求的功能,无法完成请求。
502:充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
301:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI,今后任何新的请求都应使用新的URI代替。
302:临时移动。与301类似。但资源只是临时被移动,客户端应继续使用原有URI。
200:成功。
2. TCP/IP四层网络模型
链路层、网络层、传输层、应用层。
3. TCP/UDP区别?
TCP: 可靠传输协议,需要三次握手连接,有确认重传机制,特点是可靠、准确、有拥塞控制,缺点就是比较慢,传输量比较小,适用于升级、下载;一句话:TCP是可靠的传输。
UDP: 不可靠传输协议,面向非连接的协议,优点是传输量大、速度快,缺点是已丢失、没有拥塞控制,适用于直播、视频等。一句话:UDP是不可靠的传输。
4. html css js运行的先后顺序是什么?
界面加载的时候先加载html在加载css最后加载js
5. session和cookie的区别是什么
1. session存放在服务器端用来校验客户端的身份
2. cookie存放在客户端,每次从客户端往服务器发请求时,将cookie带到服务器端,用来校验客户端的身份
1. 怎么用JMeter测试接口?
如果使用JMeter进行接口测试:
1) 测试前了解需求,根据接口规格说明书梳理业务;
2) 接下来设计用例,分析接口的入参和出参,分清楚有哪些有效输入和无效输入,设计用例(原则:用最少的用例覆盖所有有效输入,针对每一个无效的输入设计一个测试用例,如果有错误码没有覆盖到,还要对每个未覆盖的错误码分别设计一个用例);
3) 准备测试数据,比如:测试所需的账号、密码、key 等信息;
4) 打开JMeter,创建一个线程组,根据接口类型,填写好对应的接口地址和请求方式等;
5) 参数化配置,添加配置元件CSV Data Set Config,定义变量,并准备CSV格式的数据,变量的引用用${变量名}的格式;
6) 添加断言来判断测试结果的正确性,用得最多的是响应断言;
7) 添加监听器,比如查看结果树,对测试结果进行监听;
8) 运行测试用例;
9) 查看监听器结果,来判断用例的执行是成功还是失败,针对失败的用例,分析其失败原因;
10) 针对测试中发现的问题,给开发提单,直到问题最终解决。
11) 最后输出测试报告。
2. 怎么用Postman测试接口?
如果使用Postman测试接口:
其中1,2,3点相同,工具使用方面则比JMeter跟简单,工具的主要的步骤是添加对应的请求、填写主机URL及入参、添加测试套、运行测试套、分析结果出报告。
3. 在JMeter上如何把上一个请求的结果作为下一个请求的参数?
使用正则表达式提取器提取上一个请求的响应中的信息,保存一个引用名称比如abc,在下一个请求的参数中,用${abc}的格式来引用提取的结果。
常用的正则表达式格式:(.+?),其中.表示匹配任意字符串,+表示只匹配一次,?表示匹配到就停下来。
一般是我们功能测试完成最后两三天时间测试性能。
1、先是分析需求计算出并发数,TPS,响应时间和 CPU,内存,硬盘和网络IO这些指标。
2、制定测试方案,主要包括环境,计划和具体测试那些场景(如可靠性,并发,负载,压力测试等)
3、根据场景用Badboy录制脚本,导出为JMeter工具支持的脚本。
4、用JMeter工具打开脚本,进行脚本调试,加一些断言,监听器,参数化等。
5、接下来执行性能测试,然后主要收集监听器和收集服务器CPU,内存,硬盘和网络IO等分析是否满足需求,如果满足就输出性能测试报告。
6、如果指标不能满足,反馈给开发进行调优。调优后继续测试,一直到满足需求后最终输出测试报告。
1. Python怎么定义一个函数?
你可以定义一个由自己想要功能的函数,以下是简单的规则:
1) 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
2) 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3) 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4) 函数内容以冒号起始,并且缩进
5) return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None
2 Python切片
3. Python上用过什么库/模块?
webdriver:定位和操作元素
time:设置等待时间
ActionChains:动作链,完成鼠标的相关操作
Keys:键盘的相关操作
WebDriverWait:设置显式等待
Expect_Conditions:针对单个元素,设置显式等待的场景
PIL:截图
Select:下拉选择框的操作
unittest python:自带的单元测试框架
HTMLTestRunner:运行脚本,生成报告
ddt:实现数据驱动测试,行为和数据分离
4. 你做过自动化测试吗?
我在上一份工作中,公司去年下半年也开始规划做Web 自动化,采用Python作为开发语言,通过Selenium WebDriver定位和操作页面元素,自动化框架用的是unittest。我主要负责写测试脚本。
假设一个测试团队有5个人:1资深(测试经理)+2~3个中级(自动化+手动)+1 个初级(手动)
5. 使用什么工具进行的自动化测试
使用的工具是Selenium(Web自动化工具)
6. 用的什么编程语言
用的Python
7. Selenium 用的是哪个版本的的?Python用的是哪个版本的?
用的是selenium 3.11.0和Python2.7.10
8. Selenium的工作原理?
1)对html元素定位
2)模拟对第一步定位到的元素进行点击、输入、选择等操作一句话:定位元素,操作元素。
9. 元素定位方法有哪些?
要点:8种定位方法
1) 根据元素的属性值定位,比如 id、name、class、标签名、链接文字和部分链接文字;
2) 根据CSS选择器定位;
3) 根据 XPath 定位;
10. 子页面里的元素怎么定位?
先切换到框架里,然后再定位,用switch_to_frame函数根据子页面id或name,切换到子页面;定位完了如果要再定位主页面的元素,要用switch_to_default_content 函数先返回主页面。
11. 怎么定位alert弹窗?或者这样问:怎么处理JS原生窗口?
要点:主要涉及点击弹窗确认按钮、强行关闭弹窗、获取弹窗中的文字等操作。
1) 点击弹窗的确定按钮,用如下函数:
driver.switch_to_alert().accept()
2) 强行关闭,点击右上角的叉叉,用如下函数:
driver.switch_to_alert().dismiss()
3) 获取弹窗里的文字,用如下函数:
driver.switch_to_alert().text
12. 怎么运行自动化用例并生成测试报告?
以unittest为例,我通常的做法是把用例加载到测试套中,做成一个脚本,在命令窗口下运行脚本,报告的生成用第三方模块HTML TestRunner来生成。
13. 怎么定位/操作图片中的验证码?
用tesseract OCR引擎处理图片中的验证码,步骤:
(1)对整个屏幕截屏,保存成png格式的图片;
(2)在截取的图片中定位验证码图片的位置坐标;
(3)根据坐标对验证码截图;
(4)在图片中提取验证码,输入到输入框。
目录
一、前言
二、自动化目自动化测试和接口测试的
三、自动化分类
四、自动化实现
一、前言
在一些测试交流群经常会看到有小伙伴在问自动化测试和接口测试,"怎么做自动化测试?学习自动化测试有什么资料吗?自动化测试是不是很牛逼?" 自动化测试和接口测试,甚至有些言论是"不会自动化自动化测试和接口测试的测试人员,真的要被淘汰了吗?"
不得不说一堆流量号主抓住大众心理,点进去的必然是卖课广告,或者是关注微信公众号领取测试资料大礼包。
实话实说,自动化测试和接口测试我之前也有同样的疑问,甚至带着担忧。每次又不甘心得领着测试资料大礼包......
当然,随着自己的认知不断扩大,自己的一套测试体系建设不断完善,于是这些担忧逐渐的消失。每项技术引用都要看适用场景,是否适合自己的团队,因地制宜才能发挥其最大的价值。
因此,我想通过这篇文章来分享下我对于自动化测试的理解。
二、自动化目的
自动化工作可以节省很多人工操作成本,减少人工重复性操作,提高整个团队的研发效率。但是如果搭建自动化体系需要耗费很长时间,投入很多人力资源,但是用户只要2-3分钟的手动工作就能解决,而且这个操作并不频繁,又或者需要自动化操作的平台变更迭代非常快并且没有规律,自动化工具在后面类似累活的跟着。那么自动化还是有必要吗?
我之前在的团队,造测试数据特别困难,严重影响了整个研发效率,但是当时也没有一个好的解决办法,后来基础研发组做了一个造数平台,这个平台需要自己去配置各种字段,并且梳理出各个表字段的关联,从头到尾一个一个去构建场景,一不小心就配置错误,看着提示你也找不到原因的那种。这给造数过程中又添了一个拦路虎,给本不充裕的测试时间,又耗时一把。
如果能在做执行任务前评估任务的投入和收益,那么是不是就能更加合理的开展这项任务。那么自动化测试的投入和收益是怎样的呢?
投入:通过测试人员借助脚本或者工具实现自动化,维护自动化平台。
收益:提高测试效率,提升测试人员的成长。
自动化测试真的提高测试效率吗?真的可以提升测试人员的成长吗?针对后者,我认为是有的。接下来我们就来聊聊自动化测试是否提高测试效率。
三、自动化分类
自动化一般分为接口自动化和UI自动化,其中UI自动化又分为Web UI自动化和App UI自动化,按照我的理解还应加上部署自动化。
接下来我将针对这四种自动化的场景做一个介绍。因为我对于UI自动化不是很熟悉,我认为投入产出比不是很高,主要还是因为我没咋接触过,所以后面仅做简单介绍,重点讲解接口自动化和部署自动化。
四、自动化实现
4.1、接口自动化
接口
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递过程,以及系统间的相互逻辑依赖关系等。
流程
填写接口,入参,对出参进行断言,每天定时构建,输出测试报告。
入参覆盖范围:必选,可选,有/无/null,类型,数值大小/数值范围,特殊字符;
出参:json,data;
接口关联:接口之间的依赖,数据传递;
断言:对响应做核验,可以对状态码或者msg做校验。
优点
接口测试可以做到更多的覆盖场景;
接口测试可以更快的发现服务端问题;
接口测试相对容易实现自动化持续集成;
接口测试相对于比单元测试比较贴近业务场景;
技术选型
1、MeterSphere
MeterSphere 是一站式测试平台,涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,全面兼容 JMeter、Postman、Swagger 等开源、主流标准。
MeterSphere是一个功能交全的平台,并且是开源的,对于免费版就足够小团队使用了,使用门槛相对来说较低,对于技术能力要求不高,所以是一个不错的选择。MeterShpre使用的技术栈是SpringBoot+vue,以及一些中间件,也可以在此基础上进行二次开发。
2、Python
通过Python来做接口自动化的话,常用组件有:执行库Requests,断言库unittest,测试报告HTMLTestRunner,通过持续集成Jenkins做定时构建。
框架思想:封装,数据驱动。
使用Python的话则需要掌握一定的代码能力,当然这个对个人技能的提升是很有帮助的,但是如果在时间比较紧迫的并且没有足够的技术功底情况下,还是比较推荐MeterSphere的。
4.2、部署自动化
部署
部署就是将源代码编译成可运行软件包,比如jar包或者war包,并且将软件包放到目标环境,将软件包运行起来,并且能够被客户端调用。
流程
通过远程仓库拉取代码,前端编译,后端编译,下发软件包到目标机器,重启服务,启动失败则告警。
优点
相比传统手工部署,速度更快,不容易出错,提高交付效率。
技术选型
gitlab或者gitee:代码托管
git:版本管理
node:前端编译
maven:后端编译
ansible:下发文件
shell:重启服务
pipeline:流水线构建
Jenkins:CICD大总管,将以上工具整合起来,提供页面供用户操作部署流程。
4.3、Web UI自动化
UI自动化
通过页面元素定位定位到元素,模拟用户的操作行为,点击,输入,拖拽等。
流程
定位元素,模拟用户操作,发送测试报告。
优点
适用于回归主流程,并且变更不频繁的场景。可用于重复性的功能测试及验证。我之前在的团队做过一段Web UI自动化,但是因为需求频繁变更,并且精力有限,维护这个平台的成本较高,后面就没有持续维护了。
技术选型
Python,selenium。
4.4、App UI自动化
UI自动化
通过页面元素定位定位到元素,模拟用户的操作行为,点击,输入,拖拽等。
流程
定位元素,模拟用户操作,发送测试报告。
优点
适用于回归主流程,并且变更不频繁的场景。
技术选型
Appinum。
结论:我认为接口自动化和部署自动化是能够带来收益的,是真实能够提高效率的,并且也能够给测试人员的带来成长。
关注【嘎嘎软件测试】
搞测试,不迷路
呱呱大王本呱带你飞!
嘎嘎软件测试 分享个人成长、团队管理、软件测试技能知识等内容,做到有思想、有观点、有深度,欢迎订阅。
关于自动化测试和接口测试和接口自动化测试是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 自动化测试和接口测试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口自动化测试是什么、自动化测试和接口测试的信息别忘了在本站进行查找喔。版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~