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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: python自动化测试实战 —— CSDN的Web页面自动化测试

软件测试专栏


1. 测试页面的介绍

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

  • CSDN首页页面:CSDN的首页是用户访问CSDN网站的入口页面,展示了最新的技术文章、博客、问答等内容。测试目标是验证CSDN首页页面是否成功加载,包括页面元素是否正确显示、数据是否正常加载等。
  • CSDN登录功能:CSDN网站提供了用户登录功能,用户可以通过手机扫码进行登录,以便享受更多的个性化服务和参与社区互动。测试目标是验证登录功能是否正常,包括是否正确验证、登录后是否跳转到用户个人页面等。
  • 页面顶部导航链接:CSDN网站的页面顶部包含了一系列导航链接,用于用户浏览和切换不同的内容板块。测试目标是验证顶部导航链接是否正常跳转,包括点击链接后页面是否正确切换到对应板块的内容。
  • 搜索功能:CSDN网站提供了搜索功能,用户可以通过输入关键词进行搜索,以查找相关的技术文章、博客或问答。测试目标是验证搜索功能是否正常,包括搜索结果是否准确、搜索框是否响应等。
  • 页面的文章链接:CSDN的页面中展示了大量的技术文章和博客,用户可以点击文章链接进行阅读和查看详情。测试目标是验证页面的文章链接是否正常跳转,包括点击链接后是否成功打开文章页面、文章内容是否正确显示等。
  • 页面加载性能:页面加载性能是指页面打开所需的时间和资源消耗情况。测试目标是验证页面加载性能是否在合理范围内,包括页面打开时间是否在预期范围、资源请求和加载是否高效等。

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

2. 测试用例设计

用例ID 用例等级 用例标题 前置条件 操作步骤 预期结果
test_CSDNPageLoad L1 页面加载 1. 打开网页 页面成功加载,无错误提示
2. 检查页面是否成功加载
test_UserLoginTest L2 登录 打开网页 1. 打开网页 成功跳转到用户个人主页,显示用户相关信息
2. 点击页面顶部的“登录”链接
3. 手机扫码登录
4. 再次点击登录按钮(成功登录后变成用户的头像)
5. 检查是否成功跳转到用户个人主页
test_CSDNNavigation L3 点击页面顶部导航链接跳转 打开网页 1. 打开网页 成功跳转到对应的页面
2. 点击页面顶部导航栏中的每个链接(例如:博客、下载、学习等)
3. 检查是否成功跳转到对应的页面
test_CSDNSearch L3 搜索 打开网页 1. 打开网页 搜索结果页面正确显示包含关键词 “自动化测试” 的搜索结果
2. 在搜索框中输入关键词 “自动化测试”
3. 点击搜索按钮
4. 检查搜索结果页面是否正确显示搜索关键词
test_CSDNArticleView L3 点击页面的文章的链接跳转 打开网页 1. 打开网页 成功跳转到对应的页面
2. 点击页面的第一个文章的链接
3. 检查是否成功跳转到对应的页面
test_CSDNPageLoadPerformance L2 页面加载性能 打开网页 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页面进行功能和性能测试



相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
16天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2天前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
|
5天前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
16天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
41 10
|
28天前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!
|
4月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
56 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
4月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
50 1
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
95 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4月前
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
35 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
4月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 函数与内置函数
本文详细介绍了Python中的函数概念,包括自定义函数、参数传递、局部与全局变量,以及内置函数的使用,还扩展了匿名函数、return和yield、exec()、vars()、iter()、map()、zip()、reversed()和sorted()等高级函数和概念。
38 1
Python接口自动化测试框架(基础篇)-- 函数与内置函数

热门文章

最新文章

下一篇
DataWorks