目录:导读
前言
1、什么项目适合做自动化测试?
答:一般来说,适合做自动化测试的项目应该满足以下几个条件:
项目需求稳定,变更不频繁。
项目周期较长,需要反复进行回归测试。
项目功能较复杂,涉及多个模块和接口。
项目质量要求较高,需要保证高覆盖率和高可靠性。
2、你参与过哪些类型的自动化测试项目?
答:我参与过以下几种类型的自动化测试项目:
Web UI自动化测试:使用Selenium WebDriver和Python编写测试脚本,对网页上的元素进行定位、操作和断言,验证网页的布局、功能和兼容性。
接口自动化测试:使用Requests和Python编写测试脚本,对HTTP接口进行请求、响应和断言,验证接口的正确性、性能和安全性。
性能自动化测试:使用Locust和Python编写测试脚本,对系统进行压力、负载和稳定性测试,评估系统的性能指标和瓶颈。
移动端自动化测试:使用Appium和Python编写测试脚本,对移动应用进行安装、启动、操作和断言,验证移动应用的功能和兼容性。
3、什么是PO模式?
答:PO模式(Page Object Model)是一种设计模式,用于将页面上的元素和操作封装成对象,从而实现页面与业务逻辑的分离。PO模式可以提高代码的复用性、可读性和可维护性,同时也可以降低代码的耦合度和冗余度。
4、PO模式的封装原则有哪些?
答:PO模式的封装原则有以下几个:
每个页面对应一个类,每个类对应一个文件。
每个类中定义页面上的元素属性和操作方法。
每个元素属性使用定位器(locator)来表示,每个操作方法返回相应的页面对象或结果。
每个类中不包含任何断言或验证逻辑,只负责页面上的元素和操作。
每个类中使用初始化方法(init)来实例化驱动对象(driver)和等待对象(wait)。
5、自动化中有哪三类等待?他们有什么特点?
答:自动化中有以下三类等待:
强制等待(sleep):指让程序暂停一定时间后再执行后续操作,时间是固定的,不受页面加载速度的影响。强制等待的优点是简单易用,缺点是浪费时间和资源,可能导致测试不稳定。
隐式等待(implicitly_wait):指设置一个全局的最大等待时间,在这个时间内,如果找到了元素,则继续执行后续操作,如果没有找到,则抛出异常。隐式等待的优点是可以提高测试效率和稳定性,缺点是只能判断元素是否存在,不能判断元素是否可见或可用。
显式等待(WebDriverWait):指设置一个特定的最大等待时间和一个或多个预期条件,在这个时间内,如果满足了预期条件,则继续执行后续操作,如果没有满足,则抛出异常。显式等待的优点是可以根据不同的条件进行灵活的等待,缺点是需要编写更多的代码。
6、selenium中如何保证操作元素的成功率?也就是说如何保证点击的元素一定是可以点击的?
答:selenium中保证操作元素的成功率有以下几种方法:
使用显式等待(WebDriverWait)和expected_conditions模块中的element_to_be_clickable条件,等待元素可见且可用后再进行点击操作。
使用JavaScript代码,通过execute_script方法执行document.querySelector或document.getElementById等方法,直接获取并点击元素。
使用ActionChains类,模拟鼠标移动到元素上,然后执行click或click_and_hold等方法,进行点击操作。
7、你的自动化用例的执行策略是什么?
答:我的自动化用例的执行策略如下:
根据测试需求和测试计划,将测试用例分为不同的模块和优先级,按照模块和优先级进行组织和管理。
根据测试环境和测试资源,将测试用例分配到不同的测试机器上,并行或串行执行。
根据测试场景和测试目标,使用pytest或robot framework等测试框架,通过标记、参数化、钩子等功能,灵活地选择和控制需要执行的测试用例。
根据测试结果和测试报告,对测试用例进行分析和评估,对失败或不稳定的用例进行重试或修复。
8、什么是持续集成?
答:持续集成(Continuous Integration)是一种软件开发实践,指在软件开发过程中频繁地将代码集成到主干上,并进行自动化构建、测试、部署等操作。持续集成可以提高软件质量、效率和可靠性,同时也可以减少风险和成本。
9、自动化测试的时候是不是需要连接数据库做数据校验?
答:自动化测试的时候是否需要连接数据库做数据校验取决于具体的测试需求和测试目标。
一般来说,在以下几种情况下需要连接数据库做数据校验:
当需要验证系统对数据库的增删改查操作是否正确时。
前端页面无法获知结果的时候,就需要操作数据库验证结果是否正确
纯接口测试中,没由提供任何可以直接获取结果的接口时,可以去数据库中验证结果是否正确
一些调用链路非常长才能知道一个结果是否准确时,可以通过数据库去验证结果是否正确
定时任务相关的业务:如数据同步,迁移等动作触发的时候可以考虑数据库验证结果
有些第三方的接口无法直接调用但是又步想mock的时候,可能需要往数据库修改数据进行后续操作
初始化或者清理测试数据的时候,可能需要数据库操作
以上等等是最常见的做法
10、如何在定位元素后高亮元素(以调试为目的)?
答:在定位元素后高亮元素有以下几种方法:
使用JavaScript代码,通过execute_script方法执行document.querySelector或document.getElementById等方法,获取元素对象,然后修改元素的style属性,如添加边框或背景色等。
使用ActionChains类,模拟鼠标移动到元素上,然后执行move_to_element或move_to_element_with_offset等方法,使元素处于悬停状态。
使用selenium IDE插件,录制或编辑测试脚本时,可以在右侧的界面中看到元素被高亮显示。
11、什么是关键字驱动测试?
答:关键字驱动测试是一种测试方法,指将测试用例中的操作步骤和验证点从测试脚本中分离出来,封装成一系列的关键字,如click、input、assert等。
在执行测试时,通过读取外部的关键字文件或表格,按照关键字的顺序和参数,调用相应的函数或方法来执行测试用例。
关键字驱动测试可以提高测试用例的可读性、可扩展性和可维护性,同时也可以降低编码难度和技术要求。
12、如何实现关键字驱动测试?
答:实现关键字驱动测试有以下几个步骤:
设计测试用例,确定需要封装的操作步骤和验证点,以及对应的关键字和参数。
准备关键字文件或表格,选择合适的文件或表格格式,如TXT、Excel、CSV等,并将关键字和参数填充到文件或表格中。
编写测试脚本,使用Python或其他语言编写测试脚本,定义一系列的函数或方法,对应不同的关键字和参数,并使用相应的模块或库,如selenium WebDriver、unittest、xlrd等,来实现操作步骤和验证点。
执行测试脚本,使用Python或其他语言编写执行器(executor),使用相应的模块或库,如os、csv、xml等,来读取关键字文件或表格中的数据,并根据关键字和参数,调用相应的函数或方法来执行测试用例。
生成测试报告,使用allure或reportlab等工具,来生成可视化的测试报告,并展示测试结果和数据。
做自动化测试的目的:
在聊自动化测试度量指标前,有必要回到做自动化的初衷上,就是为什么要做自动化测试,要解决什么问题。
在不同公司,对不同的团队和技术同学来讲,做自动化的目的各有不同。常见的目的有下面几点:
测试数据准备耗时长,为了提升造数据的效率而做自动化测试;
项目上线之前的核心业务链路回归,为了提升回归测试效率,这也是一种上线前的check手段;
提测前为了快速验证提测质量,作为一种冒烟测试手段提升效率,同时这也是一种测试左移的实践;
团队大业务线多,通过统一框架和协作规范来提升测试团队协作效率,减少造轮子,避免资源内耗浪费;
当然还有其他目的,总结一下,做自动化测试的目的主要是降本增效。即通过技术手段,提升测试过程效率和团队协作效率,新增测试回归验证手段,降低重复性工作投入成本。
制定度量指标要注意的:
制定度量指标时,建议遵循和考量如下几点:
切忌面向指标/面向KPI做度量;
考虑到冗余成本,指标不宜过多;
制定指标是为了提升质量,而非做数据;
根据做自动化测试的目的来制定度量指标;
度量指标对比应该以是否解决了痛点为依据;
度量指标是辅助评估依据,并不是唯一正确的结果;
制定指标应考虑到哪些指标更实际有效,从解决问题角度出发;
度量指标不要单一的评估,应结合多个维度来综合评估开展质量度量;
最新最全花1W买的Python+Selenium全栈Web自动化测试
下面是我整理的2025年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生最动人的风景,往往藏在最难攀爬的高处。当你觉得力竭时,请记住:每一次坚持都在雕刻更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!
你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!