0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

自动化软件开发 (岗位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开发-软件开发-网站制作等

相关案例查看更多