Part 01
为什么使用自动化测试
自动化测试是一种使用软件工具和脚本来执行测试用例的方法,能够以比传统手动测试更高的效率、速度和准确性来验证软件的正确性。在不同阶段的开发周期中,自动化测试可以为团队带来诸多好处。
➤ 自动化测试提高了测试流程的效率
通过编写可复用的测试脚本,自动化测试能够快速而准确地执行大量用例,省去手动执行测试的繁琐过程。使得测试团队能够专注于更有意义的工作,如测试设计、缺陷管理和结果分析等。
➤ 自动化测试大大减少了人为错误的风险
相比于人工操作,自动化测试在执行测试过程中减少了潜在的人为错误,提高了测试的准确性和一致性。能够帮助团队更早地发现和修复问题,提高软件的稳定性和质量。
➤ 自动化测试可以提高测试覆盖率
通过编写全面的测试脚本,自动化测试能够覆盖更多的测试场景和边界条件,发现隐藏的缺陷并提前预防潜在问题,有助于降低软件开发周期中的风险,并提高用户体验。
在产品测试过程中,我们已经应用自动化测试并取得了显著的成果。无论是对于测试团队还是开发团队,自动化测试都能为我们节省大量时间和资源。传统的手动测试需要投入大量的人力和时间,而自动化测试可以帮助团队节约宝贵的时间和资源,让团队可以更好地应对快速迭代、紧张的发布计划和复杂的测试需求。
Part 02
常见的自动化测试方法对比
2.1 Python+Selenium
- 功能:主要用于自动化执行Web UI测试,可以模拟用户在浏览器中的行为,如点击、输入和页面导航等。
- 使用难度:需要基本的编程基础,编写脚本来模拟用户操作。
- 执行效率:需要实际运行浏览器来执行测试,可能会占用较多的系统资源和时间。尤其是在大型测试套件中,执行速度可能会受到影响。
- 生态系统与扩展性:作为Python的一部分,拥有强大的生态系统和丰富的第三方库,提供了大量的资源和支持。
2.2 Postman
- 功能:专注于接口测试和API测试,提供强大的界面和功能,可以轻松设置和发送HTTP请求,并验证返回结果。
- 使用难度:拥有直观友好的用户界面,无需编写代码,易于上手使用。即使没有编程经验,也可以通过简单的图形界面操作完成测试。
- 执行效率:由于直接发送HTTP请求,并且没有浏览器渲染的开销,因此执行速度相对较快,适合大规模的接口测试。
- 生态系统和扩展性:有庞大的用户社区和丰富的第三方插件,可以扩展测试的功能,例如生成报告、集成测试等。
2.3 Python+Requests
- 功能:灵活的HTTP库,用于发送各种类型的HTTP请求,如GET、POST、PUT和DELETE,并对响应进行验证。
- 使用难度:需要一定编程知识,通过编写Python脚本来发送HTTP请求和验证响应。对于有Python经验的开发人员来说会更加容易上手。
- 执行效率:具有较高的执行效率,适用于大型项目或需要频繁执行测试的情况。
- 生态系统和扩展性:作为Python的一部分,拥有庞大的社区和丰富的生态系统,可以轻松集成其他库和框架,满足复杂的测试需求。
图片
通过从功能效果、使用难度、执行效率和功能扩展等多方面进行综合考量可以得出结论,Python+Selenium
WebUi属于较重量级测试工具,要求产品界面稳定,功能变化小等要求;采用这种方式测试脚本输出的速度较慢,后期维护较为耗时间;而Postman的优点为上手较快,输出用例较快,但其缺点也比较明显,无测试套导致用例无法进行隔离,问题定位困难,团队协同开发存在一定困难;Python+Requests方法在覆盖度上较于UI自动化较弱,但无论是协同开发及登陆适配等,简单易用、轻量级、灵活性、可扩展性、丰富的资源和跨平台兼容性等均有一定优势,因此最终我们选择Python+Requests方法进行自动化测试。
Part 03
架构优势
自动化测试框架我们选择了Pytest,Pytest自动化框架主要具有以下优势:
- 简单灵活,容易上手
Pytest不需要使用繁琐的类继承和装饰器,而是使用了一种更简洁的测试函数和约定来组织测试代码;Pytest会自动查找项目中以"test_“开头或以”_test"结尾的文件、模块和函数,并将其识别为测试用例。此外,Pytest支持多种断言方式,包括内置的Assert语句、第三方的Assert库(如Pytest-assume、Pytest-check等)以及自定义的断言函数,可以选择最适合的断言方式,检查代码的正确性,快速定位问题,并及时修复。
- 支持参数化
Pytest支持参数化测试,可以使用@Pytest.mark.parametrize装饰器为测试函数传递不同的参数,并运行多次测试,简化重复测试代码的编写和维护,提高测试用例的重用性。
- 丰富的插件生态系统并且可以自定义扩展
Pytest拥有大量的第三方插件,可通过安装配置插件来扩展和定制测试框架的功能,从而满足各种测试需求。而且,Pytest可以和Allure结合生成非常易读的定制的报告,还可以和Jenkins实现持续集成。
图片
总体来说,Pytest是一个功能强大、易用且灵活的自动化测试框架。无需手动管理测试套件,可以快速添加、删除或修改测试文件,简化了测试用例的组织和维护。它广泛应用于Python项目中,为测试团队提供了一种简洁、高效和可拓展的方式来编写和管理测试用例。Pytest的高灵活性和高扩展性,使得定制化测试框架变得非常简单。
Part 04
实践应用
根据自动化测试的特点,能够应用自动化测试的产品应是需求稳定,不会频繁进行变更,研发和维护周期较长,需要频繁执行回归测试,需要在多种平台上重复运行相同测试场景,且开发较为规范,系统可测试性高的产品。
目前,我们已经使用Python+Requests+Pytest自动化测试方法,在产品测试过程中进行实践应用,整体框架主要分为四层:
1、用例组织层:使用Pytest框架,包括TestCase,Allure测试报告模块,RunTestCase启动模块及操作日志记录,用例组织层主要用于最终的用例连跑,测试报告输出及日志记录输出。
2、自动化测试核心代码层:以页面为单位组织实现相关业务,提供给上层,即用例组织层进行业务判断。
3、Tools模块:主要常用工具模块,如日志模块,Token获取方法,读取参数工具,提供给上层使用。
4、配置文件模块:该层主要记录静态配置,如URL,Body体以及测试环境等相关信息。除Config配置文件,还需形成一个Excel文件,进行URL管理、URL别名管理、Body管理等。
图片
在进行自动化脚本的编写过程中,我们主要遵循以下原则:
1、用例之间应是独立的,没有依赖关系,可以独立运行。
2、用例执行没有顺序要求,随机顺序可以正常执行。
3、每个用例都能重复运行,运行结果不会影响其他用例。
使用这种自动化测试方法,在对产品进行自动化测试时可自定义测试模块,在每次用例脚本连跑完成后,能够直接生成清晰、易读性高的测试报告。
Part 05
实践效果
当前该自动化测试方法已在中移系统集成有限公司智慧城市平台部7个产品进行实践应用,预计产生自动化功能用例超过1500个,当前已完成85%以上。我们完成了多个产品的自动化工程部署,支持一键式运行,测试模块可选择,测试环境可灵活变更,测试报告可实时生成在线查看,整体流程最快缩短至5分钟,加速了测试过程并极大地提升了测试效率,有力地保障产品质量及稳定性。