#每日一题#自动化 2024年10月

#每日一题#自动化

2024年10月

1、深拷贝和浅拷贝的区别是什么?

参考答案:

深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy()函数进行深拷贝,深拷贝的话,是深层拷贝,拷贝的是对象本身,也就是说会存在两个对象【1,2,3】

深拷贝的目的是需要改变原始对象中的数据,但是又要保留原来的那一份

所以可以深拷贝出来一个副本,修改副本就不会影响到原本

浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy()函数进行浅拷贝

浅拷贝拷贝的是引用,a=[1,2,3],b=a

那么a和b同时指向的是一个对象即【1,2,3】

一般而言没有特殊的必要,python默认浅拷贝,除非原始数据对象需要保存

2、Python 中如何实现多线程?

多线程类似于同时执行多个不同程序;

Python中使用线程有两种方式:函数或者用类来包装线程对象。

函数式:调用thread模块中的start_new_thread()函数来产生新线程,语法: thread.start_new_thread ( function, args[, kwargs] ),

其中

function - 线程函数。

args - 传递给线程函数的参数,他必须是个tuple类型。

kwargs - 可选参数。

使用Threading模块创建线程

使用Threading模块创建线程,直接从threading.Thread继承,然后重写__init__方法和run方法。

线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。

GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。

3、Python的魔法方法是什么?__new__和__init__的区别是什么?

参考答案:

Python中的魔法方法是指可以给我们的类增加魔力的特殊方法。如果对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被调用。它们经常是双下划线包围来命名的(比如:__init__)。

__new__:用来创建一个雷的实例(constructor)。

__init__:用来初始化一个实例(initializer)。

__new__:接收的第一个参数是cls。

__init__:接收的第一个参数是self。

__init__是在__new__之后被调用的。

__init__不能有返回值。__new__可以直接返回其他类的实例。

4、测试中的“杀虫剂怪事”是指什么?

参考答案:

“杀虫剂怪事”一词由BorisBeizer在其编著的《软件测试技术》第二版中提出。用于描述测试人员对同一测试对象进行的测试次数越多,发现的缺陷就会越来越少的现象。就像老用一种农药,害虫就会有免疫力,农药发挥不了效力。这种现象的根本原因就是测试人员对测试软件过于熟悉,形成思维定势。

为了克服这种现象,测试人员需要不断编写新的测试程序或者测试用例,对程序的不同部分进行测试,以发现更多的缺陷。也可以引用新人来测试软件,刚刚进来的新手往往能发现一些意想不到的问题。

5、简述负载测试与压力测试的区别?

参考答案:

压力测试(Stress Testing)

压力测试的主要任务就是获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确执行的能力。例如,对服务器做压力测试时就可以增加并发操作的用户数量;或者不停地向服务器发送请求;或一次性向服务器发送特别大的数据等。看看服务器保持正常运行所能达到的最大状态。人们通常使用测试工具来完成压力测试,如模拟上万个用户从终端同时登录,这是压力测试中常常使用的方法。

负载测试(Volume Testing)

用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力最高能达到什么程度。例如,对于信息检索系统,让它使用频率达到最大;对于多个终端的分时系统,让它所有的终端都开动。在使整个系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。

6、配置和兼容性测试的区别是什么?

参考答案:

配置测试的目的是保证软件在其相关的硬件上能够正常运行,而兼容性测试主要是测试软件能否与不同的软件正确协作。

配置测试的核心内容就是使用各种硬件来测试软件的运行情况,一般包括:

(1)软件在不同的主机上的运行情况,例如Dell和Apple;

(2)软件在不同的组件上的运行情况,例如开发的拨号程序要测试在不同厂商生产的Modem上的运行情况;

(3)不同的外设;

(4)不同的接口;

(5)不同的可选项,例如不同的内存大小;

兼容性测试的核心内容:

(1)测试软件是否能在不同的操作系统平台上兼容;

(2)测试软件是否能在同一操作系统平台的不同版本上兼容;

(3)软件本身能否向前或者向后兼容;

(4)测试软件能否与其它相关的软件兼容;

(5)数据兼容性测试,主要是指数据能否共享;

配置和兼容性测试通称对开发系统类软件比较重要,例如驱动程序、操作系统、数据库管理系统等。具体进行时仍然按照测试用例来执行。

7、描述TCP/IP协议的层次结构,以及每一层中重要协议

8、用Python实现一个二分查找的函数?

参考答案:

方法不唯一:

def binary_search(li, val):

    """

    二分查找

    :param li: 输入的列表(从小到大排序的列表)

    :param val: 输入的待查找的值

    :return:

    """

    left = 0

    right = len(li) - 1

    while left < right:   # 候选区有值

        mid = (left + right) // 2   # 整除得到mid的下标

        if li[mid] == val:

            return mid   # 找到待查找的值

        elif li[mid] > val:

            # 待查找的值在mid左侧

            right = mid - 1   # 更新候选区为之前的左候选区

        else:

            left = mid + 1    # 更新候选区为之前的右候选区

    else:

        # 找不到待查找的值

        return None

li = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(binary_search(li, 3))    # 2

9、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

参考答案:

