python自动化测试实战 —— CSDN的Web页面自动化测试

软件测试专栏

感兴趣可看:软件测试专栏
                     自动化测试学习部分源码
python自动化测试相关知识:
       【如何学习Python自动化测试】—— 自动化测试环境搭建
       【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
       【如何学习Python自动化测试】—— 页面元素定位
       【如何学习Python自动化测试】—— 时间等待
       【如何学习Python自动化测试】—— 浏览器操作
       【如何学习Python自动化测试】—— 鼠标键盘操作
       【如何学习Python自动化测试】—— 多层窗口定位
       【如何学习Python自动化测试】—— 警告框处理
       【如何学习Python自动化测试】—— Cookie 处理
       【如何学习Python自动化测试】—— expected_conditions
       【如何学习Python自动化测试】—— Python 的 unittest 框架
       【如何学习Python自动化测试】—— HTMLTestRunner 生成测试报告


CSDN的Web页面自动化测试

  • 软件测试专栏
  • 1. 测试页面的介绍
  • 2. 测试用例设计
  • 3. 测试框架介绍
    • 难易程度
    • 封装程度
  • 4. 具体的自动化测试脚本
    • PageObject包
    • Scenario包
    • TestCase包
  • 5. 测试结果以及测试报告
  • 6. 总结
  • 7. 分录

1. 测试页面的介绍

      CSDN(China Software Developer Network)是中国最大的IT社区和知识分享平台,提供了丰富的技术文章、博客、问答等内容,吸引了大量的开发者和技术爱好者。测试的目标是针对CSDN的Web页面进行功能和性能测试。
在这里插入图片描述

  • CSDN首页页面:CSDN的首页是用户访问CSDN网站的入口页面,展示了最新的技术文章、博客、问答等内容。测试目标是验证CSDN首页页面是否成功加载,包括页面元素是否正确显示、数据是否正常加载等。

  • CSDN登录功能:CSDN网站提供了用户登录功能,用户可以通过手机扫码进行登录,以便享受更多的个性化服务和参与社区互动。测试目标是验证登录功能是否正常,包括是否正确验证、登录后是否跳转到用户个人页面等。

  • 页面顶部导航链接:CSDN网站的页面顶部包含了一系列导航链接,用于用户浏览和切换不同的内容板块。测试目标是验证顶部导航链接是否正常跳转,包括点击链接后页面是否正确切换到对应板块的内容。

  • 搜索功能:CSDN网站提供了搜索功能,用户可以通过输入关键词进行搜索,以查找相关的技术文章、博客或问答。测试目标是验证搜索功能是否正常,包括搜索结果是否准确、搜索框是否响应等。

  • 页面的文章链接:CSDN的页面中展示了大量的技术文章和博客,用户可以点击文章链接进行阅读和查看详情。测试目标是验证页面的文章链接是否正常跳转,包括点击链接后是否成功打开文章页面、文章内容是否正确显示等。

  • 页面加载性能:页面加载性能是指页面打开所需的时间和资源消耗情况。测试目标是验证页面加载性能是否在合理范围内,包括页面打开时间是否在预期范围、资源请求和加载是否高效等。

      通过对以上测试目标的测试,可以确保CSDN的Web页面在功能和性能方面的稳定和优化,提供良好的用户体验和可靠的技术内容。同时,测试也有助于发现和解决潜在的问题和改进空间,提高网站的质量和可靠性。

在这里插入图片描述

2. 测试用例设计

用例ID用例等级用例标题前置条件操作步骤预期结果
test_CSDNPageLoadL1页面加载1. 打开网页页面成功加载,无错误提示
2. 检查页面是否成功加载
test_UserLoginTestL2登录打开网页1. 打开网页成功跳转到用户个人主页,显示用户相关信息
2. 点击页面顶部的“登录”链接
3. 手机扫码登录
4. 再次点击登录按钮(成功登录后变成用户的头像)
5. 检查是否成功跳转到用户个人主页
test_CSDNNavigationL3点击页面顶部导航链接跳转打开网页1. 打开网页成功跳转到对应的页面
2. 点击页面顶部导航栏中的每个链接(例如:博客、下载、学习等)
3. 检查是否成功跳转到对应的页面
test_CSDNSearchL3搜索打开网页1. 打开网页搜索结果页面正确显示包含关键词 “自动化测试” 的搜索结果
2. 在搜索框中输入关键词 “自动化测试”
3. 点击搜索按钮
4. 检查搜索结果页面是否正确显示搜索关键词
test_CSDNArticleViewL3点击页面的文章的链接跳转打开网页1. 打开网页成功跳转到对应的页面
2. 点击页面的第一个文章的链接
3. 检查是否成功跳转到对应的页面
test_CSDNPageLoadPerformanceL2页面加载性能打开网页1. 打开网页,记录开始时间页面加载时间在合理范围内(例如,小于10秒)
2. 等待页面加载完成
3. 记录结束时间
4. 检查页面加载时间是否在合理范围内

