自动化软件开发 (岗位JD):
发表时间:2023-10-29 09:01:50
文章来源:炫佑科技
浏览次数:162
菏泽炫佑科技
自动化软件开发 (岗位JD):
【技术能力】能够独立完成产品线的自动化测试,搭建软件测试环境,编写测试脚本,根据测试任务输出报告;
【项目管理】熟练开发测试工具、测试脚本,迭代优化测试框架,并使用合理的方法自动管理项目;
【业务推广】对测试项目的结果负责,采用合理的方法促进业务端测试的效率和开发质量;
【规范制定】熟悉CI系统,完善准入/退出标准,持续提升测试效率;
【效率提升】根据业务特点,引入新的测试方法和工具,探索新技术。 改进测试工具或测试方法以提高效率、培训测试人员并支持技术问题解决。
自动化测试面试题1:基础知识
1、之前项目的自动化测试是用什么测试框架做的? 告诉我该怎么做? 对自动化的了解?
答:(junit、、、、优先语言,用的还是框架;只能弱能力)
2、之前项目的自动化测试是用什么测试框架做的? 告诉我该怎么做? 对自动化的了解?
答:*好能回答独立负责封装的页面元素、断言封装、请求封装、参数检索方法的具体实现。
3.GET和POST有什么区别?
回答:
(1)GET请求资源数据,POST将需要处理的数据传递给服务器。
(2) GET传输数据大小不超过2kb,POST无限制
(3)GET请求的参数会暴露并显示在Url上,而POST请求的参数都有,所以相比GET,POST更安全。
(4) GET请求的静态资源会被浏览器缓存,但POST不会被缓存。
(5)GET传递的数据类型为文本,POST传递的数据类型为文本或二进制。
(6)GET请求回滚时是无害的,POST请求回滚后会再次执行。
GET和POST的使用场景:
(1)传输一些机密信息时必须使用POST
(2) GET只有在查询获取数据时才可以使用。
(3) POST请求速率会比GET慢,因为GET请求会产生一个TCP数据包; POST请求生成两个TCP数据包
4. //*[(@text,"Login")] 是什么意思?
答:检查所有包含登录关键字的元素
5、自动化遇到用例故障如何排查?
答:如果看到错误日志,可以按级别清楚地说明排查失败:手动检查应用程序是否确实存在Bug,确认不是Bug,新版本是否引入了新的更改,调试脚本查看您的脚本是否没有等待。 元素出现后进行操作。 该元素上方是否还有其他元素? 该操作是否对其他元素进行操作?
6、讲一下接口测试流程和接口自动化流程。 内容是什么?
回答:
(1)流程:获取接口文档,根据文档设计接口参数,获取响应,解析响应,验证结果,判断测试是否通过。 (二)内容:
1.封装get、post等;
2、以关键字参数的形式,封装各种请求参数、data、token等;
3.封装响应内容、json()、url等;
对象,可以跨请求;
7. 编写接口测试用例的要点是什么?
回答:
1)必填字段:请求参数必填和可选
2)合法性:输入输出合法和非法参数
3):请求参数边界值等。
4)容错:处理大容量数据、频繁请求、重复请求(如订单)、网络异常等。
5)响应数据验证:断言和数据提取传递到下一级接口...
6)逻辑验证:如果两个请求的接口有严格的顺序,则需要逆序进行测试。
7)性能:模拟接口并发测试,逐步加压,分析瓶颈点
8)安全性:构造恶意字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证而操纵敏感数据)
8、如何使用? 高级用法? Mock的应用场景和基本用法有哪些?
回答:
A。 基本用法:输入输出参数、验证、返回;
b. – 配置不同的环境参数,即设置全局变量, Pre – 配置环境变量的使用或进行预脚本处理;
C。 团队可以更好地并行工作。 前端和后端人员只需要定义接口文档即可开始并行工作,互不影响。 他们只是在*后的联调阶段紧密接触,开启TDD(Test-)模式,即测试驱动。 发展;
9. 您以前的自动化测试数据存储在哪里? 如何使用? 如何管理公共变量? 管理测试用例的方法? 如何提高用例覆盖率? 接口测试相关接口实现?
答:测试数据存储总结:
对于账号和密码,这种全局参数可以使用命令行参数单独提取出来,写入到配置文件(如ini)中
对于一些一次性消耗的数据,比如注册,可以用随机函数每次生成不同的数字。
对于多组测试参数的接口,可以参数化,数据可以用yaml、text、json、excel等方式存储。
对于可以重复使用的数据,比如需要为订单的各种状态创建数据时,可以将其放入数据库中,每次都初始化,然后使用后进行清理。
邮箱配置的一些参数可以使用ini配置文件
对于所有独立的接口项目,都可以采用数据驱动的方式,使用excel/csv来管理测试接口数据。
对于少量的静态数据,比如某个接口的测试数据,只需要在py脚本的开头写入2-3组即可,十年八年都不会改变。
10、不可逆操作如何处理,比如删除订单的接口如何测试?
答:本题考验的是创造数据的能力。 很多接口请求数据需要依赖之前的状态。
例如,在工作流中,不同的人流向不同的状态,拥有不同的操作权限。 在测试过程中,必须测量每个状态,并且您需要能够自己创建数据。
通常,数据是手动测试的,字段状态直接在数据库中更改。自动化也是如此。 您可以连接数据库创建数据并进行增、删、改、查操作。
测试用例预运行,setUp做数据准备
运行后、数据清理
11. 说出 5 个以上 Linux 命令(重点关注性能测试和监控的常用命令?)
答:cd、ls、grep、mkdir、pwd、ping 等。重要的是性能测试常用的监控命令:、top、Nmon、dstat、、、、free、lsof。 您需要至少回答以上两个问题。
12.介绍一下你在这个项目中是如何使用的。
答:基本操作,比如定期构建执行代码等。
13.举一些Linux下命令行cURL的常见用法和例子?
答:常用的有10种。 下面介绍三种常用的:
A、获取页面内容:curl+get请求; 卷曲
B、将链接页面的内容输出到本地文件:curl > index.html
C、使用-d发送POST请求:curl -d“=tom&=”
14、上一个接口参数的返回值作为下一个接口的输入参数有几种方式? 有哪些例子?
答案:正则表达式处理器、JSON Path
15、接口自动化中,如何处理签名、认证和加密等,采用什么方法?
答:比如MD5加密——内置库,取决于如何回答具体问题:开放性。
16.你的理解是什么? 使用条款? 参数化方法? 说说常用的装饰器?
答:是一个非常成熟、功能齐全的测试框架。 其主要特点如下:
1、简单灵活、使用方便、文档丰富;
2.支持参数化,可以对待测试的测试用例进行细粒度的控制;
3、可以支持简单的单元测试和复杂的功能测试,也可以用来做/etc自动化测试和接口自动化测试(+);
4.拥有众多第三方插件,可定制扩展。 比较有用的有-(集成)、-HTML(完美生成HTML测试报告)、-(失败时重复执行)、-xdist(多CPU分布)等;
5、测试用例跳转及xfail处理;
使用条款:
测试文件名必须以“test_”开头
测试类以Test开头,不能有init方法
测试方法必须以“test_”开头
除了setup/之外,你还可以更自由地定义和加载测试用例。
参数化方法:
支持多个完整测试中的参数化方法:
.():级别参数化
@.mark.:允许在或类级别进行参数化,为特定测试函数或类提供多个/设置。
s:您可以实现自己的自定义动态参数化方案或扩展。
17. 举例说明.mark标记的使用?
回答:
无条件跳过test.mark.skip
有条件地跳过 test.mark。
标记测试功能按预期失败。mark.xfail
将测试函数标记为使用给定的夹具名称.mark。
将警告过滤器添加到特定的测试项,以便更好地控制应在测试、类甚至模块级别捕获哪些警告@.mark。
自定义标签:标记指定标签
18.如何生成自动化测试报告? 如果详细的话?
答:@.("") # 优先级,包括,,,次要,几个不同的级别
@.("测试模块") # 功能块,当功能分块时,大于故事,即功能块和故事同时存在时,为父节点。
@.story("test ") #功能块,具有相同或story的用例会被组织到同一个模块中,可用于执行时的过滤
@.issue("BUG : 123") # 问题标识,关联标识存在的问题,可以是url链接地址
@.("用例名称:测试字符串相等性") # 用例标识,关联标识用例,可以是url链接地址
19.什么是冒泡排序? 如何手写冒泡排序?
答:冒泡排序(Sort)也是一种简单直观的排序算法。 它重复遍历要排序的序列,一次比较两个元素,如果顺序错误则交换它们。 重复访问数组的工作,直到不需要再进行交换,这意味着数组已经排序完毕。 这个算法的名字来源于这样一个事实:较小的元素会通过交换慢慢“浮动”到数组的顶部。
自动化测试面试问题 2:细节语言:基础知识
目的:验证申请人对自动化职位开发、脚本语言的基础知识和熟悉程度
1. super有什么用? 使用和使用有什么区别? 为什么要用超级? 请举个例子。
答:super用于继承父类的方法和属性。 super只在新式类中可用,所以使用时必须写在类名的参数中。 默认是新样式类,无需编写,直接使用即可。 使用super可以提高代码的可重用性和可维护性。 修改代码的时候,只需要修改一处即可。
2. L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3],用一行代码得到[11, 1, 2, 3, 5]
答案:列表(集合(L))
3. 列表和字典有什么区别?
答:一般来说,问题是列表和元组有什么区别。
(1)获取元素的方式不同。 列表通过索引值访问,字典通过键访问。
(2)数据结构和算法不同。 字典采用哈希算法,查找速度非常快。
(3)占用的内存不同。
4.json和字典dict有什么区别?
答:json是一种轻量级的数据交换格式
dict是里面的数据类型(里面的基本数据类型有:int、str、float、list、bool、tuple、dict、set等。里面没有像json这样的数据类型。json本质上是一个字符串,根据to key :value 键值对格式字符串;在json中,空值用Null表示,在dict中,空值用None表示)
主要区别:json的key只能是字符串,而dict可以是任何可哈希的对象(类型);
json的key可以排序、重复; dict的key不能重复。
json的值只能是字符串、浮点数、布尔值或null,或者由它们组成的数组或对象。
json中任何key都有默认值,而dict默认没有默认值;
json访问方式可以是[]或者.,遍历方式分为in和of; dict的值只能通过下标访问。
json字符串必须用双引号,dict字符串可以是单引号,也可以是双引号;
dict可以嵌套元组,但是json只有数组。
json:真,假,空
:对、错、无
json中文必须编码,如“\u6211”。
json的类型是,的类型是。
5、深拷贝和浅拷贝的概念和区别是什么?
答:浅复制:复制*外层容器
深拷贝:复制*外层容器,容器内的元素也被复制。
对于不可变元素,使用浅拷贝
6、单行注释和多行注释有什么用?
答:单行注释用#自动化软件开发 (岗位JD):,多行注释用“””“””。
7.垃圾收集机制?
回答:
1、回收引用计数为0的对象,释放其占用的空间。
2.循环垃圾收集器。释放循环引用对象
8. 如何安装第三方模块? 以及使用了哪些第三方模块?
答:使用官方推荐的包管理工具,easy-以及pip、
9.进程和线程有什么区别? 什么时候使用进程? 什么时候使用线程?
答:(1)区别:
① 地址空间和其他资源(如打开的文件):进程之间相互独立,同一进程的线程之间共享。 一个进程中的线程在其他进程中是不可见的。
②通信:进程间通信IPC,线程可以直接读写进程数据段(如全局变量)进行通信——这需要借助进程同步和互斥手段来保证数据的一致性。
③调度和切换:线程上下文切换比进程上下文切换要快得多。 ④ 在多线程操作系统中,进程不是可执行实体。
(2)使用场景:同时操作一个对象时,比如全局变量,我使用线程,因为全局变量是所有线程共享的。
10.谈谈你对面向对象的理解?
体现在三个方面:封装、继承、多态
继承有两种方式:
1、将同一个类的方法封装成类
2. 将数据封装成对象
继承:子类拥有父类的所有方法和属性。
好处:提取重复代码,减少代码冗余。
缺点:耦合性太强。
多态性:不同的类可以有同名的方法,同名的方法应用于不同的类时可以有不同的行为。
自动化测试面试问题3:详细信息
目的:验证候选人对自动化测试职位工具的熟悉程度
1、如何判断一个元素是否存在?
回答:
2、or=none中的元素能否定位到?
回答:
A。 是:可以定位,但不能操作。 可以判断元素()
如果要点击,可以用js去掉=none属性;
b. 否:可以先写入将标签改为0,然后再定位元素。 两个答案都是正确的,只需说明原因即可。
3、如何保证操作要素的成功率? 换句话说,如何确保我点击的元素是可点击的?
答:添加智能等待时间元素。(30)
添加强制等待时间(比如中文的sleep)
使用try方法以不同的方式定位id、name、clas、x路径和css。 如果**种方法失败,您可以自动尝试第二种方法。
4、如何提高脚本的执行速度?
回答:
1、少用睡眠,尽量不用。
2. 更频繁地使用显式等待方法
3.如何获得一台性能好的电脑? (看个人想法)
5.用例在运行过程中经常变得不稳定。 也就是说,这次通过了,下次就不会通过了。 如何提高用例的稳定性?
回答:
6. 您的自动化用例的执行策略是什么?
答:自动化测试和软件开发本质上是一样的。 自动化测试工具用于分析测试需求后设计自动化测试。
使用试用案例搭建自动化测试框架,设计并编写自动化脚本,验证测试脚本的正确性,*终完成自动化测试。
自动测试测试脚本(即以测试为主要功能的应用软件)并输出测试结果
7.什么是持续集成?
答:持续集成是一种软件开发实践,团队开发成员频繁地集成他们的工作,每个成员每天至少集成一次,这意味着每天可能会发生多次集成。
每个集成都通过自动化构建(包括编译、发布和自动化测试)进行验证,以尽早发现集成错误。
8、自动化测试时是否需要连接数据库进行数据验证?
答:一般来说
1.不需要UI自动化(很少需要);
2、接口测试会需要:从数据库层面进行数据验证,可以更容易验证系统的数据处理是否正确;
9、元素常用的定位方式有几种? 这些是什么? 您*喜欢哪一个,为什么?
答:8种类型:id、name、类名、标签名、链接文本、链接文本、xpath、css。 你更倾向哪个? 答:xpath和css几乎所有元素都可以定位,但它们的缺点是页面上元素改变后位置容易改变,而且xpath语法长,定位慢,不稳定; css语法简单,定位快,缺陷不隐藏。 ,所以首先要用到的是id或者name,css等。
10.如何定位页面上动态加载的元素?
回答:
1、触发动态加载元素事件,直到动态元素出现并定位。
2、()方法循环查询元素是否已经加载。
11、如何定位属性动态变化的元素?
答案:通过兄弟姐妹、父母和孩子进行xpath或css定位
点击链接后,是否需要自动等待页面加载?
答案:必填
12、原理是什么?
答:RC的原理就是在浏览器启动的时候注入到浏览器中,这样这些JS就可以驱动浏览器中的AUT。
(正在测试中),但通过调用浏览器原生自动化API直接驱动浏览器
13.什么是页面设计模式?
答:简单来说,就是将页面作为一个对象,在使用时通过页面对象来使用页面对象中对应的成员或方法,这样可以更好的体现面向对象和面向对象的封装特性语言(例如Java或Java)。
14.什么是()、常用的断言方法、UI自动化中的断言方法?
答:断言的英文单词是,断言检查的英文单词是。
断言是一个逻辑表达式,它指定程序必须具有的状态,或者一组程序变量在程序执行期间的某个时刻必须满足的条件
UI自动化中的断言方法:定位当前页面或跳转页面上唯一的一个或多个元素,判断是否存在。
15.您认为自动化测试*大的缺陷是什么?
答:不稳定、可靠性、维护难度、成本和效益
16.什么是分层测试?
答:业界普遍提到的是金字塔分层模型:UI测试、集成/接口测试、单元测试
17.列出你熟悉的自动化工具并解释其实现原理。
18. 高质量的自动化脚本应该具备哪些特点?
自动化测试面试题4:细节和性能
目的:验证候选人对性能测试的熟悉程度
1、基本概念:HPS、TPS、QPS、RPS、RT、并发用户数的概念? 简单的介绍?
回答:
HPS(Hits Per):每秒的点击次数自动化软件开发,单位为次/秒。
TPS(per):系统每秒处理的事务数,简称TPS。 每秒的交易数量是衡量系统性能的一个非常重要的指标。
QPS(Query per):系统每秒处理的查询次数,单位是次/秒。对于互联网业务来说,如果有的业务有且只有一个请求连接,那么TPS=QPS=HPS。 一般用TPS来衡量整个业务流程,QPS用来衡量接口查询次数,HPS用来表示服务器的点击次数。 问
RPS是每秒请求数(Per),通常用来描述压力引擎实际发出的压力量。 PS:当并发数过低时,可能达不到预期的RPS。 当并发数过高时,压力可能太大,服务器可能不堪重负。
并发用户数:简称VU,是指在真实系统中操作服务的用户。 在性能测试工具中,一般称为虚拟用户(User)数。 请注意,并发用户数与注册用户数和在线用户数有很大不同。 是的,并发用户数肯定会给服务器带来压力,而在线用户数只是“挂”在系统上,并不会给服务器带来压力。 注册用户数一般是指数据库中存在的用户数。
响应时间:简称RT,是指从客户端发起服务到客户端接受服务的时间。
2.压力测试工具? 主要看哪些指标?
回答::
Label:每个(例如HTTP)都有一个Name属性。 这里显示的是 Name 属性的值。
#:表示您在本次测试中发出的请求总数。 如果模拟10个用户,每个用户迭代10次,那么这里会显示100。
:平均响应时间-默认为单个单元的平均响应时间。 使用时,平均响应时间也可以单位显示。
:中位数,即 50% 用户的响应时间
90% Line:90%的用户响应时间
注:50%和90%并发用户的含义请参考以下内容
Min:*短响应时间
Max:*大响应时间
Error%:本次测试出现错误的请求数/总请求数
: - 默认表示每秒完成的请求数(per),使用时也可以表示类似的 per 数
KB/Sec:每秒从服务器接收的数据量,相当于/Sec
3、简单分析一下性能测试时TPS无法提升的原因?
回答:
TPS(Per):每秒交易数,指的是服务器在单位时间(秒)内可以处理的交易数量,通常以/为单位。
A。 网络带宽 在压力测试中,有时会模拟大量的用户请求。 如果单位时间内传输的数据包太大,超过了带宽的传输能力,就会造成网络资源的竞争,间接导致服务器接收的请求数量无法达到服务器处理能力的上限。
b. 连接池
可用连接太少,导致请求等待。 连接池一般分为服务器连接池(举例)和数据库连接池(或者理解为允许的*大连接数)。
C。 垃圾收集机制
例如从常见的应用服务器角度来看,由于Java的栈内存是动态分配的,所以具体的回收机制是基于算法的。 如果新生代的Eden和区域频繁进行Minor GC,那么老年代的full GC也会被更频繁地回收。 ,那么对TPS也会有一定的影响,因为垃圾回收本身就会占用一定的资源。
d. 数据库配置
高并发情况下,如果请求的数据需要写入数据库,并且需要写入多个表,如果数据库的*大连接数不够,或者写入数据的SQL没有索引或者bind变量,或者没有主从分离,读写分离会导致数据库事务处理过慢,影响TPS。
e. 通讯连接机制
串行、并行、长连接、管道连接等。不同的连接条件也会间接影响TPS。
F。 硬件资源
包括CPU(配置、使用情况等)、内存(占用等)、磁盘(I/O、页面交换等)。
G。 按
例如,单机负载能力有限。 如果需要模拟的用户请求数量超过其负载限制,也会间接影响TPS(此时需要分布式压测来解决单机负载问题)。
H。 压力测试脚本
我们再举一个例子。 之前有同事在工作中遇到过一些事情。 在分步压测时,模拟请求的*大数量超过了设定的线程数,导致线程不足。
提到这个原因的时候,我想表达的是,有时候测试脚本参数配置等原因也会影响测试结果。
我。 商业逻辑
业务解耦度低且复杂,导致整个交易处理线拉长带来的问题。
j。 系统架构
比如是否有缓存服务、缓存服务器配置、缓存命中率、缓存穿透、缓存过期等都会影响测试结果。
4.你知道多少种性能测试工具? 压力测试结果是否不同?
回答:
A、ab是内置的压力测试工具
B. 基于Java的压力测试工具
C。 它是一个编写的分布式性能测试工具
5. 性能测试策略?
答:性能测试需要一套标准化的流程和测试策略。 在做负载测试时,传统的方法是按照梯度压力法添加用户,避免在没有预估的情况下一次性添加数万用户,导致交易失败率非常高,响应时间非常长。 ,已经超出了用户的承受范围; 一种更适合互联网分布式架构的方法是采用TPS模式(吞吐量模式)+设置起始和目标*大水平,然后根据系统性能实时手动调整速度,效率更高,服务器吞吐量容量可以一步测量。
6. 设置性能测试场景的想法?
答:无论是并发模式还是TPS模式,场景都是压力测试模型。 压测模型有串行事务(如添加购物车+购物车下单+支付)和并行接口(在不同的串行链路)。 压力测试API),*终形成复杂或简单的场景。 然后根据新业务上线的目标,或者日峰值的比例目标,或者主要业务活动的预估支撑能力,设定各个API的目标容量(TPS是根据吞吐能力一步步设定的,TPS模型推荐,比如前面提到的添加购物车+购物车下单+支付的流程就是漏斗模型,TPS可以设置为逐渐变小的模型)。 当然,你也可以在*初的测试中更加谨慎,设定目标幅度。 整体设置较低。 当达到*终容量时,建议将原目标水平调整为120%或150%,以验证限流访问/高可用基础设施的抗压能力。 目标级别是该压测API在当前压测场景下的压力上限。 起始水平可以从5%或10%开始,根据业务指标数据和压测下端的整体负载情况,可以临时调整流程。
7. 您对服务器性能测试有何看法?
答:对于服务器端性能来说,主要用TPS来衡量系统性能,用并发用户数来衡量系统性能。 如果一定要以并发用户数来衡量的话,需要有一个前提条件,那就是事务需要多长时间在10秒内完成,因为当系统负载不高时,并发用户数通过添加基本可以翻倍思考时间(思考时间的值等于事务响应时间)到串行链路(场景),因此用并发用户数来衡量系统的性能没有多大意义。同样,如果系统之间的吞吐能力差异很大,那么相同并发下TPS差距也会很大。
8. 系统性能由哪些因素决定? 和并发用户数有关系吗?
答:由TPS决定,与并发用户数关系不大。
The TPS of the is ( a range), but the of users is not and can be .
It is that when , do not set a too long time to put on the in the worst case .
: Cake eggs
原文链接:
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等