1.首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait)

2.在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加载完成前或是在下拉之后才能显示。

3.不同方式进行定位,与expected_conditions判断方法封装,循环判断页面元素出现后再操作;

4.开发人员规范开发习惯,如给页面元素加上唯一的name,id等。

10、如何提高selenium脚本的执行速度?

参考答案:

1.优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法;

2.减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开;

3.中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载;

4.使用Selenium grid,通过testNG实现并发执行。 在编写测试用例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

11、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?

参考答案:

1.在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执行下面的操作;

2.多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;

3.多用 try 捕捉,处理异常;

4.尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。

12、如何设计高质量自动化脚本

参考答案:

1.使用四层结构实现业务逻辑、脚本、数据分离。

2.使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性

3.对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。

4 测试用例设计中,减少测试用例之间的耦合度。

13、你的自动化用例的执行策略是什么?

参考答案:

1.自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;

2.有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;

3.有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

14、Selenium有几种定位方式?你最偏爱哪一种,为什么?

Selenium有八种定位方式:

与name有关的有三种:name、class_name、tag_name

与link相关的有两种:link_text、partitial_link_text

与id有关:id

全能选手:xpath、css_selector

如果存在id,我一定使用Id,因为简单方便,定位最快。其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位

如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。

15、如何去定位属性动态变化的元素?

先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)

属性动态变化也就是指该元素没有固定的属性值,可以通过:

JS实现,

通过相对位置来定位,比如xpath的轴,paren/following-sibling/percent-sibling

XPath学习:轴(8)——following-sibling - Asharp - 博客园

16、点击链接以后,selenium是否会自动等待该页面加载完毕?

不会的。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。

17、webdriver client的原理是什么?

在selenium启动以后,driver充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client.

18、什么是page object设计模式?

1.通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法

2.用例层从页面层调用操作方法,写成用例

3.可以做到定位元素与脚本的分离

19、 怎样去选择一个下拉框中的value=xx的option?

1.select类里面提供的方法:select_by_value(“xxx”)

2.xpath的语法也可以定位到

20、 什么是断言和验证?

断言(assert):测试将会在检查失败时停止,并不运行后续的检查

优点:可以直截了当的看到检查是否通过

缺点:检查失败后,后续检查不会执行,无法收集那些检查结果状态

验证(vertify):将不会终止测试

缺点:你必须做更多的工作来检查测试结果:查看日志——>耗时多,所以更偏向于断言

21、 get和post 的区别?

1、GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。

2、传输数据的大小

使用GET请求时,传输数据会受到URL长度的限制。

对于POST,理论上是不会受限制的

3、安全性。POST的安全性比GET的高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis-Plus(二):resultType 的选择——int 与 java.lang.Integer 的区别

resultType 的选择——int 与 java.lang.Integer 的区别 1、概述2、resultType介绍2.1、使用int2.2、使用java.lang.Integer 3、如何选择4、总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以扫描下方二维码关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。…

蘑菇分类识别数据集(猫脸码客 第222期)

蘑菇分类识别文本/图像数据集 蘑菇&#xff0c;作为一种广泛分布于全球的真菌&#xff0c;隶属于伞菌目伞菌亚门蘑菇科蘑菇属&#xff0c;拥有众多别名&#xff0c;如白蘑菇、洋蘑菇等。其不仅是世界上人工栽培最广泛、产量最高、消费量最大的食用菌品种之一&#xff0c;还在许…

Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2

目录 1 环境整合配置 2 Swagger2 常⽤注解说明 2.1 Api 2.2 ApiOperation 2.3 ApiImplicitParams 2.4 ApiResponses 2.5 ApiModel 3 用户模块注解配置 3.1 Controller 使用注解 3.2 JavaBean 使用注解 4 Swagger2 接⼝⽂档访问 由于 Spring Boot 能够快速开发、便捷…

理解JVM

文章目录 前言一、JVM 内存区域划分二、JVM 中类加载的过程a.类加载的基本流程&#xff08;熟练背诵&#xff09;b.双亲委派模型 三、JVM 中的垃圾回收机制&#xff08;GC&#xff09;1.找到垃圾2.如何回收垃圾&#xff1f; 总结 前言 JVM 内部涉及到的内容是非常广泛的。咱们…

【Qt】Qt的介绍——Qt的概念、使用Qt Creator新建项目、运行Qt项目、纯代码方式、可视化操作、认识对象模型(对象树)

文章目录 Qt1. Qt的概念2. 使用Qt Creator新建项目3. 运行Qt项目3.1 纯代码方式实现3.2 可视化操作实现 4. 认识对象模型&#xff08;对象树&#xff09; Qt 1. Qt的概念 Qt 是一个跨平台的 C 图形用户界面应用程序开发框架。它是软件开发者提供的用于界面开发的程序框架&#…

PCC Net模型实现行人数量统计

关注底部公众号&#xff0c;回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 项目简介 PCC Net是一种用于拥挤场景下行人计数的深度学习模型。该项目的目标是利用神经网络&#xff0c;准确地统计给定区域内的行人数…

Visual Studio Code