3. 测试框架介绍

在这里插入图片描述

图1:项目框架

难易程度

   该框架相对来说有一定的复杂性,因为使用了多个不同的工具和库,包括但不限于:

  1. expected_conditions:用于定义不同的预期条件,例如等待元素可见、等待元素存在等,配合WebDriverWait使用。
  2. WebDriverWait:提供了等待机制,用于等待页面元素的出现或特定条件的满足,以增加测试的稳定性和可靠性。
  3. By:用于指定元素的定位方式,例如通过ID、XPath、CSS选择器等来定位页面元素。
  4. time:提供了与时间相关的功能,例如等待指定时间间隔、延时执行等,用于控制测试执行过程中的时间。
  5. unittest:Python的标准单元测试框架,用于编写和执行测试用例,并提供了断言方法和测试报告生成等功能。
  6. pytest:一种Python的第三方测试框架,提供了更丰富的测试功能和灵活的测试用例组织方式,例如参数化测试、测试夹具等。
  7. CSDNActions:自定义的页面操作类,封装了与CSDN网站交互的动作方法,例如打开网页、点击按钮、切换窗口等。
  8. CSDNElements:自定义的页面元素类,封装了与CSDN网站相关的元素定位信息,例如按钮、链接、输入框等。
          这些工具、库和自定义类的使用使得测试框架具备了更丰富的功能和更高的封装程度,能够进行元素定位、等待条件满足、执行页面操作、编写和执行测试用例等操作,提供了丰富的功能和灵活性,使得测试框架具备了较强的扩展能力和适应性。同时,框架中还涉及到一些如条件等待、参数化测试等知识。

封装程度

  1. PageObject包:其中的csdn_actions.py和csdn_elements.py文件提供了对CSDN网站的页面操作和元素定位的封装。通过封装页面操作和元素定位,可以在测试用例中使用简洁的代码来执行复杂的页面操作,提高了代码的可读性和可维护性。
  2. Scenario包:其中包含了多个场景文件,如SearchScenario.py、PageLoadScenario.py等,每个场景文件对应于一类测试场景,封装了执行该类测试场景所需的操作和断言。通过将测试场景进行封装,可以更好地组织和管理测试用例,提高代码的可复用性。
  3. TestCase包:其中包含了多个测试用例文件,如test_CSDNArticleView.py、test_CSDNNavigation.py等,每个测试用例文件对应于一个具体的测试案例。通过编写测试用例文件,可以实现对不同功能和场景的测试覆盖,同时利用框架提供的断言方法进行结果验证。

4. 具体的自动化测试脚本

PageObject包

  • 封装页面操作(csdn_actions.py):
          定义了一个基础页面类(BasePage)和 CSDN 页面操作类(CSDNActions),通过封装常用的页面操作方法和等待条件,提供了便于编写自动化测试的接口和功能。
          BasePage类作为所有页面类的基类,初始化时接受一个驱动对象,用于与浏览器进行交互。
          CSDNActions类继承自BasePage类,封装了对CSDN网页的各种操作方法,例如打开 CSDN 首页、点击登录按钮、点击博客链接、输入搜索关键字、点击搜索按钮等。
          其中使用了WebDriverWait 类和expected_conditions 模块,用于等待页面元素的出现或特定条件的满足,以增加测试的稳定性和可靠性。
          通过这些封装的方法,可以在测试用例中以简洁的方式执行各种页面操作,并且提供了一些辅助方法如等待页面标题、等待元素文本、测量页面加载时间等。

在这里插入图片描述

图2:封装页面操作(csdn_actions.py)代码
  • 封装元素定位(csdn_elements.py):
          定义了一个CSDNElements类,用于存储CSDN页面中各个元素的定位方式和表达式。
          这样的设计可以使代码更加模块化和可维护,当页面元素发生变化时,只需修改CSDNElements类中对应元素的定位方式和表达式,而不需要修改具体的页面操作方法。

在这里插入图片描述

图3:封装元素定位(csdn_elements.py)代码

