自动化测试框架搭建的重要毋庸置疑,在面试过程中或多或少的会被问到测试框架搭建,这一篇文章主要讲解自动化运行原理、自动化测试框架的构建及测试用例如何设计等面试必问技术加分项!
需要测试相关资料、笔记、完整学习路线等可点击这领取
目录
-
- 一、给你一个网站怎么开展测试?
- 二. 电商支付模块的测试如何展开?
- 三、常用自动化测试工具机器运行原理,写出一段元素查找的代码?
- 四、如何开展自动化测试框架的构建?
- 五、如何设计自动化测试用例: :
- 六.webdriver 如何开启和退出一个浏览器?
一、给你一个网站怎么开展测试?
1.首先,查找需求说明、网站设计等相关文档,分析测试需求。
2.制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试,界面测试,性能测试,数据库测试,安全性测试,.兼容性测试
3.设计测试用例:
- 功能性测试可以包括,但不限于以下几个方面:链接测试;链接是否正确跳转,是否存在空页面和
无效页面,是否有不正确的出错信息返回等;提交功能的测试;多媒体元素是否可以正确加载和显
示;多语言支持是否能够正确显示选择的语言等
- 界面测试可以包括但不限于以下几个方面:页面是否风格统一,美观。页面布局是否合理,重点内
容和热点内容是否突出。控件是否正常使用。对于必须但为安装的空间,是否提供自动下载并安装
更多资源
- 性能测试一般从以下两个方面考虑:压力测试,负载测试,强度测试
- 数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容
的验证等方面。
- 安全性测试:基本的登录功能的检查;是否存在溢出错误,导致系统崩溃或者权限泄露;相关开发
语言的常见安全性问题检查,例如 SQL 注入等;如果需要高级的安全性测试,确定获得专业安全
公司的帮助,外包测试,或者获取支持。
- 兼容性测试,根据需求说明的内容,确定支持的平台组合:浏览器的兼容性;操作系统的兼容性;
软件平台的兼容性;数据库的兼容性。
4.开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。
5.定期评审,对测试进行评估和总结,调整测试的内容。
二. 电商支付模块的测试如何展开?
支付流程里面就涉及到了第三方支付接口:
- 下单接口:商户提交下单请求到第三方支付接口,第三方支付收单成功后返回下单成功结果给到商
户系统。(下单接口的最终处理结果分为下单成功和下单失败,若未收到明确结果可调用单笔订单
查询接口查询结果。)
- 支付接口:调用该接口时指定支付参数,完成买家账户向商户账户的支付,采用页面跳转交互模式
和后台通知交互模式。(结果分为两路返回:一路为前台在 return_url 页面跳转显示支付结果;一
路为后台在 notify_url 收到支付结果通知后进行响应。)
- 退款接口:调用第三方支付的支付请求接口返回付款成功后,在需要做退款处理时调用退款请求接
口发起退款处理。(退款接口的最终处理结果分为退款成功和退款失败,若未收到明确结果可调用
退款查询接口查询结果。)
- 单笔订单查询接口:根据订单号查询单笔订单信息和状态。退款订单查询接口:调用第三方支付的
更多资源,退款接口返回后,在需要查询退款请求状态可调用退款订单查询接口查询退款订单的状态和订单信息。
测试过程中需要注意的主要测试点及异常场景:
- 首先要保证接口都能正常调用;
- 生成一笔订单,支付完成后,同步或异步重复回调,只有一次有效;
- 生成一笔订单,复制订单号和金额,再次生成一笔订单,用 fiddler 设置断点,用第一笔已完成的订
单号和订单金额去替换现有的订单号和金额,无法完成支付;
- 生成一笔订单,跳转到第三方时修改金额,无法到账,或者如果是游戏充值游戏币的话,到账为篡
改后的金额对应的游戏币;
- 异步通知屏蔽,同步有效,进行支付,同步能够正常到账;
- 同步设置无效,异步有效,进行支付,异步能够正常到账;
- 同步异步都设置无效,在第三方支付完成后,在重发机制时间范围内,设置异步有效,到下次通知
时间点时,能够正常通知到账(补单机制的验证,如果商户收到第三方支付成功的通知后,要告知
第三方支付收到了成功的通知,如果第三方支付收到商户应答不是 ok 或超时,第三方支付就会认
为通知失败,会在规定的时间内持续调用 notify_url,一般有时间或次数的限制);
- 针对支付订单在数据库中存储是否完整和正确进行校验(比如:第三方订单号–方便与第三方对账
和问题排查、订单金额、订单状态等);
- 如果是用户购买实物商品,用户发起退货,要保证退货流程正常,资金能正常返还,要考虑下并发
情况的验证以确保安全性;
- 如果是用户购买虚拟商品,比如话费、油卡之类的商品,只有在发货失败的时候才能发起退货,注
意验证;
三、常用自动化测试工具机器运行原理,写出一段元素查找的代码?
webdriver 原理:
- 每个 Selenium 命令,这里指的是所谓的基础操作,例如,点击、输入等,都会创建一条 HTTP 请求,
- 发送给 Browser WebDriver
- Browser WebDriver 使用一个 HTTP Server 监听和接收 HTTP 请求
- HTTP Server 根据协议规则定义这些 Selenium 命令对应的浏览器具体操作
- 浏览器执行这些操作
- 浏览器将执行状态返回给 HTTP Server
- HTTP Server 再将这些状态信息返回给自动化脚本
四、如何开展自动化测试框架的构建?
- 我们公司的自动化测试框架主要是有页面库,数据驱动,测试脚本,测试报告,持续集成这几个部分组成的。
- 页面对象库对自动化包括工具(selenium,appium)API 的二次封装,还有使用二次封装后的自动化工具类实现的页面元素封装(Page Object)然后会给封装好的页面设置一个统一入口类。这些之中会有一个页面元素文件专门存放元素的定位方法。
- 数据驱动部分主要是测试脚本中使用的数据文件(excel,yaml,txt)以及读取方法类,如果数据涉及到数据库,也会把对应的数据读取方法封装到这个部分。
- 测试脚本主要是通过 pytest 测试框架进行编写的,选择其的原因主要有其支持 assert 语句断言,适合复杂的功能测试,执行过程中可以自定义用例执行顺序和跳过以及预期,支持重复执行,还可兼容 unittest 编写的测试用例,最重要的是支持参数化和方便持续集成工具集成。
- 测试报告主要是通过 pytest 自动生成的 Allure 报告,其可读性可生动的数据表图比 pytest 报告更能反应测试结果,也可以集成与 Jenkins 中。
- 持续集成方面主要是通过 Jenkins 进行实现的,目的在于测试脚本的无人值守执行以及自动生成测试报告,方便测试人员能够省出时间进行更多的功能测试和探索性测试。(通过设置几个 git,gitlab,mailer,allure,等功能插件,配置 Allure 报告,默认邮件发送设置。用例脚本主要存放在 gitlab 用例库中,设置好轮询策略之后,配置报告发送的目标邮箱,就可以实现持续集成实践中的测试环节)
五、如何设计自动化测试用例: :
- 编写测试脚本之前要编写测试用例,而且测试用例不能直接使用手工测试的用例。
- 自动化的测试用例是一个完整的场景。用户登录系统到用户退出。
- 用例之验证一个功能点。不用试图登陆后验证所有的功能在退出
- 测试用例尽量只做正向的逻辑验证。
- 用例之间不要产生关联,相互独立,也要高内聚,低耦合
- 测试用例关注的是功能逻辑的实现,字段无关
- 测试用例的上下文必须有一定的顺序性,前置条件清晰
- 检查点的设置要侧重,全面,灵活
- 测试用例对数据的操作要进行还原
- 测试用例必须是可回归的
- 用例选择遵循成本始终,构建场景,目的冒烟回归,繁琐功能,主体流程
- 用例转型遵循前置配置,抛异常,步骤验证,高内聚,关门归原
六.webdriver 如何开启和退出一个浏览器?
- 开启:dr = webdriver.浏览器类型()
- 关闭:dr.quit()
自动化测试是一个经验积累的过程,只有自己不断的去学习,去进步才有更好的发展空间,这是个人经验,有什么不对的欢迎在评论区留言!