代码自动保存 打开设置搜索auto save&#xff0c;设置为afterDelay 设置延迟时间&#xff0c;单位是毫秒 启用Ctrl鼠标滚轮对字体进行缩放 搜索Mouse Wheel Zoom&#xff0c;把该选项勾选上即可

Linux文件的查找和打包以及压缩

文件的查找 文件查找的用处&#xff0c;在我们需要文件但却又不知道文件在哪里的时候 文件查找存在着三种类型的查找 1、which或whereis&#xff1a;查找命令的程序文件位置 2、locate&#xff1a;也是一种文件查找&#xff0c;但是基于数据库的查找 3、find&#xff1a;针…

Artistic Oil Paint 艺术油画着色器插件

只需轻轻一点&#xff0c;即可将您的视频游戏转化为艺术品&#xff01;&#xff08;也许更多…&#xff09;。 ✓ 整个商店中最可配置的选项。 ✓ 六种先进算法。 ✓ 细节增强算法。 ✓ 完整的源代码&#xff08;脚本和着色器&#xff09;。 ✓ 包含在“艺术包”中。 &#x1f…

【学术论文投稿】自动化运维:解锁高效运维的密钥

【连续三届IEEE出版|EI检索】第三届图像处理、计算机视觉与机器学习国际学术会议&#xff08;ICICML 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;https://ais.cn/u/nuyAF3 目录 引言 一、自动化运维概述 1. 自动化运维的定义 2. 自动化运…

关于Docker

文章目录 DockerWSLWMWare虚拟机CentOS7安装dockerdocker基础命令docker数据卷挂载本地目录或文件 Docker Docker是一个快速构建、运行、管理应用的工具。 能够快速部署项目、项目依赖的组件、项目运行的环境。 项目传统的部署方式缺点&#xff1a; 各类环境、组件命令太多&…

科研进展 | RSE:全波形高光谱激光雷达数据Rclonte系列处理算法一

《环境遥感》&#xff08;Remote Sensing of Environment&#xff0c;IF11.1&#xff09;近日发表一项来自中国科学院空天信息创新研究院王力、牛铮研究员团队的全波形高光谱激光雷达&#xff08;hyperspectral LiDAR&#xff0c;HSL&#xff09;数据处理算法研究&#xff0c;论…

sentinel原理源码分析系列(八)-熔断

限流为了防止过度使用资源造成系统不稳&#xff0c;熔断是为了识别出”坏”资源&#xff0c;避免好的资源受牵连(雪崩效应)&#xff0c;是保证系统稳定性的关键&#xff0c;也是资源有效使用的关键&#xff0c;sentinel熔断插槽名称Degrade(降级)&#xff0c;本人觉得应该改为熔…

多级缓存-案例导入说明

为了演示多级缓存,我们先导入一个商品管理的案例,其中包含商品的CRUD功能。我们将来会给查询商品添加多级缓存。 1.安装MySQL 后期做数据同步需要用到MySQL的主从功能,所以需要大家在虚拟机中,利用Docker来运行一个MySQL容器。 1.1.准备目录 为了方便后期配置MySQL,我们…

docker sameersbn/bind dns服务器

1. 安装 #下载docker 镜像 docker pull sameersbn/bind#运行 53端口若被占用会启动失败 docker run --name dns -d --restartalways \ --publish 53:53/tcp \ --publish 53:53/udp \ --publish 10000:10000/tcp \ -v /etc/localtime:/etc/localtime \ -v /data/bind/:/data \…

ubuntu2204配置cuda

ubuntu2204配置cuda ✅系统版本&#xff1a;ubuntu22.04 LTS ✅显卡&#xff1a;英伟达2070S ✅CPU&#xff1a;i9 10900 ✅主板&#xff1a;戴尔品牌机 教程&#x1f4a8;&#x1f4a8;&#x1f4a8;&#x1f4a8;&#xff1a; ps&#xff1a;本人按照该方法一遍成功&#…

grafana 配置prometheus

安装prometheus 【linux】麒麟v10安装prometheus监控&#xff08;ARM架构&#xff09;-CSDN博客 登录grafana 访问地址&#xff1a;http://ip:port/login 可以进行 Grafana 相关设置&#xff08;默认账号密码均为 admin&#xff09;。 输入账户密码 添加 Prometheus 数据源…

【Axure高保真原型】标签管理可视化驾驶舱长页面案例

今天和大家分享标签管理可视化驾驶舱长页面案例的原型模板&#xff0c;包括我的工作、通告消息、标签总体调用趋势、标签应用业务场景对比、标签使用排名、各个标签使用情况……具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 【Axure高保真原型】标签管…

PhpSpreadsheet创建带复杂表头的excel数据

目录 一:背景 二&#xff1a;excel表头数据实现 三&#xff1a;excel渲染数据实现&#xff1a; 四&#xff1a;最终效果如下&#xff1a; 一:背景 最近需要统计一些数据&#xff0c;导出到excel&#xff0c;主要是一些区域的人员销售统计数据&#xff0c;涉及到复杂的表头和…

【银河麒麟高级服务器操作系统-实例】集群存储文件系统异常,本地复现+详细分析+解决建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 【机型】物理机 TG225 B1 处…