Scenario包

      每个场景封装成一个类,使测试脚本更加模块化和可读性高,方便扩展和维护。

  • 页面加载的场景脚本(PageLoadScenario.py):
          将页面加载的场景封装成一个类,通过调用方法来执行场景,并返回结果。

在这里插入图片描述

图4:页面加载的场景脚本(PageLoadScenario.py)代码
  • 用户登录的场景脚本(LoginScenario.py):
          将用户登录的场景封装成一个类,通过调用方法来执行场景,并返回结果。

在这里插入图片描述

图5:用户登录的场景脚本(LoginScenario.py)代码
  • 页面导航链接跳转的场景脚本(NavigationScenario.py):
          将页面导航链接跳转的场景封装成一个类,通过调用方法来执行场景,并返回结果。
    在这里插入图片描述
图6:页面导航链接跳转的场景脚本(NavigationScenario.py)代码
  • 正确显示搜索关键词页面的场景脚本(SearchScenario.py):
          将搜索关键词页面正确显示的场景封装成一个类,通过调用方法来执行场景,并返回结果。
    在这里插入图片描述

    图7:正确显示搜索关键词页面的场景脚本(SearchScenario.py)代码

  • 跳转到页面第一个文章页面的场景脚本(ArticleViewScenario.py):
          将跳转到页面第一个文章页面的场景封装成一个类,通过调用方法来执行场景,并返回结果。
    在这里插入图片描述

图8:跳转到对应页面的场景脚本(ArticleViewScenario.py)代码
  • 页面加载时间测试的场景脚本(PageLoadPerformanceScenario.py):
          通过封装页面加载时间是否在合理范围内的场景到一个类中,可以方便地进行性能测试,并根据加载时间的结果判断页面加载性能是否符合预期。

在这里插入图片描述

图9:页面加载时间测试的场景脚本(PageLoadPerformanceScenario.py)代码

TestCase包

      通过编写测试类和测试方法,可以对测试用例进行自动化测试,并使用 pytest执行测试,生成测试报告,方便查看测试结果和问题定位。

  • CSDN页面加载测试(test_CSDNPageLoad.py):

在这里插入图片描述

图10:CSDN页面加载测试(test_CSDNPageLoad.py)代码
  • CSDN用户登录测试(test_CSDNUserLogin.py):

在这里插入图片描述

图11:CSDN用户登录测试(test_CSDNUserLogin.py)代码
  • 点击页面顶部导航链接跳转(test_CSDNNavigation.py):

在这里插入图片描述

图12:点击页面顶部导航链接跳转(test_CSDNNavigation.py)代码
  • 搜索测试(test_CSDNSearch.py):

在这里插入图片描述

图13:搜索测试(test_CSDNSearch.py)代码
  • 点击页面的文章的链接跳转测试(test_CSDNArticleView.py):

在这里插入图片描述

图14:点击页面的文章的链接跳转测试(test_CSDNArticleView.py)代码
  • 页面加载性能测试(test_CSDNPageLoadPerformance.py):

在这里插入图片描述

图15:页面加载性能测试(test_CSDNPageLoadPerformance.py)代码

5. 测试结果以及测试报告

      使用pytest对TestCase包的所有测试用例进行自动化测试,生成测试报告,将测试结果生成为 HTML 格式的报告方便查看测试结果和问题定位。

在这里插入图片描述

图16:所有测试都成功生成测试报告
  • 页面加载测试报告:

在这里插入图片描述

图17:页面加载测试报告

在这里插入图片描述

图18:页面加载
  • 登录测试报告:

在这里插入图片描述

图19:登录测试报告
  • 点击页面顶部导航链接跳转报告:

在这里插入图片描述

图20:点击页面顶部导航链接跳转报告

在这里插入图片描述

图21:登录成功
  • 搜索测试报告:

在这里插入图片描述

图22:搜索测试报告

在这里插入图片描述

图23:搜索自动化测试
  • 点击页面的文章的链接跳转测试报告:

在这里插入图片描述

图24:点击页面的文章的链接跳转测试报告

在这里插入图片描述

图25:页面第一个文章为“为什么说 AI 将拯救整个世界?”

在这里插入图片描述

图26:成功打开第一个文章
  • 页面加载性能测试报告:

在这里插入图片描述

图27:页面加载性能测试报告

