炫酷的个人网站,在线做mtv网站,wordpress最多多少用户,做app和做网站相同和区别愿万事胜意 文章目录 1. 在你们项目中接口测试用例你是怎么设计的2. 接口测试用例你是怎么设计的3. 分页查询接口测试要注意什么3. 接口测试流程4. 接口测试的过程中发现过哪些bug5. 一个接口请求不通该如何排查6. 接口测试中是怎么校验接口返回结果是否正确7. 为什么做接口测试… 愿万事胜意 文章目录 1. 在你们项目中接口测试用例你是怎么设计的2. 接口测试用例你是怎么设计的3. 分页查询接口测试要注意什么3. 接口测试流程4. 接口测试的过程中发现过哪些bug5. 一个接口请求不通该如何排查6. 接口测试中是怎么校验接口返回结果是否正确7. 为什么做接口测试快且成本低服务器端前后端进程不一致8. cookiesessiontoken有什么相同点和不同点9. get和post的区别10. http和https的区别11. HTTP状态码以及它们代表什么意思12. 如何分析一个bug是前端还是后端的13. 为什么要做WEB自动化测试14. web自动化测试用例如何设计15. 数据库校验16. web自动化中有哪三类等待他们有什么特点17. 验证码的几种处理方式18. 在selenium中如何处理多窗口19. 在执行脚本过程如何实现当前元素高亮显示20. 在Selenium中如何实现用例执行失败才截图21. 如何实现文件上传22. 测试脚本能在不同浏览器上运行23. 遇到alert弹出窗如何处理24. 获取元素的enabled,disabled,checked25. 如何处理下拉菜单26. 日历这种web 表单你是如何处理的27. 对于属性动态变化的元素如何处理28. 还有什么想问我们的吗29. 如何进行职业规划 1. 在你们项目中接口测试用例你是怎么设计的
1考虑输入参数和输出参数的合法性参数必填默认值参数长度和格式校验边界等图片长传考 虑图片大小和格式。查询考虑数据排序分页考虑分页显示等。 2性能测试接口tps、响应时间等 3兼容性新老版本数据的兼容不同的硬件环境 4安全性敏感信息加密恶意攻击的防范权限控制等 5幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的不会因为 多次点击而产生了副作用。举个最简单的例子那就是支付用户购买商品后支付支付扣款成功但 是返回结果的时候网络异常此时钱已经扣了用户再次点击按钮此时会进行第二次扣款返回结果 成功用户查询余额返发现多扣钱了流水记录也变成了两条这就没有保证接口的幂等性
2. 接口测试用例你是怎么设计的
正例正确输入必填的参数接口正常返回。 反例 鉴权反例鉴权码为空鉴权码错误鉴权码过期… 参数反例必填类型异常长度异常错误码不符合需求根据业务定 其他场景反例分页黑名单用户接口调用次数限制接口调用时间的限制。 兼容性用例多版本的兼容多端的兼容
3. 分页查询接口测试要注意什么
验证分页参数确保接口能够正确接收和解析分页参数例如页码和每页数量是正确的并返回正确的分页结果。
验证返回结果检查接口返回的分页结果的数据按照预期的顺序进行排序。
验证边界情况测试分页参数的边界情况例如第一页、最后一页、每页数量为0或负数等确保接口能够正确处理这些情况。
验证性能对于大数据量的分页查询接口需要测试接口的性能确保在大数据量情况下仍能保持较好的响应时间。
验证安全性对于需要身份验证的分页查询接口需要测试接口的安全性确保只有授权用户能够访问和获取正确的分页结果。
验证异常情况测试接口在异常情况下的处理能力例如数据库连接失败、网络异常等确保接口能够正确地处理这些异常情况。
3. 接口测试流程
1、获取接口文档熟悉单接口以及接口业务包括接口地址请求方式鉴权方式入参出参错误码等。
2、编写接口测试用例并评审。
3、使用接口测试工具Postman/Jmeter执行接口测试 通常执行过程中需要考虑以下几个方面
是否满足前提条件有些接口需要满足前提才可成功获取数据。常见的需要登录Token参数之间是否存在关联有些参数彼此之间存在相互制约的关系参数是否加密比如说我登陆的接口用户名和密码是不是加密加密规则是否容易破解。参数是否是需要设置成动态参数。接口是否需要签名验证等。 4、实现持续集成并输出接口测试报告发送电子邮件企微钉钉群等有bug报bug。 5、每天晚上12点都会运行一次从而监控是否有因开发代码变更或者新功能添加而导致的遗漏接口bug。
4. 接口测试的过程中发现过哪些bug
接口测试中发现的bug大多都是接口没按约定返回结果参数为空参数长度或类型校验、没有鉴权、参数边界值、代码逻辑、数据错误、或没有返回合理的错误提示等方面的问题。
前后端联调接口Bug案例 比如 1分页查询数据列展示时间数据有问题未将新发布的数据排在前面 2前端访问的mock数据时没有考虑鉴权。访问真实的后端接口时没有权限。
常规接口Bug案例 1为摄像头命名只有一个空格也能保存成功原因是后端代码没有对命名值做空格判断
2查询硬件设备查询出来的数据少了第一条原因是SQL中limit条件传入起始序号是1而不是0查询硬件设备出现%时查询出多余数据%有模糊查询的意义后端没有做处理
比如1比如说修改商品信息接口只有卖家权限才能修改我传一个普通用户也可以修改成功我传一 个其他卖家用户也能修改成功。
5. 一个接口请求不通该如何排查
1.检查请求四要素请求方式请求路径请求头请求参数是否写错。 2.客户端和服务端网络不通 3.服务端项目没有部署起来接口无法访问。 4.请求被服务器的防火墙拦截了 5.服务端程序内部发生了错误 6.没有访问权限比如缺乏token、cookie之类 7.客户端设置了网络代理比如打开了Fiddler/Charles等抓包工具
6. 接口测试中是怎么校验接口返回结果是否正确
1验证接口响应状态码是否是200。 2当接口响应正文比较短比较固定时验证响应的完整内容是否等于预期。 3当响应内容较长较多时验证响应报文是否包含关键信息。 4当响应正文为XML格式或JSON格式时可以通过XPATH或JSONPATH正则表达式获取其中的某个节点验证响应报文关键字段是否存在。 5查询数据库或调用其余接口查询。当要验证的信息在当前测试接口的响应内容中不存在时可以调用其他接口来验证。例如一个增加用户信息的接口要验证信息确实增加成功了可以再调用查询用户信息接口来确认用户信息添加成功。当然在获取数据库查询权限的情况下也可以直接查询数据库来验证。
7. 为什么做接口测试快且成本低服务器端前后端进程不一致
A、 在目前前后端分离开发的模式下项目在开发过程中客户端和服务端开发的进度不一致比如服务端先开发完了这个时候可以先对服务端进行接口测试确保服务端逻辑和返回数据是正确的然后再测试客户端。
B、在测试某些业务时不能仅仅通过前端来测试比如用户注册前端限制了用户名不能为空但是可以通过工具绕过前端直接调用服务端接口如果服务端没有做相关的逻辑判断就会造成数据错误。包括接口数据传输过程中是否对关键信息加密等。所以必须针对服务端接口做测试。
C、接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题其修复问题的成本越低在开发提测后可以先通过工具把服务端的接口测试跑一遍确保接口测试用例都是通过的能快速判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug前端页面必定有bug。并且接口测试非常快速、接口测试用例执行的时间是毫秒级的。
8. cookiesessiontoken有什么相同点和不同点
相同点三者都是用于鉴权并且都是由服务器产生的。 不同点 1.cookie保存在客户端的浏览器上cookie不安全其他人可以通过分析存放在本地的cookie并进行cookie欺骗。
2.session比cookie安全它会在一定时间内保存在服务器的内存但当访问增多时比较占用服务器的性能。单个cookie保存的数据不能超过4K很多浏览器都限制一个站点最多保存20个cookie而session则存储与服务端浏览器对其没有限制。
3.token就是令牌是一个字符串主要是用于做客户端身份认证通常登录成功后服务端会返回token客户端需要把token值保存下来后续请求其他接口时需要在请求中携带这个token值只有服务端对token校验通过后才允许访问。
9. get和post的区别
1GET一般用于查询数据而POST一般用于添加、删除或修改数据。 2传参方式不同get通过地址栏传输post通过表单报文传输所以post请求比get请求的安全性相对 较好。get请求可以直接通过浏览器访问支持刷新和后退。post请求不能直接使用浏览器访问刷新后数据要重新发送。 3传参长度不同get参数有长度限制受限于url长度而post无限制 4GET请求有幂等性POST请求没有幂等性
10. http和https的区别
1.http是超文本传输协议信息是明文传输Https协议是由HTTP协议SSL协议构建的加密传输协议比http协议安全 2.http和https使用的是完全不同的连接方式用的端口也不一样前者是80后者是443 3.HTTP 无需证书而 HTTPS 需要认证证书 4.HTTP适用于一些不涉及敏感信息的普通网页浏览等场景而HTTPS适用于需要保护用户隐私和安全的网站如在线银行、电子商务等。
11. HTTP状态码以及它们代表什么意思
2xx成功 200成功。请求已成功处理。 201已创建。请求已经被成功处理并且有一个新的资源被创建。 204无内容。请求已成功处理但响应报文中不含实体。
3xx重定向 301永久重定向。请求的资源已永久移动到新位置。 302临时重定向。请求的资源临时移动到新位置。 304未修改。客户端可以使用缓存的版本。
4xx客户端错误 400错误的请求。服务器无法理解该请求url错误。 401未授权。请求需要身份验证。 403禁止访问。服务器拒绝请求。 404未找到。请求的资源不存在。
5xx服务器错误 500内部服务器错误。服务器在执行请求时遇到错误。 502错误的网关。服务器作为网关或代理从上游服务器接收到无效的响应。 503服务不可用。服务器暂时无法处理请求。
12. 如何分析一个bug是前端还是后端的
观察错误现象仔细观察bug的表现和错误提示信息。如果错误是在用户界面上出现比如显示异常、交互问题等那么很可能是前端引起的。如果错误是在数据处理、请求响应等过程中出现那么可能是后端引起的。
查看日志检查前端和后端的日志记录。前端日志通常包含浏览器控制台的输出后端日志则涵盖服务器的日志文件。查看日志可以帮助确定错误所在的层面。
排除方法进行排除方法的测试暂时关闭某一层的相关功能看是否可以解决问题。如果问题仍然存在那么可能是另一层引起的。
数据对比比较前后端传输的数据确保数据在传输过程中没有被损坏或改变。这可以通过查看网络请求和响应的数据内容来实现。
调试和追踪使用开发者工具和调试器对前端代码和后端代码进行逐步调试和追踪。这可以帮助找出具体的问题代码和逻辑。
测试回归在修复问题之后进行前后端的回归测试验证修复是否完全解决了问题。
13. 为什么要做WEB自动化测试
Web自动化测试就是模拟手工测试人员来做功能测试。用机器的自动执行代替人的操作。主要用于产品的核心功能冒烟测试、回归测试。从系统最核心的功能开始做再根据情况慢慢展开。
引用自动化测试之后能代替大量繁琐的回归测试工作把业务测试人员解放出来既而让业务测试人员把精力集中在复杂的业务功能模块上自动化测试一般是对稳定下来的功能进行自动化保证不会因为产品的更新导致之前稳定下来的功能出现BUG。
14. web自动化测试用例如何设计
WEB自动化测试用例是从手工测试用例中提取出来的主要是冒烟用例和回归测试的用例。自动化测试 用例的选取更加需要注重用例的严谨性选择用例的时候遵循以下原则 1.优先选取覆盖产品核心业务流程的用例 2.选取的用例是需要重复执行或繁琐的验证功能比如字段验证、提示信息验证 3.优先选择正向的测试用例反向用例一般情况复杂、数量多 4.不要选择流程太复杂的用例主流程除外
15. 数据库校验
在自动化测试中进行数据库校验可以通过以下步骤完成
连接数据库首先需要在自动化测试框架中建立与数据库的连接。这可以通过使用适当的数据库驱动程序和连接字符串来实现。确保在测试环境中使用特定的数据库实例而不是生产环境中的数据库。
执行数据库操作在测试用例中执行需要进行数据库校验的相关测试步骤。这可以包括插入、更新或删除数据或者执行特定的数据库查询语句。
获取校验结果执行完数据库操作后获取数据库的查询结果或相关数据。这可能是一个结果集、单个数据项或特定的统计数据具体取决于测试用例的要求。
断言和校验使用自动化测试框架提供的断言功能比较实际的数据库结果与预期的结果是否一致。这可以是对查询结果进行比对或者对数据库中特定字段的值进行验证。
记录校验结果将校验结果以适当的方式记录下来例如在测试报告中输出相应的信息。这有助于分析和跟踪测试的结果。
16. web自动化中有哪三类等待他们有什么特点
1.强制等待如time.sleep(3)线程强制休眠3秒钟3秒过后再执行后续的代码。建议少用。
2.imlicitlyWait隐式等待这种是全局设置的等待如设置超时时间为10秒使用了implicitlyWait后如果第一次没有找到元素会在10秒之内不断循环去找元素如果超过10秒还没有找到则抛出异常特点是必须等待整个页面加载完成。
3.WebDriverWait显式等待也称为智能等待通常是我们自定义的一个函数代码这段代码用来针对指定元素定位指定等待时间在指定时间范围内进行元素查找找到元素则直接返回如果在超时还没有找到元素则抛出异常显示等待是 selenium 当中比较灵活的一种等待方式他的实现原理其实是通过 while 循环不停的尝试需要进行的操作。
17. 验证码的几种处理方式
1.在产品没有上线前需要找开发将验证码先注释掉或者让开发给web验证码留一个万用验证码只要输入给定的验证码就可以强制登录 2. 先让开发注释掉验证码可以通过Cookie跳过登录验证码在登录成功后通过浏览器开发者工具或其他类似工具查找并复制登录成功后生成的 Cookie将获取到的有效 Cookie 的值添加到自动化测试脚本中并在每次测试开始前设置相应的 Cookie。 3. 滑块验证码可以直接使用人工智能代码的方式处理。 4. 使用第三方的验证码识别技术比如百度智能超级鹰等
18. 在selenium中如何处理多窗口
这个多窗口之间跳转处理我们在项目中也经常遇到。就是当你点击一个链接这个链接会在一个新的tab打开然后你接下来要在新tab打开的页面定位元素并处理。 步骤如下 1.我们在点击链接前使用driver.current_window_handle获得当前窗口句柄。 2.再点击链接。点击后通过driver.window_handles获得所有窗口的句柄 3.然后再循环找到新窗口的句柄然后再通过driver.switch_to.window()方法跳转到新的窗口。 4. window太多则可以按照title、url等其他信息进行判断切换
19. 在执行脚本过程如何实现当前元素高亮显示
执行 JavaScript 代码以在元素周围添加高亮效果 定义高亮样式
highlight_style border: 4px solid red;
使用 JavaScript 代码将元素样式修改为高亮样式
driver.execute_script(arguments[0].setAttribute(style, arguments[1]);, element, highlight_style)20. 在Selenium中如何实现用例执行失败才截图
在Selenium中提供了一个get_screenshot_as_file()的方法来截图的一般结合try/except捕获异常时使 用进行错误截图。 然后把截图作为附件写入到Allure报告中
21. 如何实现文件上传
定位元素后直接使用send_keys()方法设置就行参数为需要上传的文件的路径
22. 测试脚本能在不同浏览器上运行
写的用例可以在在IE火狐和谷歌这三种浏览器上运行。实现的思路是封装一个方法分别传入一个浏览器的字符串如果传入IE就使用IE如果传入FireFox就使用FireFox如果传入Chrome就使用Chrome浏览器并且使用什么浏览器可以在总的ini配置文件中进行配置。需要注意的是每个浏览器使用的驱动不一样。
23. 遇到alert弹出窗如何处理
使用driver.switch_to.alert方法先跳转到alert弹出窗口 然后再通过accept点击确定按钮通过dismiss点击取消按钮通过text()获得窗口文本
24. 获取元素的enabled,disabled,checked
要获取元素的启用enabled、禁用disabled和选中checked状态您可以使用 Selenium 的相关方法和属性。
获取元素的启用状态enabled
element driver.find_element(By.XPATH, //your_xpath_here)
is_enabled element.is_enabled()
is_enabled() 方法将返回一个布尔值表示元素是否处于
启用状态。如果元素启用则返回 True如果元素禁用
则返回 False。获取元素的禁用状态disabled
element driver.find_element(By.XPATH, //your_xpath_here)
is_disabled element.get_attribute(disabled) is not None
通过使用 get_attribute(disabled) 方法
您可以获取元素的 disabled 属性。如果元素没
有 disabled 属性返回值为 None表示元素
启用。如果元素具有 disabled 属性返回值为
非 None表示元素禁用。获取元素的选中状态checked
element driver.find_element(By.XPATH, //your_xpath_here)
is_checked element.is_selected()25. 如何处理下拉菜单
(1)正常的Select下拉框 在Selenium中有一个叫Select的类这个类支持对下拉菜单进行操作。使用方法如下 1.定位元素
element driver.find_element(By.XPATH, //your_xpath_here)2.把定位的元素转化成Select对象。 sel Select(element)
3.通过下标或者值或者文本选中下拉框。
通过文本选择选项
select.select_by_visible_text(选项文本)
通过值选择选项
select.select_by_value(选项值)
通过索引选择选项从0开始
select.select_by_index(2)
(2)通过div改造的下拉框
直接通过Xpath定位即可26. 日历这种web 表单你是如何处理的
使用现有的日历插件或库有许多开源的 JavaScript 插件可用于处理日历功能例如 FullCalendar、DatePicker 等。你可以选择一个适合你项目需求的插件并按照其文档进行集成和配置。
手动开发如果你希望自己开发处理日历的功能可以使用 HTML、CSS 和 JavaScript 进行手动开发。你可以创建一个包含日期选择器、月份导航和事件显示的界面并编写相应的 JavaScript 代码来处理用户的操作和数据。
使用框架如果你使用的是前端框架如 React、Angular 或 Vue.js那么可以寻找与该框架配套的日历组件或库。这些框架通常有丰富的生态系统提供了许多第三方组件和工具包括日历功能。
27. 对于属性动态变化的元素如何处理
使用固定的属性值进行定位如果元素的某个属性在动态变化但仍然具有一些固定不变的属性值你可以使用这些固定的属性值来定位元素。例如元素的 id、class、name 或其他属性值是固定的你可以使用这些属性值来选择元素。
使用相邻元素进行定位如果属性动态变化的元素与其他固定元素之间有一定的关联性你可以使用相邻元素来定位目标元素。通过选择相邻元素然后使用 Selenium 或其他自动化测试工具提供的相对定位方法如相对 XPath 或 CSS 选择器来找到目标元素。
使用属性值的一部分进行匹配如果属性值是动态生成的但其中的一部分是固定的你可以使用属性值的一部分进行匹配。例如元素的属性值包含一个固定的前缀或后缀你可以使用 XPath、CSS 选择器或正则表达式等进行模糊匹配从而选择到目标元素。
使用其他唯一的标识符如果以上方法都无法有效定位目标元素你可以考虑使用其他唯一的标识符进行定位例如元素的文本内容、关键字、隐藏属性等。使用这些标识符结合适当的选择器可以准确定位到目标元素。
28. 还有什么想问我们的吗
请描述一下团队的规模和组成。这有助于你了解团队的结构和与其他成员的合作方式。
对于你觉得测试团队为公司提供的最重要的价值是什么这可以帮助你了解公司对测试的重视程度和团队文化。
你们使用哪些测试工具和技术这有助于你了解公司的技术栈和测试流程。
在团队中你们是如何进行缺陷管理和跟踪的这将帮助你了解公司在质量保证和问题解决方面的方法和实践。
你们是否采用自动化测试如果是的话自动化测试的范围和使用的工具有哪些这有助于你了解公司是否有自动化测试的实践和对其的投入程度。
对于测试工程师在团队中的职责和角色你有什么期望这将帮助你了解你在团队中将扮演的角色和预期。
你们如何促进团队成员的专业发展和学习这有助于你了解公司是否重视员工的成长和提供学习机会。
在团队中最大的挑战是什么这将帮助你了解团队目前所面临的挑战和你在入职后可能需要面对的情况。
29. 如何进行职业规划
了解行业和技术趋势时刻关注测试领域的最新发展和技术趋势包括自动化测试、敏捷开发、云计算等。这有助于你了解行业的需求并为你选择合适的技能和知识做准备。
设定职业目标思考你想要在测试领域中达到的目标例如成为高级测试工程师、测试团队的领导者或质量保证专家。根据目标制定计划确定所需的技能和经验以便逐步实现你的职业发展。
积累技能和知识持续学习和提升技能是职业发展的关键。掌握测试工具和框架深入了解软件开发生命周期和测试方法学提高编程和自动化测试技能以及不断提升你的问题解决能力。
寻找学习机会参加行业相关的培训、研讨会和会议加入测试社区与其他测试专业人士交流经验和见解。此外也可以考虑参与认证项目如ISTQB国际软件测试资格委员会认证以加强你的信誉和竞争力。
争取项目经验积极寻找不同类型的测试项目包括功能测试、性能测试、安全测试等。通过参与不同项目你可以扩展自己的技能和经验并对不同领域的测试有更深入的了解。
发展领导能力如果你希望在测试领域中成为团队的领导者或管理者那么发展领导能力非常重要。寻找机会担任小团队的负责人培养沟通、协作和人员管理能力。
持续评估和调整定期评估自己的职业发展计划确定是否朝着预期目标前进。随着时间的推移你的兴趣和目标可能会发生变化调整职业规划将帮助你保持对测试职业发展的动力和准确性。