自动化测试 - 黑马头条测试项目笔记
该项目是一款对新闻发布审核查看的项目,分为三个子系统,自媒体端、后台管理系统、和APP客户端,自媒体端是基于PC网站的,可以进行自媒体用户的发布文章需求,后台管理系统也是基于PC网站的,可以进行管理人员的审核文章需求,APP端是用户使用app查看文章
该工作主要是对这三个业务需求去做自动化测试脚本的编写,用到的技术栈有:python,测试框架是pytest,用selenium去进行web自动化测试,使用appium和ADB命令去进行app自动化测试,使用requests实现接口自动化测试,实现了一个PO面向对象模式的封装,基于DDT数据驱动的设计,提高代码的可维护性和复用性,还用了日志处理、错误截图、Allure生成测试报告
然后针对项目的三个子系统的功编写自动化测试脚本,主要有针对自媒体端的发布文章、后台管理系统的审核文章、App端的查看文章用例进行测试脚本的编写,除了这三个主要功能,还需要每个子系统的登录功能这个前置用例的编写
此外这个接口自动化测试主要是自媒体端的登录和发布文章接口,后台管理系统的登录、查看文章、审核文章的接口、APP端的登录、查看文章的接口进行编写,针对这个性能测试的话 主要用locust和ADB命令对web端和APP的性能监视
UI自动化测试流程
自动化测试流程
- 需求分析(去对业务进行需求分析,分析每个子系统他的功能模块的主要作用
- 挑选适合做自动化测试的功能(根据需求,我们选取项目的核心业务进行测试:如我们针对自媒体web端的发布文章功能,后台管理web端的审核文章功能,app端的查看文章的功能进行业务和功能分析;
- 设计测试用例(根据所选的自动化测试的功能,去设计每个功能模块的测试用例:比如实现自媒体web端的发布文章功能时,我们需要对自媒体用户的登录和发布文章用例进行测试)
- 搭建自动化测试环境
- web自动化测试环境
- python开发者工具(使用的是pycharm配置 python的解释器)
- 浏览器、浏览器驱动(谷歌
- Selenium(自动化测试框架
- app自动化测试环境(5个)
- 手机或模拟器mumu、安卓sdk、python开发工具
- appium服务器 去进行测试的
- appium服务客户端
- web自动化测试环境
- 设计自动化测试的项目架构(用哪些文件夹 根据是否用po模式、日志、数据驱动)
- 编写代码 7. 执行测试用例 8. 生成测试报告(使用allure)并分析结果
- 注意:自动化测试所属功能测试(此时功能用例已经完成)
- 在功能测试之后
- 与功能测试所属一个项目
使用了PO面向对象模式和DDT数据驱动方法搭建的自动化测试脚本的框架
针对PO模式,对业务流程进行分层,将页面的公共方法、页面的业务流程、和测试脚本进行分层,搭建了
- Base层:存放所有⻚⾯公共⽅法(查找元素、点击操作
- Page层:当前⻚⾯要操作的对象的封装(发布文章页面的输入文章标题、内容、选择图片、点击发布等业务流程,最后设计同意入口类方便测试脚本的调用
- Script层:写一些测试用例脚本层(登录、发布文章、审核文章、查看文章
- 代码复⽤性 2、脚本层与业务分离,便于维护 -- 如果元素信息发⽣变化了,也不⽤去修改脚本
针对DDT数据驱动,将测试数据和代码进行分离,更好的维护我们的代码
-
- 便于维护(维护的焦点从代码转到测试数据)
- 1、编写数据存储文件 2、编写读取数据工具 3、使用参数化引用
- 参数化引用@pytest.mark.parametrize
- Data:测试数据存储
- Tool:存储工具
根据日志处理,搭建:日志目录 log包
根据bug截图需求,搭建截图目录 image包
根据测试报告的生成,搭建报告目录 report包
产品介绍
负载均衡
负载均衡:负载均衡器nginx
- 可以将工作任务分摊到多个处理单元, 提高并发处理能力
- 负载均衡器建立在现有网络结构上, 使用它可以实现网络设备的带宽, 增加吞吐量, 加强网络数据的处理能力, 提高网络的灵活性和可用性
- 根据不同的请求,可以根据不同的区域分配给不同的服务器
负载均衡器在工作当中, 要么使用nginx(软件负载均衡), 要么使用F5(硬件负载均衡), 如果使用的是阿里云或者是腾讯云, SLB负载均衡, nginx既可以做负载均衡, 也可以做web前端的中间件
消息队列
消息队列(Message Queue, MQ)是
- 在消息传输过程中保存消息的容器
- 消息队列中间件是分布式系统中重要的组件, 主要解决应用解耦, 异步消息, 流量削峰等问题, 实现高性能, 高可用, 可伸缩和最终一致性架构
- 目前使用较多的消息队列有:
Kafka, ActiveMQ, RabbitMQ, ZeroMQ, MetaMQ, RocketMQ
应用场景
- 异步处理 => 将业务逻辑处理由串行方式变成并行方式(好友推荐, 新闻推荐)
- 应用解耦 => 消息生产者不再直接将消息推送到消息使用者
订单系统 --> 库存系统
发送短信验证码
- 流量削峰 => 秒杀, 抢购活动(用户访问量过大, 导致流量暴增, 应用挂掉)
- 日志处理 => 将消息队列用到日志处理中, 解决大量日志传输的问题
测试功能模块
新建文章(自媒体端(第一个子系统)):
登录测试账号->内容管理->发布文章->输入文章标题->输入文章内容->设置封面->选择频道->点击发布->提示发布文章成功->进入待审核状态
- - - 新建文章成功、待审核
公共方法:查找元素、输入、点击
审核文章(后台管理系统(第二个子系统)):待审核需要后台管理去审核:
· 输入审核员账号登录->信息管理->内容审核->选择查询文章类型->点击是否审核通过->确认通过 (公共方法:查找元素、输入、点击)
查看文章(app端(第三个子系统)用户端)
手机模拟器:输入账号登录 -> 查看文章是否发布
测试用例
抽取功能用例转化为自动化用例
编写自动化测试用例的原则
- 自动化用例一般只实现核心业务流程或者重复执行率较高的功能
- 自动化测试用例的选择一般以"正向"逻辑的验证为主
- 不是所有的手工用例都可以使用自动化测试来执行
- 尽量减少多个用例脚本之间的依赖
- 自动化测试用例执行完毕后, 一般需要回到原点
- 自动化测试用例
自媒体两条用例:登录和发布文章
后台:登录和审核文章
-
项目实施
步骤:分析需求、设计测试点、编写⽤例覆盖测试点、执⾏⽤例、缺陷管理、测试总结
登录需求
- 输入正确的中国手机号(11位):文本框失去焦点的时候验证,红色,绿色
- 点击发送验证码:如果手机号文本框为绿色,弹出“点击按钮进行验证”;如果手机号文本框为红色,提示手机号不正确
- 点击按钮进行验证:拖拽图形到指定位置,按钮消失;拖拽图形未到指定位置,晃动提醒,滑块到初始位置;超过5次,提示尝试过多,请点击重试
- 输入验证码
- 正确的验证码,并勾选“我已经阅读同意”,点击登录,进入系统
- 错误的验证码,并勾选,点击登录,提示验证码错误
- 正确的验证码,未勾选,点击登录,提示勾选
- 点击登录:手机号、验证码都为绿色,勾选“我已经阅读并同意”,登录成功
-
登录功能测试点
参考黑马头条实战
登录模块
登录⽤例(登录成功、输入手机号模块进行,逆向)
验证码⽤例(验证码逆向)
兼容、布局⽤例(兼容、布局)
滑块
-
发布文章用例
需求: 1. 文章标题不能小于5个字符
- 文章内容不能为空
- 频道不能为空
- 封面选择(单图/三图/无图/自动)
- 点击选择图片(素材库/上传图片切换)
- 点击发表,提示新增文章成功,跳转到内容列表,文章状态显示待审核
- 点击存入草稿,提示新增文章成功,跳转到内容列表,文章状态显示草稿
太多了,急着写论文,下次再编辑吧(可以后台dd发word)