6. 总结

      CSDN作为中国最大的IT社区和知识分享平台,承载着大量的技术内容和用户交流。为了确保CSDN网站的质量和稳定性,本次实验旨在对其Web页面进行功能和性能测试。通过编写测试用例,验证CSDN首页页面加载、登录功能、导航链接、搜索功能、文章链接跳转和页面加载性能等方面的表现。

      本次实战设计了六个测试用例,分别对应不同的功能和性能要求,包括:验证CSDN首页页面是否成功加载、验证登录功能是否正常、验证页面顶部导航链接是否正常跳转、验证搜索功能是否正常、验证页面的文章链接是否正常跳转、验证页面加载性能是否在合理范围内。

      执行测试用例使用了Selenium和pytest进行自动化测试,并使用了Page Object模式进行页面对象的封装,以及使用了Scenario和TestCase进行测试场景和测试用例的划分。

      PageObject包封装了与CSDN网站交互的动作和元素定位相关的方法和类。这种封装使得测试用例能够通过调用这些方法来执行相应的操作,从而使测试代码更加简洁和可维护。

      Scenario包中包含了不同的测试场景,通过调用PageObject包中的方法来执行相应的操作。

      TestCase包中包含了具体的测试用例文件,每个文件对应一个具体的测试场景,使用pytest框架执行测试,并生成测试报告。在每个测试用例中,使用断言来判断预期结果和实际结果是否一致,从而验证功能和性能是否符合要求。

      总的来说将页面对象、测试场景和测试用例进行了分离和封装,使得测试代码结构清晰、可读性好,并提供了易于维护和扩展的能力。通过这个完整的自动化测试框架和测试用例的编写,我们可以测试CSDN的Web页面,确保各项功能和性能的正常工作,提高测试效率和准确性。

      通过执行测试用例,得到了相应的测试结果和日志。根据测试报告和日志的分析,可以得出以下结论:CSDN首页页面成功加载,各个元素和数据正常显示;登录功能正常,账号密码验证和页面跳转均符合预期;页面顶部导航链接正常跳转,页面内容正确切换到对应板块;搜索功能正常,搜索结果准确,搜索框响应及时;页面的文章链接正常跳转,文章页面内容正确显示;页面加载性能在合理范围内,页面打开时间和资源加载高效。根据测试结果,CSDN的Web页面在功能和性能方面表现稳定可靠,提供了良好的用户体验和可靠的技术内容。同时,测试也发现了一些潜在的问题和改进空间,如页面加载速度可以进一步优化、搜索功能的搜索结果排序等。


7. 分录

源码下载:自动化测试-CSDN的Web页面进行功能和性能测试


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot入门知识

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

前端体系:前端应用

目录 前端体系基础 html(超文本标记语言) css(层叠样式单) javascript() 一、前端体系概述 二、前端框架 React Vue Angular 三、前端库和工具 lodash Redux Webpack 四、模块化和组件化 ES…

微软AutoGen框架:AI的新时代,你的新机遇

一、引言 在科技日新月异的今天,人工智能已经深入到我们生活的各个角落。无论是智能手机、智能家居还是自动驾驶汽车,人工智能的应用无处不在。而在这个领域中,微软AutoGen框架无疑是一颗璀璨的新星。它以其独特的创新性和实用性&#xff0c…

【网络通信原理之套接字】

目录 概念 分类 数据报套接字:使用传输层UDP协议 流套接字:使用传输层TCP协议 原始套接字 Socket编程注意事项 前言:本文主要介绍了在什么是套接字及在Java中套接字是什么,和在套接字编程的注意事项。 概念 Socket套接…

大数据技术之Hive(超级详细)

第1章 Hive入门 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 …

WPF实现更加灵活绑定复杂Command(使用Microsoft XAML Behaviors 库)

1、安装NuGet 2、在XAML的命名空间引入&#xff1a; xmlns:i"http://schemas.microsoft.com/xaml/behaviors" 3、使用&#xff1a; <Canvas Background"Aqua"><Rectangle Stroke"Red" Width"{Binding RectModel.RectangleWidth}…

Java面向对象思想以及原理以及内存图解

文章目录 什么是面向对象面向对象和面向过程区别创建一个对象用什么运算符?面向对象实现伪代码面向对象三大特征类和对象的关系。 基础案例代码实现实例化创建car对象时car引用的内存图对象调用方法过程 成员变量和局部变量作用范围在内存中的位置 关于对象的引用关系简介相关…

Leetcode刷题笔记题解(C++):328. 奇偶链表

思路&#xff1a;遍历链表生成奇链表和偶链表&#xff0c;然后拼接两个链表生成新的链表。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), ne…

JS基础之作用域链

