基础知识 1.测试流程 2.项目流程 3.测试过程中发现印象最深刻的bug是什么?
技能:难度、偶然性等等。
4、测试结束的标准是什么? 5、测试手机短信功能时,应考虑哪些测试点?
测试思维
短信界面能否正常打开或进入? 短信编辑、修改、删除是否正常? 短信能否正常收发? 短信页面字体、颜色是否显示正常?【UI界面字体颜色、大小是否设置同步?】 短信字体是否可以调整? 短信能否同时成功发送给多人?【是否有多条或漏发短信?】 给特殊号码发短信
8. 接收验证码
9.短信耗电测试
10. 短信消耗流量吗?[一般不消耗流量]
11.短信干扰测试
6.你能想到笔的哪些用途?
测试思维拓展性
7. 测试资源需求有哪些? 8. 何时进行冒烟测试?
冒烟测试就是在某个新版本的开发完成后,针对该版本的最基本功能进行测试,确保基本功能和流程能够实现。
冒烟测试又叫版本验证测试、回滚测试等。冒烟测试主要是判断开发人员交付的回滚对象是否能正常运行,检查主要功能是否能正常运行。一般由一人进行短期测试,判断回滚对象是否符合回滚标准,是否值得进行大规模测试。次要功能和各种小错误一般不在冒烟测试中测试。
9.什么是验收测试,验收测试的目的是什么?
验收测试:一般由供需双方商定。通常由用户进行,以确认系统是否可以接受。验收测试是根据用户需求对业务流程进行的正式测试,以确保系统符合验收标准。通常由客户、产品经理、测试人员、项目经理等参与,目的是建立对系统的信心,赢得客户对系统非功能性特征的认可[例如小图标、界面设计]。
验收测试一般有三个主体。
测试:由软件开发人员自己进行的交付前测试
β测试:由软件需求方进行的测试
γ测试:第三方测试
10. 测试计划的内容和目的是什么?
测试计划一般包括产品概述、测试策略[测试方法:功能自动化性能]、测试资源、测试周期[时间]、进度安排、测试方法、风险分析等。
目的:指导测试过程,定义测试活动的范围、方法、资源安排等,明确测试项目、测试内容、人员职责分工,确保测试工作能按计划正常开展。
11. 详细描述用例设计的完整过程**12. 测试时发现bug,但是开发人员不认为是bug,怎么办? 13. TCP和UDP协议有什么区别? 14. 如何判断bug是前端的还是后端的?
判断主要依据界面,产品开发基本是前后端分离的。
抓包获取接口信息
1、检查请求接口URL、参数传递是否正确,页面展示数据是否异常,数据精度[100.00—>100]是否异常,交互过程是否异常,这些都是前端的bug。
2.接口参数传递异常、业务处理异常、接口报错异常等错误基本都是后端bug
3. 有时前端和后端都可以处理。考虑处理成本和影响范围,使用最佳方案处理。
15.抓包工具,为什么要用抓包工具?
,主要是抓取http协议的接口信息,用于辅助测试
使用:
1、从功能测试的角度来说,可以通过抓包工具查看页面中没有显示的隐藏字段,这些隐藏字段通常具有一些特殊的功能,可以帮助检查前后端功能是否存在异常。
2.通过抓包工具可以详细了解接口信息,方便进行接口或者性能测试
3、通过抓包工具可以检查前端参数字段加密是否正确,比如登录界面密码是否加密。检查数据加密是否正确,考虑安全性。
4.抓包也能帮助我更好的了解整个系统,通过抓包工具检查接口,可以确定该接口服务是由哪个后端服务提供的,这有助于我定位问题,分配bug。
5、基于抓包工具代理的特殊性,我可以手动篡改接口请求和返回信息下拉神器登录★64xl.com霸屏下拉词,下拉关键词排名,这样可以帮助我提交一些无法在页面上构造的数据情况或者数据结构,并且尽可能全面的测试,覆盖后端代码逻辑,发现一些隐藏的bug。【不确定】
6、同时我还可以通过抓包工具限制网络带宽,构造特殊场景来完成一些特殊的测试,比如app弱网测试。【例如:APP弱网测试】
16.你明白了吗?什么是root账户?
root 帐户是允许完全控制系统的系统管理员帐户。您可以使用 root 帐户创建和维护用户帐户,并为每个帐户分配不同的权限。root 帐户是每次安装的默认帐户。
使用什么命令来查看文件?LS 和 LL 有什么区别?
一般使用ls命令,ls命令会直接返回目录中所有非隐藏的文件和目录,而ll命令可以返回文件和目录的详细信息,比如权限信息,文件大小,创建时间等。
17.日常工作中,Bug 分为哪几级?
致命、严重、一般、警告
18. 如果在网上发现一个严重的 Bug 该怎么办?【问到这个问题的时候,面试通过率为 60%】
首先,您需要检查错误的严重程度,看它是否影响大多数用户,并确定问题的紧急程度。
如果问题十分严重,已经影响到大部分用户的使用,您可能需要选择版本回滚方案,以尽快恢复线上环境的正常运行。
如果只是个别用户受到影响,则需要开发团队整体协作,紧急迭代下一版本,修复Bug,修复异常数据。
Bug解决之后需要回顾问题,分析问题的原因,总结经验教训,避免下次错误。
1.自动化测试中元素定位方法有哪些?
元素定位的目的:要使用Web自动化来操作元素,必须找到这个元素,才能让程序操作指定的元素。
总共有8种定位方式
2.如何判断某个元素是否存在?
没有原生方法可以判断元素是否存在
可以用元素定位+异常捕获的方式判断元素是否存在,比如封装一个方法,找到元素就返回true,否则返回true来判断元素是否存在。
3. 常见的例外情况有哪些?
一般会遇到四种类型的异常
4. 你们的UI测试框架是如何设计的?
我主要学习的UI[Web]测试框架,是用语言编写的,基于PO设计模式封装,用来管理测试用例下拉框工具搜索引擎,yaml来管理测试数据以及参数化测试用例,通过生成测试报告,并且集成git和,可以自动拉取/上最新的测试代码并进行测试[不是很熟悉]
5.自动化测试可以取代手工测试吗?
不是,自动化就是把已有功能的测试用例自动跑起来,提高测试效率,解放人力专注于测试新逻辑、新业务,但不能发挥创造性。手工测试不可替代,因为人的判断能力强,工具没有。测试人员的经验和对错误的判断能力是工具无法替代的。人的审美和心理体验是工具无法模拟的。人的是非判断、逻辑推理能力是工具不具备的。
6.如何保证操作元素的成功率?或者说如何保证我点击的元素是可点击的?
等待元素出现:使用适当的等待机制等待页面加载并定位元素。提供不同类型的等待,例如显式等待(Wait)和隐式等待(Wait)。
定位元素的唯一性:确保使用的元素定位方法是唯一的,能够准确找到目标元素。使用ID、类名、CSS选择器或其他定位方法,但要确保所选的定位方法足够准确,不易受到页面结构变化的影响。
使用 或 CSS 选择器: 和 CSS 选择器是两种强大的元素定位方法。它们可以更准确地定位元素,并且比使用标签名或类名等定位方法更稳定。
避免使用绝对路径:尽量避免使用绝对路径定位元素,因为页面结构的变化可能会导致绝对路径失效。尽量使用相对路径或其他更稳定的定位方式。
使用try-处理异常:在执行操作之前,使用try-语句捕获可能出现的异常,例如元素未找到、无法点击等,捕获到异常后可进行相应处理或者重试操作。
检查元素可见性和可点击性:在执行操作之前,您可以检查目标元素是否可见且可点击,以确保执行操作时元素处于正确的状态。您可以使用提供的 () 和 () 方法。
日志记录和错误处理:为测试代码添加适当的日志记录功能,以便在出现问题时更容易找到和调试错误。此外,编写强大的错误处理代码来处理可能出现的异常并提供适当的反馈或重试操作。[规范开发人员的开发习惯,为页面元素添加唯一的名称和 ID]
7.脚本中如何提高执行速度? 8.用例在运行过程中经常会出现不稳定的情况,也就是这次可能通过了,但下次就不行了,如何提高用例的稳定性?
1、尽量在经常检测失败的元素前加入显式的等待时间,等到需要操作的元素出现后再执行以下操作;
2、多线程的时候,降低测试用例的耦合度[两个模块之间的交互]下拉框工具搜索引擎,因为多线程的执行顺序是不受控制的;
3.使用try捕获并处理异常:
4.尽量使用专用的测试环境,避免同时进行其他类型的测试,可能会对数据造成干扰[例如:如果当前正在搜索用户A,但是数据库正在删除用户A的信息,则测试会失败]
5.在测试用例框架中设置失败重跑机制【可以理解为bug的复现】
9. 如何设计高质量的自动化测试脚本 10. 你的自动化测试用例的执行策略是什么?【同第4题】 11. 什么是持续集成?
持续集成/持续交付
频繁将代码集成到主干,持续改进项目架构,以便快速发现错误
12、自动化测试的时候需要连接数据库进行数据验证吗?
是的,需要保证页面显示或者界面返回数据和数据库相符,这是断言的重要部分。
13. 如何定位页面上动态加载的元素?
首先触发动态事件,然后定位,如果是动态菜单,需要分层定位。
14. 属性动态变化的元素如何定位?先找到元素不变的属性,如果键都变了,再找到不变的父元素,使用层级定位,按相对位置定位,比如axis,//定位 15. 点击链接后会自动等待页面加载吗?
不是,有时候页面还没有完全加载,请求某个页面资源的时候,会报元素不存在,所以应该先考虑页面是否已经加载完成,然后再使用函数查找元素。
此页面是否已加载?您可以通过显示 [wait] 来检查页面是否已加载
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def is_page_loaded(driver, timeout=10): try: # 设置等待时间 wait = WebDriverWait(driver, timeout) # 等待页面加载完成,直到页面的某个元素可见 wait.until(EC.visibility_of_element_located((By.TAG_NAME, 'body'))) # 如果没有抛出超时异常,则页面已经加载完成 return True except Exception as e: # 如果在等待过程中发生异常,说明页面加载失败或超时 print("页面加载失败或超时:", e) return False
16.什么是页面[PO]设计模式?
通俗的说就是把每一个页面当成一个页面对象,在页面层编写元素定位方法和页面操作方法,定位元素和脚本分离。
核心框架是分层+PO(页面)模型
PO模式:优化代码分层,代码复用性强,可维护性、可读性、稳定性强
base类中有一些常用的方法,比如在Web自动化测试中,获取浏览器驱动,定位元素,点击,截图等操作都封装在base类中。
页面对象层:将一个页面封装为一个对象,比如计算器的在线计算测试中,加减乘除的计算封装为一个页面类,或者将登录页面封装为一个类。
业务层测试用例层:调用页面页面、测试层
数据层:
日志层:
17.如何在下拉框中选择=XX?
18.自动化测试用例从哪里来?
先进行功能测试,然后进行自动化测试,因此自动化测试用例是从手动测试用例中提取出来的
提取主要的前向流程测试用例,开发并维护自动化测试用例,提高自动化测试的覆盖率,确保在下一版本中,自动化测试脚本能够尽可能地替代手工的回归测试。
19.你认为自动化测试最大的缺陷是什么?
不能用于接口测试,专门用于UI自动化参数
20.UI 自动化过程中无法定位元素可能会出现哪些问题?
frame表单切换 1.切换到指定表单 driver.switch_to.frame(frame_referance) 2.恢复到默认页面 driver.switch_to.default_content() """填写主页面""" # 用户名 driver.find_element(By.CSS_SELECTOR, "#user").send_keys("admin") # 切换到注册A driver.switch_to.frame("myframe1") """填写注册A""" driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("adminA") # 恢复到默认页面 driver.switch_to.default_content()
性能测试【有时间再回顾一下基础知识点】
基准测试 负载测试 稳定性测试 压力测试 并发测试
1、为什么要用性能测试?简单易用,工作也比较方便。稳定、开源,开源工具社区比较活跃,遇到问题可以很快找到解决方案。免费,降低成本。支持分发和Java扩展,根据实际业务需求,我们可以编写jar包扩展脚本,提高我们测试脚本的稳定性和扩展性。 2.性能测试的流程【时长要大于5分钟】 需求分析【确定具体的需求指标,设计性能测试场景】 性能测试计划与方案 性能测试用例 性能测试执行: 建立测试环境-》编写测试脚本【使用工具或者脚本】-》准备测试数据-》性能测试监控-》执行测试脚本,收集测试数据 性能测试分析与调优: 经过分析,若不符合性能要求,则会提出性能Bug,然后开发人员进行后续的调优-》回归测试【需要进行多轮,回归测试数据要与之前的测试数据一致】 性能测试报告 3.性能测试过程中,发现响应时间过长,应该如何分析?
【自行排除问题】首先检查试验机的情况,因为如果试验机压力过高,也会影响试验结果。首先排除试验机的问题
检查Web武器上的消息转发是否存在问题,导致转发时间过长
检查应用服务器的资源使用情况,包括CPU、内存、I/O、带宽等,确认是某些硬件资源占用过高后,找到占用资源最多的进程,定位具体问题。
检查数据库查询中是否存在慢查询、互斥,检查是否因为数据库配置导致数据库响应时间过长。
4.参数化的方法有哪些?
最常用的场景:登录时同时传入不同的用户名和密码【重点关注前两种】
5. 关联使用什么方法实现?[回顾]
6.用户定义变量和用户参数有什么区别?
用户定义变量:启动运行时获取一次值,运行过程中不再动态获取值(无论设置多少个线程或者循环多少次,都获取一次值,不会改变)
用户参数:启动时获取一次值,运行过程中,每次使用该参数都会动态获取值。
7.如何使用它进行性能测试并生成报告?【同问题2】
Q性能测试流程
8.get和post有什么区别? 9.and有什么区别?
1.它们的用例组织方式不一样,比如它的用例组织方式比较扁平,没有测试集和空间的概念,直接轻量级,主要针对单次HTTP请求。
2、它们支持的接口类型和测试类型也不同,相对来说它的功能更强大,可以支持Rest风格的接口和Soap[web-]类型的接口,可以测试接口测试功能,也可以测试性能测试。它只支持Rest风格的接口,基本上做的功能测试比较多:
3. 在流程控制上也有所不同,比如,它使用控制器、脚本等一系列的控制器来实现流程控制,而它使用:
4. 在脚本结果解析与展示,断言以及一些功能扩展方面,二者存在较大差异。
真题面试题汇总1、项目中的搜索功能模块重点关注哪些测试点,如何设计测试用例?
(1)基本功能测试
(2)高级搜索功能测试
(3)关闭/取消搜索
(4)兼容性测试
(5)安全测试
2. 涉及到的搜索架构和技术栈有哪些? 3. 搜索排名是怎么实现的? 搜索引擎是怎么实现的?
文档索引:
查询处理:
相关性得分:
4.如何实现广告的优先展示? 5.双11优惠券活动,打折、打折、打折场景下,如何保证最终测试结果正确,测试点有哪些? 规则定义与管理:折扣条件与范围 优惠券计算:按照不同规则计算 规则组合与顺序:判断哪条规则优先级高 边界案例与异常处理:比如购买金额未满300,优惠券无法使用,输入无效折扣会提示无法使用 测试验证:模拟各种场景,边界值方法,模拟是否与预期结果一致
6. 测试过程中发现的印象最深刻的bug是什么? 7. 接口测试时用例设计需要考虑哪些方面? 8. 如何处理接口间的数据依赖关系?
测试点:接口关联
9、接口自动化测试框架搭建在什么场景? 产生什么价值?
体现的价值:
10.框架一共有多少个接口和用例?
200个接口,约4500个测试用例;100个接口,约2000个测试用例
11、接口自动化时如何实现参数化?
例如一个接口有多个测试用例,但是不同之处在于传入的参数不同,比如某些必填项的验证,这种情况下可以通过参数化的方式,读取框架中yaml文件的数据(调用自定义函数获取符合参数化标准的数据结构)并传入测试用例中,从而实现数据与测试用例代码分离,降低代码耦合度。
12.通常用什么方法来定位bug?
我实习的公司使用了一个管理漏洞
13.给定一个微信支付接口,测试点有哪些?
功能测试
1.正确性测试:测试在提供正确信息的情况下,支付流程是否能够成功完成,并验证支付成功后的状态更新和通知
2. 测试异常:
3.退款处理:
4.支付限额测试:
兼容性测试
不同的付款方式:
测试接口是否支持微信钱包里的所有支付方式,如微信余额、银行卡、微信红包等。
不同的设备和操作系统:
确保支付接口在各种设备(手机、平板、PC等)和操作系统(iOS、iOS等)上正常运行。
不同的网络环境:
测试接口在不同网络环境(Wi-Fi、4G、3G等)下的性能和稳定性。
多语言和地区:
如果服务面向国际用户,确保界面可以支持多种语言,适应不同地区的支付习惯。
并发处理能力:
测试高并发情况下接口的处理能力和响应时间。
压力测试:
在超出正常负载的条件下测试系统的稳定性和处理能力。
稳定性测试:
长期的运行测试保证了接口在连续运行时的稳定性和可靠性。
补充:用户体验测试
支付流程简单性:评估用户完成支付流程所需的步骤和时间,确保流程尽可能简单
错误提示及帮助信息:当出现错误时,是否有提示信息[例如:当支付余额不足时,是否有提示:您的余额不足]
14. 索引有什么优缺点? 15. 如何在项目中使用,具体步骤是什么? 安装【目前只使用桌面版】 创建:包含一系列指令,定义如何构建镜像,【项目需要的环境及依赖】 构建镜像【 】运行容器【 】配置将多个环境集成在一起然后运行持续集成进行实时更新和拉取【公司代码集成在私有仓库】 - 需要构建yaml文件(包含命令) - 自动化构建 16. 谈谈你对质量保障的理解
质量保证(QA)是指为确保产品或服务符合特定的质量标准和满足用户需求而设计的一套过程、活动和管理技术。它是软件开发、制造和各种服务领域中的关键组成部分,旨在系统地防止缺陷、提高产品质量,确保产品能够可靠有效地发挥其预期功能。质量保证不仅关注最终产品的质量,更重要的是着眼于改进和优化制造或开发过程的质量,以减少或消除缺陷的发生。
17、现在计算机上有一个程序运行速度很慢,怎样才能知道是程序有问题还是软件或硬件系统有问题呢?
1、检查系统是否有中毒迹象;
2. 软件和硬件性能监控:当系统没有任何负载时,检查性能监视器以确认应用程序对 CPU/内存的访问
3、如果是B/S或者C/S架构,可以检查是否是服务器连接或者访问的问题导致的。
4. 在不同环境或操作系统中运行程序,如果在其他操作系统上运行良好,但在当前系统上运行缓慢,则可能与软件和硬件有关。
18、如何查看CPU进程? 19、什么是兼容性测试?兼容性测试主要关注哪些方面?
兼容性测试旨在评估软件、应用程序或网站在不同环境中运行的能力。
1.操作系统兼容性
测试软件在不同操作系统上的运行情况,例如 、、各种移动操作系统(例如 和 iOS)等。这包括不同版本的操作系统以及各种操作系统的更新或补丁
2. 浏览器兼容性
特别针对网站和网络应用程序,测试它们在不同的网络浏览器上的性能,包括、、、Edge等,以及这些浏览器的不同版本。
3. 设备兼容性
对于移动应用程序或响应式网站,在不同设备上测试性能,包括各种智能手机、平板电脑、笔记本电脑和台式机,涵盖不同的屏幕尺寸和分辨率。
4. 网络兼容性
评估不同网络环境下的软件性能,包括不同的网络速度(例如4G、5G、Wi-Fi)和不同的网络提供商。
5. 分辨率兼容性
对于图形用户界面应用程序,测试不同显示分辨率和方向(横向/纵向)下的用户界面布局和元素显示。
6. 国际化和本地化
对于针对多语言和多元文化用户的软件,请在不同的语言和区域设置下测试软件,以确保文本、格式(如日期、时间、货币)和内容适当地适应目标市场。
7.硬件兼容性
验证软件在不同硬件配置下的性能,包括CPU、内存、存储、显卡等。
20. 浏览抖音时,视频提示正在加载,可能是什么问题? 1.网络连接问题 2.服务器问题 3.设备性能问题 4.应用程序问题 5.视频格式或编码问题 解决方案 21. 针对朋友圈评论场景设计测试用例 22. 针对点赞功能设计测试用例
针对类似功能设计的测试用例应该涵盖各种用户行为、系统响应和边界条件。以下是一些关键的测试用例:
1.基础功能测试 2.用户状态测试 3.数据一致性与持久性 4.接口与交互 5.性能与压力测试 6.异常与边界条件测试 7.安全测试 8.兼容性测试 23.茅台秒杀测试用例如何设计? 功能测试
闪购开始和结束时间:
产品库存:
用户订单:
订单处理:
性能测试
并发用户数:
响应时间:
资源消耗:
测试异常和边界条件
网络延迟和中断:
重复请求:
闪购前后对比:
安全测试
恶意攻击:
验证:
机器人和脚本:
用户体验测试