• 火爆全网,22个web自动化测试疑难解答总结,一路狂飙...



    前言

    1、web自动化框架如何搭建?

    首先按照Po模式搭建自动化框架,搭建框架使用的技术是selenium + pytest 。

    将框架分为6层,common层(公共层:basepage[基础操作封装]、hander_config[ini配置文件]、hander_path[路径]、my_logger[日志分装])、conf(配置层:ini文件、yaml文件)、outputs(日志输出层)、pageobject、pagelocators、testcases、testdatas。

    2、web自动化测试中定位方式有哪些?常用的有哪些?

    "8大定位方式,id 、class、text、tag、link 、partial link 、xpath、css,常用的id、text、xpath、class、link

    3、web自动化测试有哪些缺点?如何改进?

    不稳定,页面经常变,不好定位,不适合业务复杂和频繁变动的项目尽可能的使用显性等待

    4、web自动化中三种等待?

    sleep()强制等待 始得线程强制处于睡眠状态

    driver.implicitly_wait()隐形等待 ,设置的时全局等待,调用一次就够了

    webdriverwait()显性等待 等待方式expected_conditions 特定的元素都设置自己的等待方式进行等待

    5、PO设计模式的原理?

    原理:Po模式成为页面对象模型,是将页面操作与用例分离,将页面操作和元素定位分装成page层,页面的测试用例和数据分装为text层

    6、Pytest和Unittest区别?

    1)pytest

    创建:文件名test_或 *_test开头 类Test开头 函数test_开头就可以自动识别,直接函数test_也可以识别

    运行:pytest.main(“”-s"“,”“-v”“,”“html=hello.html”“,”“_allerdir=outputs/word.html”")
    报告:以参数的方式添加运行中
    断言:assert a=b

    前置条件:
    方法一:deardown,setup,deardown_class,setup_class

    方法二:创建一个conftest.py文件用来编写前置条件,使用fixtrue(),四个级别,默认函数级别,funaction/class/moder/pagage/session,前后置写在一起,用yaid分割开,返回信息写再yaid后面;调用的时候使用pytest.make.usefixture(参数)参数只前后置的函数名称。

    传入参数为字典时:pytest.mark.parametrize(“case”,字典),用例调用直接以参数的方式传入case即可

    冒烟测试:创建配置文件pytest.ini文件,写入固定格式,pytest.make.配置文件参数名,运行“-m=配置文件参数名”

    2)unittest

    创建:文件名test_开头 类继承unittest.testcase 函数test_开头
    运行:加载测试用例:testcases = unittest.testloader().discover(test_case_dir),

    套件创建:suite=unittest.testsuite()
    将用例放在套件中:suite.addTest(testcases)
    执行套件:unitest.texttestrunner.run(suite)
    报告:第三方插件bf = BeautifulReport(),将收集的用例添加报告中

    断言:assertnotequest(a,b)
    前置条件:deardown,setup,deardownclass,setupclass

    7、如何把自动化测试在公司中实施并推广起来的?

    1)确定自动化使用的框架、技术
    2)搭建自动化框架
    3)完善自动化框架,形成流程化文档
    4)推广至其他项目组使用

    8、自动化测试用例如何编写?

    使用其他组员已经编写好的用例进行挑选。编写主要的流程用例。因为一般自动化测试都是用来回归测试和冒烟测试使用。

    9、上一个项目中自动化测试的执行策略?

    设置的是早上2点钟自动执行用例,执行完后将执行结果以邮件的方式发送给测试人员以及相关人员手中。

    10、自动化测试发现BUG多吗?

    没又多少bug,因为一般自动化测试都是已经进行过手工测试的,并且都是回归测试。

    11、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?

    做自动化是为了后期减少回归测试的工作量。后期回归测试时能够及时发现问题,及实报告修改。

    12、自动化测试有误报过bug吗?产生误报怎么办?

    有无误报过
    主要原因:
    元素定位不稳定,需要完善元素定位的方式;
    开发将页面做了修改调整,测试未能及时的调整,完善;

    13、自动化测试过程中,你遇到了哪些问题,是如何解决的?

    1)元素定位不稳定
    2)自动化出现误报
    3)自动化测试报告文件覆盖问题,文件添加时间
    4)自动化测试维护比较麻烦
    5)数据库校验比较有难度"

    14、在上一家公司做自动化测试用的什么框架?

    python+Selenium4+pytest+allure
    python +unittest+BeautifulReport

    15、在selenium自动化测试中,你一般完成什么类型的测试?自动化覆盖率?

    主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右

    16、在执行脚本过程,如何实现当前元素高亮显示?

    这个其实就是利用javaScript去修改当前元素的边框样式来到达高亮显示的效果,

    17、如果一个元素无法定位,你一般会考虑哪些方面的原因?

    1)页面加载元素过慢,加等待时间
    2)页面有frame框架页,需要先跳转入frame框架再定位

    3)可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定。

    4)可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成。

    18、遇到frame框架页面怎么处理?

    先切换至driver.switch_to.iframe里面,再进行定位,完成操作再driver.switch_to.default_content()跳出来

    19、遇到alert弹出窗如何处理?

    切换至driver.switch_to.alert(),再操作accept、dismiss、text()

    20、如何处理多窗口?

    1)首先获取所有窗口的句柄hand = driver.window_handles()

    2)切换至最后一个窗口driver.switch_to_window(hand[-1])

    3)再操作元素

    21、在日历这种web 表单你是如何处理的?

    如果日历输入框不可以输入,需要借助调用js,使用js将disable属性去掉,就可以直接输入了;

    如果日历输入框直接可以输入,定位到元素后,直接调用send_keys()方法输入即可。

    22、举例一下说明一下你遇到过那些异常?

    常见的selenium异常有这些:

    NoSuchElementException:没有该元素异常
    TimeoutException : 超时异常
    ElementNotVisibleException :元素不可见异常
    NoSuchAttributeException :没有这样属性异常
    NoSuchFrameException :没有该frame异常"

    下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

    一、Python编程入门到精通

    请添加图片描述

    二、接口自动化项目实战

    请添加图片描述

    三、Web自动化项目实战

    请添加图片描述

    四、App自动化项目实战

    请添加图片描述

    五、一线大厂简历

    请添加图片描述

    六、测试开发DevOps体系

    请添加图片描述

    七、常用自动化测试工具

    请添加图片描述

    八、JMeter性能测试

    请添加图片描述

    九、总结(尾部小惊喜)

    只有经历风雨,才能见到彩虹的绚丽。坚持奋斗,不畏艰难,用汗水浇灌梦想的花朵。无论前路多么险阻,我们都要勇往直前,因为成功只属于那些敢于追逐的人。

    不要因为起点低而放弃追逐梦想,每一次努力都是一次跨越。别被眼前的困境吓倒,愿你坚韧不拔,奋斗不止,最终收获辉煌的人生。相信自己,勇往直前!

    不成功,便成仁。路漫漫其修远兮,我们不怕艰险,不惧挑战,只要拼尽全力,脚踏实地,相信自己,我们一定能够创造精彩的人生。愿你奋斗不息,收获喜悦!

  • 相关阅读:
    (计算机组成原理)第二章数据的表示和运算-第一节3:无符号数的表示和运算
    MySQL、高级SQL操作
    cocoa-NSArrayController
    kafka,zookeper的搭建 消息队列---------基于linux
    基于LS-SVM对偶问题的分类、回归、时间序列预测和无监督学习研究(Matlab代码实现)
    labelme标注及标签的统一
    React函数组件和类组件生命周期比较
    目录即服务如何帮助安全、高效地管理WiFi用户?
    Spring-boot项目练习笔记(二)MybatisPlus实现公共字段自动填充
    矩阵相关操作与运算
  • 原文地址:https://blog.csdn.net/m0_70102063/article/details/133882622