JS基础之作用域链 作用域链作用域链函数创建函数激活总结 作用域链 当JavaScript代码执行一段可执行的代码&#xff08;execution code&#xff09;时&#xff0c;会创建对应的执行上下文&#xff08;execution context&#xff09;。 对于每个执行上下文&#xff0c;都有三个重…

恢复出厂设置后在 Android 上恢复照片的 6 种常用方法

恢复出厂设置可帮助您删除电子设备的所有信息并将其恢复到原始系统状态。但是&#xff0c;如果您不小心按下了恢复出厂设置按钮并从 Android 设备中删除了所有难忘的照片&#xff0c;该怎么办&#xff1f;好吧&#xff0c;您无需担心&#xff0c;因为可以通过以下一些方法来恢复…

Apache Flink(十三):Flink History Server

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

区块链的可拓展性研究【05】闪电网络

1.闪电网络&#xff1a;闪电网络是一种基于比特币区块链的 Layer2 扩容方案&#xff0c;它通过建立一个双向支付通道网络&#xff0c;实现了快速、低成本的小额支付。闪电网络的交易速度非常快&#xff0c;可以达到每秒数万笔交易&#xff0c;而且交易费用非常低&#xff0c;几…

04.仿简道云公式函数实战-QLExpress基础语法

1. 前言 小伙伴大家好&#xff0c;在上一篇文章我们简单初探了QLExpress表达式引擎&#xff0c;我们简单写了一个HelloWorld的程序&#xff0c;并成功的运行期望的结果。在本篇文章中我们来熟悉一下QLExpress的语法&#xff0c;因为我们在后面简道云公式实战的时候&#xff0c…

发布 Whatsonchain 上的 BSV20 插件

我们发布了 whatsonchain 上的 BSV20 插件来验证 BSV20 代币。 对于任何交易&#xff0c;whatsonchain 都可以通过以下网址打开&#xff1a; https://whatsonchain.com/tx/{hash}我们使用此 bsv20 v21 交易 打开 Whatsonchain 。 打开whatsonchain后你会看到BSV20插件&#x…

Linux系统安装MySQL8.0版本详细教程【亲测有效】

首先官网下载安装包&#xff1a;https://downloads.mysql.com/archives/community/ 一、上传到安装服务器 二、解压 tar -xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz三、移动位置并重新命名 mv mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local/mysql四、创建mysql用户…

官宣 | HelpLook已入驻企业微信应用市场

HelpLook正式入驻企业微信第三方应用市场。 HelpLook支持自定义域名与AI站内搜索&#xff0c;能够帮助企业微信用户搭建所见即所得的企业知识库、产品帮助中心、用户手册、企业博客。 | 怎么找到HelpLook并开始使用 在企业微信的第三方应用就可直接搜索HelpLook&#xff0c;添…

虚幻学习笔记14—重叠和碰撞事件

一、前言 在开发应用当中两个物体的重叠和碰撞事件会经常用到&#xff0c;在虚幻中哲两个有很大的区别&#xff0c;在官方文档碰撞概述其实已经讲了怎样发生碰撞和重叠&#xff0c;但是还是遗漏不少注意事项合细节&#xff0c;主要文档写的太粗糙了&#xff0c;这也让我在使用的…

Docker Compose入门:打造多容器应用的完美舞台

Docker Compose 是一个强大的工具&#xff0c;它允许开发者通过简单的 YAML 文件定义和管理多容器的应用。本文将深入讨论 Docker Compose 的基本概念、常用命令以及高级应用场景&#xff0c;并通过更为丰富和实际的示例代码&#xff0c;助您轻松掌握如何通过 Docker Compose 打…

数据结构和算法 - 前置扫盲

数据结构和算法 一、前置扫盲 1、数据结构分类 1.1 逻辑结构&#xff1a;线性与非线性 tip&#xff1a;逻辑结构揭示了数据元素之间的逻辑关系。 线性数据结构&#xff1a;元素间存在明确的顺序关系。 数据按照一定顺序排列&#xff0c;其中元素之间存在一个对应关系&#x…

Liunx系统挂载磁盘

1.具体步骤 大概五个步骤 添加磁盘磁盘分区格式化分区挂载分区到指定目录设置开机自动挂载 目标将sdb1分区挂载到/data目录 2.添加磁盘 使用lsblk -f命令可以查看当前系统磁盘情况 lsblk -f 可以看到已经有一个磁盘sda&#xff0c;现在我们给虚拟机增加一个磁盘 添加完成后…