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进行规格选择与性能压测。
目录
相关文章
|
1月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
125 31
Selenium IDE:Web自动化测试的得力助手
|
1月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
232 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
1月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
228 17
Selenium:强大的 Web 自动化测试工具
|
1月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
327 6
Selenium IDE:Web自动化测试的得力助手
|
3月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
101 4
|
3月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
87 4
|
8天前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
67 11
|
4月前
|
机器学习/深度学习 运维 Prometheus
构建高效运维体系:从自动化部署到智能监控的全方位实践
在当今数字化时代,企业对运维效率和稳定性的要求越来越高。本文将探讨如何构建一个高效的运维体系,从自动化部署、持续集成与持续交付(CI/CD)、智能监控、故障管理以及数据驱动决策等方面进行深入分析和实践指导。通过这些方法,企业可以实现更快速、更可靠的软件发布和问题解决,提升整体运营效率。
|
2月前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
2月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
129 1

热门文章

最新文章