IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 软件测试面试题总结 -> 正文阅读

[开发测试]软件测试面试题总结

软件测试面试题总结

软件测试的目的是什么?

软件测试的目的师检验它是否满足规定的需求,或符合预期结果。

什么是回归测试?一般在项目的什么阶段执行?

回归测试:指错误被修正后或软件功能、环境发生变化后进行额度重新测试,确认修改部分不会对其他功能造成影响,一般在系统测试后期,新功能测试完成并且大部分bug都修复完成时,开始做回归测试,回归测试一般经历很多轮。

什么是冒烟测试,一般在项目额度什么阶段执行?

冒烟测试:是每一个新编译的需要正式测试的版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作,一般在项目正式测试之前做,保证基本核心业务正常,为了提高测试效率,缩短测试周期。

给你一张A4纸你如何测试?

因为没有具体的需求,根据我的了解,从下面几个方面来分析,
功能:能否在纸上写字,写好的字能否正常显示;
界面:纸的颜色是否白的,干净、大小是否符合A4纸的标准,
兼容性:各种笔写字是否支持,是否方便合订
安全性:资质是否含有害物质,颜色是否护眼
易用性:是否方便携带,写字是否流畅
性能:尖锐的笔划过是否会破?挤压。撕扯是否能承受。

当你开了一个bug,当时开发不认为是bug,如何处理?

我会先先从需求和用户角度触发,找到论据去尝试说服开发,如果仍然没有办法达成一致,就去找产品经理确认,如果产品确认了不是bug,在bug里面加备注,关闭bug,如果产品说要修复,就把bug重新激活指派给开发。

你们公司的项目多长时间一个迭代?每个周期内,测试占了多久时间?

我们公司用的敏捷开发模型,一个项目迭代周期大概为一个月,开发编写代码的时间为2周多,测试时间大概为一周半左右。

简单描述一下你们项目流程和你在项目中的职责?

在产品确认了项目需求之后,我们依据需求设计并编写测试用例,然后开发提测试后,我们执行接口测试,然后执行系统测试;测试过程中遇到bug,会记录到bug管理工具里面进行管理和跟踪;然后开发修复了bug,我们会进行bug的验证,以及进行相关的回归测试,2-3轮系统测试之后,评估一下产品质量出一个测试报告,没有问题产品就可以发布上线了。

Git工具使用场景和使用流程?

Git主要用于项目或文档的版本控制;使用流程:本地克隆远程git仓库,可以新建、修改项目文档或者代码,提交到本地库中;然后推送到远端服务器,统- -管理。

web项目 中如何实现浏览器的兼容性测试?

首先根据特定用户的要求,如果有指定要支持的浏览器,优先测试;其次,如果没有用户指定的浏览器,根据用户使用量+内核来看,选取每类内核中的主流浏览器来覆盖测试。

测试计划主要包括哪些内容,有什么作用?

测试计划包括测试范围、测试进度2安排、测试人员、测试环境,测试方法+测试工具,风险评估等内容;能够作为后续测试过程中人员分配、责任划分、执行测试、推动项目的重要依据。

测试报告在哪个阶段做的?主要作用是什么?

测试报告在系统测试完成之后,以及项目发布之前做的;主要作用是评估当前产品的质量,通过统计目前剩余的bug数量和严重级别,统计bug分布分析项目中的问题,以及完成的测试用例数量占总测试用例数量的比率,得出结论:目前产品是否达到了,上线的质量标准,是否可以进入下一个阶段(验收测试或者发布上线)。

请分别阐述一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的基本概念和内容

黑盒测试:就是把所有的功能和逻辑接口都放在一个盒子里面,你是看不到里面的逻辑与走向的,你只能通过盒子的外表进行测试。黑盒测试是指在测试过程中只关注输入和输出
白盒测试:基于软件内部设计和程序实现的测试方法(代码层面)。不仅仅关注输入与输出的结果是否正确,同时还关注程序是如何处理的
单元测试:对单个模块的测试,有具体到类、函数的测试,一般都开发来做的。
集成测试:是单元测试之后的一个测试阶段,是各个单元模块整合后对模块接口进行测试,数据传递是否实现
系统测试:是集成测试之后的测试阶段,是把集成后的模块,结合软件硬件环境,进行功能性和非功能的测试。主要采用黑盒测试方法
验收测试:是系统测试之后的测试阶段,用户在拿到软。件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到符合效果的

给你一个物品(例如:一支笔),你会从哪些方面去分析测试点(包括功能和非功能)?

功能:能不能写字,是否泄露,笔帽是否正常按下,弹起。
界面:查看笔的外观是否美观,logo是否正确,
易用性:使用是否方便,是否方便携带
安全性:材料是否有毒,笔尖是否会伤人
兼容性:笔是否可以装不同的笔芯,
性能:一直笔使用的长度,笔从不同的高度摔下损坏程度,用力去折笔看笔可以承受的力度。

根据测试流程,总结一下项目执行过程中会经历哪些阶段和步骤?

1、阅读需求,理解需求,参与需求评审会议,主要就是对业务的学习,分析需求点。
2、 参考软件需求规格说明书、项目总体计划,编写测试计划,内容包括测试范围(来自需求文档)、进度的安排,人力物力的分配,整体测试策略的制定,和风险的评估与规避措施有一个制定
3、 参考需求文档(原型图)、概要设计、详细设计等文档,编写测试用例,如果有不明确的也会及时和开发、产品经理沟通,用例编写完成后会进行评审
4、 首先搭建测试环境,执行预测(冒烟),以判定当前版本可测与否,如果预测通过,正式进入系统测试,遇到问题提交Bug到缺陷管理平台,并对bug进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束
5、编写测试报告,对整个测试的过程和版本质量做一个详细的评估。确认是否可以上线

你工作用过自动化测试么? - -般是在项目的哪个阶段做自动化测试?

1 :我工作中做过自动化;我们的自动化实现的覆盖率还没有那么全,所以只在冒烟测试阶段用自动化脚本来跑冒烟测试用例;
2 :我工作中做过自动化;我们的自动化主要是在回归测试阶段,因为回归测试工作特别繁琐而且重复,用自动化实现会节约很多时间和人力。

你们做的是什么自动化?接口, UI,还是APP ?为什么?

我们公司实现的是接口自动化,因为UI和AP自动化设计到界面,可变性太大了自动化的维护成本太高了 ;接口相对来说稳定很多 ,所以实现自动化的性价比相对来说最高。

Python的常用数据类型有哪些?

Python常用数据类型有:整型,浮点型,字符串,布尔型,列表,元组,字典,集合。

Python的- -个字符串str1= “python is the best!”,要取出来" Python “这个字符可以怎么实现?把"best" 字符取出来又怎么取?
用字符串的切片实现,取"Python" : str1[0:6:1] 取"best" : str1[-5:-1]

你能说说Python的列表、 字典和元组的区别么?

1 )列表和元组的元素都是有序的,所以可以通过索引来取值;
2 )但是元组的元素不可以被改变,而列表是可以进行元素的增删改查的;
3)字典在Python3.6之前都是无序的。所以不能通过索引来取值,可以通过key来取value值;
4 )字典的key不能重复和修改, value可以修改,而且键值对可以增加删除。

能解释一下函数的*args和**kwargs两种参数的区别?

这两个都是函数的不定长参数:函数调用的时候,可传可不传,也可以传一个或者多个;
*args:这种不定长参数,是当函数的必备参数和默认参数接受完后,剩下的参数都会被它接受,并且以元组的格式保存;传参方式是通过位置传参。
**kwargs :这种不定长参数也是当函数的必备参数和默认参数接受完后,剩下的参数都会被它接受,但是这是以字典格式保存;而且这种需要用关键字传参方式来传参。

说说你对函数的返回值的理解

函数结束后,可以设置一个返回的数据,给调用这个函数的代码使用,这个返回的数据叫做“返回值”。Python里用 return这个关键字来定义。
1 ) return后面的表达式可以有一个。或者多个用逗号隔开;返回的是元相格式:
2)不需要返回值的时候,就返回None ;函数默认返回值就是None ;
3 ) return语句标志着函数的结束, returm语句后面的语句不再执行。

你们的Python接口自动化测试用的什么库?你能简单描述一下这个库是如何发送接口请求的么?

我们用的是Python的第三方库requests库;我们的接口协议都是http协议,用的基本都是get和post请求; request库有很多自带的方法,比如get方法和post方法,我们从开发那边了解到这个接口的地址,以及需要传的参数,用对应的方法发送到服务器接口;然后得到相应消息之后,可以直接通过相应消息对应的方法,获取到对应的内容,比如页面内容,响应码和头部、cookies等等 ;得到这些信息,再去跟预期结果做对比就好了。

你们做自动化测试的时候用什么操作的测试用例?能说说具体操作步骤么?

因为我们的测试用例都放在了Exce|表格中,所以我们用的是openpyxl库来操作Excel表格; openpyxI有自带的方法可以分别去获取Excel表格对象、表单( sheet)、表格( cell )以及表格里的内容;把读取到内容保存到列表和字典中,方便后续使用。
Python的Requests库,如果要发送带cookies的请求你们是怎么处理的?
Python的requests库自带一 个session模块 ,用这个模块的session(方法去发送接口请求,可以自动携带cookies ,不用手动传输;当然,手动传输也可以,先获取到cookies值,在接口请求的时候再带上对应的cookies值也是OK的。

你们公司用到了jenkins工具么?能说说你们的使用场景么?

我们公司使用Jenkins工具主要用来做持续集成;开发会用这个Jenkins工具打包部署环境,测试主要用来持续集成自动化测试;把我们的自动化脚本放到git或者svn服务器上,然后Jenkins.上做- -些配置,定期的自动去构建并执行脚本,并自动化发送执行结果。

系统的配置文件存在哪里?系统默认安装路径在哪里?如果是超级管理员,它的家目录在哪里?

系统的配置文件存在/etc路径下
系统默认安装路径在/usr路径下
如果是超级管理员,它的家目录在/root

绝对路径和相对路径概念以及区别是什么?

绝对路径:是从根目录开始寻找
相对路径:是从当前目录开始寻找
区别:在路径地址前是不是以/开头

在vi编辑器里面.保存退出和不保存退出的命令是什么?

保存退出: :wq 不保存退出: :q!

查看日志的命令是?

tail-f

简述一下ps -ef | grep tomcat的作用

ps -ef是查找所有进程的命令。该命令的作用是去判断tomcat进程是否有启动,同时也可以判断如果tomcat进程启动了,那么进程号是多少

简述- -下netstat -apn I grep 8080的作用

netstat -apn是查找所有端口的命令。该命令的作用是去判断8080这个端口是否已经被占用了,如果有进程在占用这个端口,那么可以判断是哪个进程在使用这个端口
简述一下kill-9 的作用 强制杀死某个进程

提示错误permission denied或者是Operation not permitted该怎么解决?

a、切换有权限的账号重新登录操作
b、对被操作的文件进行赋权

解压和压缩tar.gz格式的命令是?

a.解压: tar -xzvf
b.压缩: tar –czvf

运行tomcat之前为什么要安装jdk ?

答案:因为tomcat的运行是要依赖java开发环境的,所以需要安装jdk来构建java开发环境

tomcat的配置文件路径在哪里?

在tomcat目录下的/etc

tomcat的端口号怎么修改?

答案:去Tomcat路径下的conf文件夹下面,修改server.xm|文件里的,httpconnector port既可

怎么让远程用户也能连接上数据库呢?

答案:需要在服务器上进入数据库,然后执行grant语句,对需要远程连接的主机进行赋权即可

你们公司部署项目的流程是怎么样的?

a.先保证服务器上的环境已经搭建完成
b.把开发提供的war包放到webapps下,如果有配置文件变化的话,也会去修改conf里的文件信息,同时如果开发人员提供了项目数据库脚本,我们也要去执行这个脚本的

怎么清除服务器的缓存?

把tomcat下的work文件夹清空即可

写出10个常用的linux命令,并选择一个举例具体说明其操作方法。

vi:编辑命令,vi /home/test 后面跟上路径+文件名
touch mkdir mv cp fid grep tail head
ps-ef:查看进程:ps -ef | grep tomcat 是查看tomcat这个进程,看tomcat是否启动

将文件file1 名字改为filenew1

mv filel1 filenew1

表Loingshine中的字段 sname数据存在相同的多条记录,请用一个SQL把所有sName重复的记录查询出来,并显示重复记录的数量,表结构: Create table Loingshine (id number, Sname varchar(100), Scode varchar(100));

select ,count() ‘重复记录数量’ from Loingshine group by sname having count(*)>1;

请写出内连接,左链接,右链接的关键字,并分别简述其作用。

LEFT JOIN:左连接,会读取左表全部数据,即便右表没有对应数据。左连接从左表产生一套完整的记录,和右表匹配的记录 .如果右边没有匹配记录,右侧结果集字段将为null
RIGHT JOIN:右连接,以右表为基础,与LEFT JOIN相反
INNER JOIN :内连接,或等值连接,可以获取两个表中字段匹配关系的记录。

sql能做什么?

a.创建数据库、表等数据库对象
b.数据库记录的增、删、改、查

建库建表的语法是什么?

建库: create database数据库名;
建表: create table表名(字段名类型);

赋值时,时间日期类型、字符串类型与整型、浮点型有什么区别?

时间日期类型、字符串类型在赋值时,要带上引号,而整型浮点型不需要
插入部分字段数据时,应该要注意什么?
要注意插入字段的个数与values()里面赋值时的字段个数一致

在查询语法中。select后面如果是*表示什么意思

*表示通配,表示要查询出所有的字段

为什么表与表之间需要存在关耿关系呢?

首先,如果把数据全部都放在一个表里,那么查询起来的字段会特别多,数据量也特别的大,就会造成维护困难,甚至会出现垃圾数据;所以,为什么会把不同的数据放到不同的表里面.可以说是分类管理;当数据之间有关系的时候,我们就可以在设计表的时候,在表之间建立关联关系即可,

什么是等值连接?

答案:又称为内连接↓它们是用来获取两个表中字段匹配关系的记录的

什么情况下会使用到左连接?

答案:当进行多表连接查询时,想要哪张表的数据全部显示,就把对应那张表放在左边

group by的作用是什么?

group by的作用是按照某-一个,或者多个字段来分组,也可以理解为把同类型的都放在一-起。

被分组的字段应该要注意什么?

被分组后的字段一-定要是被查询的字段。

查询有顺序吗?如果有的话,那不按顺序来查询会有什么问题呢?

查询是有结构顺序的,如果不是按照顺序进行查询,那么查询出来的数据有可能会有错误。比如wherea = 1 group by b;和group by b having a = 1; 前面的是先进行条件过滤,把过滤后的数据再进行分组,而后面的是先分组再过滤条件

小程序怎么做兼容性测试的?

1 )适配不同系统平台, Android和IOS的主流手机平台,如华为,小米, iPhonell , iPhoneXR等,覆盖到最新的试用版和当前流行的主要版本;以及系统版本( Android5.x, iOS13.x )
2)适配不同的微信版本,确认支持的最老的微信版本是多少,是否支持;以及是否支持最新的微信版本;中间版本可以挑选一些用户使用量较大的测试;
3)考虑不能手机屏幕的大小,比如iOS 7Plus . iphonex , Android5.5屏幕等;

H5和Native APP的区别?

H5 :1)开发快。实现的功能也很炫; 2)只编写一次。可以在多个设备上到处运行:
3)具有局限性。如会话管理、安全离线存储、访问原生设备功能(摄像头.日历和地理位置) -依赖网络
Native App :1)原生应用程序看起来(界面)和运行起来(性能)是最佳的:能更好的适应各种类型的功能实现–缓存
2)开发和测试周期比较长。原生的开发太耗时耗力;
3)必须登录到商店、下载新版本,才能获得最新惨正版;

APP测试什么时候需要收集日志?怎么收集日志的?

一般当APP异常的时候,比如发生崩溃或者ANR的时候,会收集一下系统日志,帮助开发定位bug ;
Android手机会借助一些工具比如adb ,连接手机以及找到对应的日志路径,把日志拉取( adb pull )出来,然后通过关键字查找到有效的日志信息,贴到bug里即可;
IOS手机也同样会借助-些工具,比如苹果电脑会用xcode ,没有苹果电脑会用ITunes或者ITools这种的工具,或者到对应日志。

APP和web端兼容性分别是怎么做的?

web兼容性测试主要考虑不同浏览器的兼容;
app需要考虑手机不同操作系统、不同机型、不同屏幕等;主要考虑主流手机的适配

说一下你对云测平台的了解?

我所知的云测平台,有testin云测、百度MTC、腾讯优测、阿里MQC。
相对来说,对testin云测平台了解多一些,有用该平台来尝过免费兼容性测试,如上传一个app安装包,免费选择50款手机机型,30分钟后会出来一个测试结果。主要包括在不同手机上的安装、打开、monkey随机操作、关闭、卸载这种一个过程,监测时间、CPU、内存、电量耗用这些。

简述下app测试中如何通过日志定位异常问题?

安卓app可通过adb logcat获取日志,例如像crash问题可通过出现异常的时间+exception关键字+包名、或者force finish关键字,定位报错日志;
如果是anr问题,可通过获取手机上的trace文件,或者DropBox中异常日志文件;
如果是苹果app,可通过苹果电脑自带的xcode获取、无苹果电脑的话,可借助第三方工具例如itools工具来获取定位

某app出现一个BUG:用户输入自己的账号密码点击登录后,登录了别人的账号,看到了别人的账号信息,该登录有2次请求,第一次请求是鉴权及加密,返回加密字符串给第二个请求,由第二个请求携带加密字符串进行鉴权登录,该问题是偶尔出现的问题,请猜测是何种原因引起的并简要回答怎么设计用例去覆盖该类问题?

可能是加密字符串返回错误导致的。 如果要去重现这个问题,我们可以同时发起AB两个不同用户的登录第一次请求,然后把A返回来的加密字符串复制下来,等到B用户发起第二次请求的时候,我们把加密字符串替换成A的,看是否有问题。

app出现ANR,是什么原因导致的?

1.主线程执行了耗时操作,比如数据库操作或网络编程
2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。

App出现crash原因有哪些?

1.内存管理错误?:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。 或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。 亦或非授权的内存位置的使用也可能会导致App crash。
2.程序逻辑错误:?数组越界、堆栈溢出、并发操作、逻辑错误。 e.g. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
3.?设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
?4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。

你对接口测试是怎么理解的?

答案:我理解的接口是功能数据传递的通道,是实现某个功能的一个函数。接口参数就是函数的参数,接口的响应数据就是函数的返回值。接口有分内部接口,即同一个系统项目包含的接口;还有外部接口,跨系统跨平台的接口,涉及第三方,例如支付接口。接口测试就是绕过前端直接对接口调用,查看接口功能实现是否正常。

HTTP协议常见的返回状态码有哪些?

答案: 200 (正常) :表示一切正常,到了服务器,并且服务器正常的响应了你的请求。404 (找不到)服务器上不存在客户机所请求的资源。500 (内部服务器错误) :服务器端的CGI、ASP. JSP等程序发生错误。504: 超时。

你们什么时候做接口测试?接口测试用例怎么设计的?

一般是后端接口开发出来,我们就可以开始接口测试了。首先必要的了解接口需求,弄懂功能及业务实现逻辑。1)先保证这个接口功能是好的,也就是输入正常的参数输入,是否可以返回正确的结果; 2)然后考虑接口异常验证:包括必填项验证、长度、类型异常等;比如说手机号11位,输入非11位,10位、12位的来验证; 3)还有需要考虑接口的业务逻辑。比如说必须执行了回款计划,才能修改标的状态到还款中4) -一些必要的接口安全验证要考虑到,例如注册接口中传入的密码是需要加密的;还有就是权限这块; 5) 如果有接口性能测试要求,还需考虑性能测试部分的用例设计。

除了jmeter ,你还了解哪些其他做接口测试的工具?

答案: postman, soapui, loadrunner ;目前主流一点做接口测试工具的是jmeter. postman ; soapui测试soap协议会比较好用; loadrunner做性能测试比较多

如何使用jmeter做接口测试?用到哪些测试元件?

比如测试注册接口,先在测试计划下面添加线程组.添加http请求.进行相对应的接口请求地址、请求方式,传入参数的设置;添加请求头。设置数据传递格式json然后添加查看结果树.用来查看接口测试过程中,请求及响应信息;点击运行,关注查看结果树中的响应结果中的status. code. ms9信息是否跟预期- -致,同步关注数据库变化.像注册会在数据库项目表中插入一条用户信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查问题。

比如说有两个请求,上-一个请求的结果作为下一一个请求的参数传入,怎么来实现呢?

用关联, jmeter中可以用正则表达式提取器或者json提取器来实现。例如登录、加标两个请求,若加标需运行成功,必须从登录的响应结果中获取到token再传递到加标的请求头,因为返回结果数据格式是json的,所以可用json提取器,输入json表达式提取到token值,再做变量引用。

如何保证接口测试是通过的?

如果返回结果是正常的:查看数据库以及日志是否有问题,无问题,则测试通过;有问题例如数据库数据增删改有问题就提交bug到bug管理系统; 2 )如果返回结果是异常的:a.先确认地址、参数名、参数传值等是否正确.有问题对应修改: b.如果这些请求设置,传值都没问题,查看数据库以及日志是否有问题,有问题,则提交bug到bug管理系统,井且附上有问题的数据以及日志。

你认为接口测试的重点是什么?

我认为首先得确保自己接口请求地址、参数传参正确性,然后测试过程中需要关注服务器返回例status. code. msg信息,数据库表信息更改,日志信息;特别是报错的时候,需要通过日志帮助排查问题

web测试和APP测试的区别?

WEB测试和App测试从流程 上来说,都需要经历测试计划方案,用例设计,测试执行,缺陷管理,
测试报告等相关活动,从技术上来说,都需要进行功能测试。性能测试,安全性测试、U测试等测试,基本没有什么区别;他们的主要区别在于具体测试的细节和方法有区别:
兼容性测试:在WEB端是兼容浏览器,在App端兼容的是手机设备。而且相对应的兼容性测试工具也不相同,WEB因为是测试兼客浏览器,所以需要使用不同的刘览器进行兼容性测试;如果是手机端,那么就需要兼容不同品牌,不同分辨率,不同android版本甚至不同操作系统的兼容。
性能测试:在WEB测试重点考虑响应时间。在App测试中还需要考虑流量测试和耗电量测试。
安装卸载: WEB测试基本上没有客户端层面的安装测试,但是App测试是存在客户端层面的安装卸载测试的测试点
中断测试,就是在操作某个软件的时候,来电话,来短信,电量不足提示等外部事件。
操作类型测试:如横屏测试,手势测试
网络测试:包含弱网和网络切换测试。需要测试弱网所造成的用户体验。重点要考虑回退和刷新是否会造成二次提交。弱网络的模拟,据说可以用360wifi或者fiddler工具实现。
升级测试: WEB测试只要更新了服务器端,客户端就会同步会更新; APP需要升级对应的客户端,并且需要检查升级的提醒机制,升级取消是否会影响原有功能的使用,升级后用户数据是否被清除了。

你理解的接口测试是什么?接口测试的原理?

接口测试理解:我所知道的接口测试包括内部接口测试和外部接口测试;内部接口主要的是功能与功能模块之间接口,前端与后端间的接口。 我主要做的是前端与后端接口测试,这种接口是后端开发与前端/移动端页面进行数据交互的。在还没有前端界面的时候,进行接口测试,会提前发现一些bug。
接口测试的原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程。

你认为接口测试的重点是什么?

我认为首先得确保自己接口请求地址、参数传参正确性,然后测试过程中需要关注服务器返回例status、code、msg信息,数据库表信息更改,日志信息;特别是报错的时候,需要通过日志帮助排查问题

如何使用jmeter做接口测试?

比如测试加标接口,先在测试计划下面添加线程组,添加http请求,页面进行相对应的接口请求地址、请求方式、传入参数的设置;然后添加查看结果树;点击运行,关注查看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像这里会在数据库项目表中插入一条标信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查问题。大致就是这样
如果需要在jmeter中引入已经打包好的jar包中的功能,请说明一下操作步骤:
1、把jar包放到jmeter目录\apache-jmeter-x.x\lib\ext下
2、在Test Plan的右侧面板最下方直接添加需要引用的jar包

常见的HTTP服务器返回状态码有哪些,其含义是什么?

200(正常):表示一切正常,到了服务器,并且服务器正常的响应了你的请求。
302(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
304(未修改):表示客户机缓存的版本是最新的,客户机应该继续使用它,比如说前端js
403(禁止):服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致。
404(找不到)服务器上不存在客户机所请求的资源。
500(内部服务器错误):服务器端的CGI、ASP、JSP等程序发生错误。
504: 超时。

项目为什么要做接口测试?其意义在哪里?

1、项目开发后端先于前端开发,测试在后端开发完提前介入项目,尽早发现问题;
2、测试可以覆盖一些绕过前端直接后端请求的场景,可以保证接口的安全性。

以前公司的测试工作是怎么开展的?各个阶段有哪些产出物?

首先会召开需求分析会议,参加人员有产品、开发和测试,主要是探讨需求主要的一些功能点,完了之后,开发就排期进行开发,我们测试会按照测试计划进行任务分配。先会参考需求规格说明书及原型图编写测试用例,写完之后会进行用例评审,有评审修改的就修改整理形成最终的用例版本,之后开发人员版本编译完成后,我们会先进行预测,主要对主功能业务进行测试,如果主业务流程不通过,直接返回给开发进行修改。预测通过,依据测试用例进行系统测试,测试过程中,提交bug,跟踪bug,进行回归测试直至不存在严重bug,满足用户需求,测试完后编写测试报告,发布上线后,关注web是否正常运行。产出物包括:测试计划、测试用例、bug、测试报告

讲一个熟悉/最近的项目,做了哪些工作?主要负责的什么模块?

项目迭代了多少次?每次迭代周期多久?上家公司多少测试人员?多少开发?公司规模?公司地址?公司主要项目的网址?

给你一个购物车模块,你会如何设计测试用例?

1.界面测试: 界面布局、排版是否合理;文字是否显示清晰;不同卖家的商品是否区分明显。
2.功能测试: 未登录时: 将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加;点击购物车菜单,页面跳转到登录页面。
登录后: 所有链接是否跳转正确;商品是否可以成功加入购物车;.购物车商品总数是否有限制;.商品总数是否正确;全选功能是否好用;.删除功能是否好用;填写委托单功能是否好用;委托单中填写的价格是否正确显示;价格总计是否正确;商品文字太长时是否显示完整;店铺名字太长时是否显示完整;创新券商品是否打标;购物车中下架的商品是否有特殊标识;新加入购物车商品排序(添加购物车中存在店铺的商品和购物车中不存在店铺的商品);是否支持TAB、ENTER等快捷键;商品删除后商品总数是否减少;购物车结算功能是否好用。
3.兼容性测试不同浏览器测试。
4.易用性测试“删除功能是否有提示;是否有回到顶部的功能;商品过多时结算按钮是否可以浮动显示。
5.性能测试:压力测试;并发测试。

说一下你的项目的这个支付怎么测试的?

支付金额:最小0.01 无实际意义的金额输入:0 格式 负数 最大限额的(假设2000为上线,测试2000 2000.01) 余额小于支付 当日消费/单次消费上限
支付方式,微信,支付宝,银行卡等
支付的操作:密码错误(上限次数) 指纹支付 面容支付 免密码 支付过程中的中断测试
注册的时候,同步绑定托管银行的一个虚拟账户,进行支付的时候,先要绑定支付银行卡;
首先测试正常充值支付的情况:支付金额不能超过银行限额,比如支付100,提交支付的时候,会向银行去发起一个支付订单,银行支付成功会返回状态成功, 并且托管银行账户会显示充值后的金额,本地数据库的个人信息表的余额会显示充值后的金额,也就是能看到平台界面的金额会显示充值成功100;另外支付银行卡会扣除100; 其次要考虑其他异常支付情况:比如支付金额超出银行卡限额;超出银行卡余额;支付0元;支付金额输入负数;还有测试弱网场景下多次支付提交是否只被执行一次;
如果面试官有问到关于跟托管银行对接这块具体怎么测试的,就说当时主要是开发负责对接的,对接好了我们再去测试的;另外面试官有问到你们测试过程中,支付银行卡这块,比如银行卡上限5w,你测试4w9,是直接用真的银行卡测试的,这里就要说测试环境上,支付银行卡这里具体支付多少,开发改了代码,无论支付多少,实际扣费0.01元

需求文档不完善或者不准确,怎么处理?项目很紧急,也会写测试用例么?

在分析需求文档编写用例的时候,尽量把需求模糊的地方记录下来,同时可以产考市面同类型产品,给予自己的建议;把这些整理成问题集,统一跟产品确认;项目很紧急,我们自己会把要测试的验证点写出来;测试完成后,有时间再去整理完善用例。

有没有什么测出的特别好的,对开发帮助特别大的bug?或者是印象深刻的bug?

提交了一个bug,开发认为不是bug,作为测试怎么办?

首先确认开发环境是否跟自己测试环境一致(有时候开发是在他们已更新代码的环境上验证bug的,所以bug就没出现,但在测试环境上面会出现;还要确认缓存有无清除),确认在测试环境能重现,如果确认是缺陷跟开发保持有效的沟通,如果是级别较低的建议性bug,可以先记录到bug平台,先保留沟通;如果是bug级别较高的问题,对应需求文档的预期结果跟开发说明,更有说服力;耐心讲解bug的危害,不行就找产品确认,确认是bug注明情况并再次指派给开发

你是如何部署测试环境的?能说说具体步骤吗?测试环境如何更新? 会用到哪些命令?查看日志的命令是什么?你们用的tomcat、jdk等这些版本号是多少?你们公司有几台服务器?

1:a) 项目用的数据库mysql,然后部署到tomcat,首先确保服务器上tomcat、jdk、mysql已安装好
b) 新建一个库,运行开发提供的sql脚本,创建好对应项目的数据库表信息
c) 把开发提供的项目部署包放到tomcat的webapps里面,配置文件放到tomcat的conf里面,并修改好配置文件的IP地址和数据库连接信息
d)启动tomcat,并在浏览器输入项目访问地址,是否能打开项目界面,确认项目环境是否搭建成功
2:开发修改代码后,会提交新的项目包,会替换tomcat的webapps原有的代码包,然后清除work下的缓存,重启tomcat;另外有涉及数据库升级脚本,同步执行升级脚本;大概就是这样。
3:cd ps -ef|grep tomcat kill ls vi ll ./startup.sh;查看日志tail -f 日志文件名
4:版本号自己好好去看下当时环境的版本号 注意,涉及到具体数据,灵活变通。
5:三台服务器;开发环境,测试环境,生产环境各一台,当然最少说3台,多的可以说有10来台都是可以的

你们接口项目有多少个接口? 说一下你们是怎么做接口测试的?

2、 先对开发提供的接口文档做好需求分析,进行用例编写及评审,然后就是选择jmeter做接口预测,确保接口功能能正常调用,然后才进行详细的测试。

具体测试是用jmeter来完成的,比如测试加标接口,先在测试计划下面添加线程组,添加http请求,页面进行相对应的接口请求地址、请求方式、传入参数的设置;然后添加查看结果树;点击运行,关注查看结果树中的响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像这里会在数据库项目表中插入一条标信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查下问题。大致就是这样

请列出接口测试用例的设计思路或方法?接口测试用例是怎么写的?

首先必要的了解接口需求,查看概要设计文档,弄懂业务逻辑和功能模块
1)先保证这个接口功能是好的,也就是输入正常的参数输入,是否可以返回正确的结果
2)然后考虑接口异常验证:包括必填项验证、长度、类型异常等;比如说手机号11位,输入非11位,10位、12位的来验证
3)还有需要考虑接口的业务逻辑。比如说必须执行了回款计划,才能修改标的状态到还款中
4)一些必要的接口安全验证要考虑到,例如注册接口中传入的密码是需要加密的;还有就是权限这块,必须是已登录已实名的账户才能投资,这跟业务逻辑是一样的
5)编写用例的时候注意用例内容包括用例id、接口名称、请求方式、接口地址、用例标题、输入参数、预期结果(包括返回结果、数据库表字段变化)

接口测试你是怎么定位bug的?请详细说明一个bug的发现过程

1)如果返回结果是正常的:查看数据库以及日志是否有问题,无问题,则测试通过;有问题例如数据库数据增删改有问题就提交bug到bug管理系统;
2)如果返回结果是异常的:
a、先确认地址、参数名、参数传值等是否正确,有问题对应修改;
b、如果这些请求设置,传值都没问题,查看数据库以及日志是否有问题,有问题,则提交bug到bug管理系统,并且附上有问题的数据以及日志。 Bug提交自行举例。

有没有写过测试计划?里面包括哪些内容?

一般是我老大写的;测试计划包括的内容:测试目的、测试范围、测试时间安排、人员任务分配、测试策略及方法、测试环境内容、风险评估;(参考“5W+1H”去记忆)

你觉得一个测试工程师应该具备哪些素质和技能?

计算机知识,包括操作系统,数据库,通讯协议原理,熟悉至少一门编程语言;软件测试知识,包括测试理论,测试方法,测试用例编写,缺陷跟踪流程,软件质量评估等;产品业务分析能力,熟悉所测产品的一些隐藏需求或功能。
素质就是测试相关例如:耐心细心 。 责任心,对自己测试的项目有一定的责任心。良好的沟通能力,在出现问题的时候,才能跟开发进行良好的沟通。让整个项目进展更加顺利。 团结及合作能力。 学习能力。分析及解决问题能力

用fiddler做什么?说下具体过程?

1)抓包,分析定位系统问题。
2)利用fiddler可以将测试环境资源重定向到本地,快速验证一些bug。
3)利用fiddler可以完成做一些简单的接口测试。
4)利用fiddler的断点可以完成一些特殊场景下的测试,比如安全测试。
web抓包,先进行fiddler的代理设置,默认端口号是8888,然后浏览器也要确认是否开启了网络代理; 代理设置确认后,浏览器输入要访问的网站,然后fiddler就可以抓取到对应的网站信息了,这里如果不想抓取所有网络资源,可以fiddler的过滤器设置一下只抓取自己网站的

给你一个项目,你会怎么测试?

按工作流程来回答:1)需求分析2)制定计划3)编写测试用例以及相关文档4)执行测试/回归测试/提交bug5)出具测试报告/上线后进行维护性测试
按测试方法来说:黑盒测试/功能测试:我们重点体现在:测试用例的设计,采用常用的设计方法:等价类划分、边界值、错误推测法、场景法

如何测试一个纸杯?(类似于铅笔、椅子、电梯、雨伞等!)

容量:倒入白水,得出最大盛水量外观,
兼容性:分别倒入不同的液体,是否可以装不同的液体,分别在不同环境下使用(大风、大雨、大雪等)是否可以正常使用。
外观:观察杯子是否符合大众审美需求,图案是否正确,拿在手上是否掉色。
安全性:是否对人体有害,
性能:是否可以承受不同温度,内壁防水膜是否会脱落,倒入不同的液体静放一段时间,观察杯子几天之后会漏。
压力:用手按压杯子,是否容易变形
易用性,观察杯子形状,是否容易倒入液体,是否方便喝水。

一天能写多少条用例?能执行多少条用例?发现多少bug?如何保证测试用例的覆盖率?

一天写多少用例或者是执行多少用例发现多少bug是根据项目的需求是否明确,项目功能模块是否复杂、程序员的代码质量以及当天的时间安排来确定的。

如果问:bug这么少?—直接回答,可能是我们程序员的需求分析做的好,功能代码写的好。
保证用例覆盖率的话,首先自己在编写测试用例的时候,尽量覆盖所有的功能+功能业务,采用合理的用例设计方法去包含所有的正面、反面的测试点,然后我们会开展测试用例评审会议,开发测试产品一起讨论,进一步保证用例已全部覆盖所有的需求功能;测试执行过程中,发现的未被覆盖完整的用例,测试完整后,会进行用例完善。尽量确保下一次用例的覆盖完整。

测试数据你们是怎么做的?怎么在用例里面体现出来?

我理解的测试数据包括测试输入的数据,还有作为待测对象的数据例如报表记录这种数据。
测试输入的数据是自己准备的,有难度的才叫开发帮忙,比如设计到数据库加密处理这种数据。举个例子说明:最近测试的一个投资功能,我们需要提前准备好用户数据,用户的登录信息,用户的账户余额准备,以及到后台加好要投资的标。这些都是我们自己通过后台以及结合数据库做的测试数据。

对于复现率不高的bug怎么处理?

先在出现问题的环境上尽量重现,保持浏览器环境、出现问题的特定账号等的一致,多次尝试仍然不能重现,也要记录到bug平台,将出现问题的特征步骤尽量描述清楚,附带问题截图及日志截图,注明偶现;
如果项目时间允许,bug等级高,需要开发协助重现;如果时间不允许,记录到bug平台后续再跟进。多次测试版本验证,如果这个bug仍然复现不了,可能会视严重程度关闭。

请写出内连接,左链接,右链接的关键字,并分别简述其作用。

left join:左连接,会读取左表全部数据,即便右表没有对应数据。左连接从左表产生一套完整的记录,和右表匹配的记录 .如果右边没有匹配记录,右侧结果集字段将为null
right join:右连接,以右表为基础,与LEFT JOIN相反
inner jon:内连接,或等值连接,可以获取两个表中字段匹配关系的记录。

你们什么时候做接口测试啊?为什么要做接口测试?

一般是前端还没有开发出来,但后端已经开发差不多的时候做。
开发代码初期,UI和web页面设计还没有到位,提前介入测试更早发现问题,否则底层的一个bug可能会引起外面的8个bug;处于接口安全层面考虑,前端进行限制容易绕过,需要同样测试后端的限制;另外测试接口验证数据的加密传输,例如用户密码

Post 和get 的区别是什么?

1、GET提交的数据会放在URL之后,以 ?分割URL和传输数据,参数之间用 & 相连;POST方法是把提交的数据放在HTTP包的Body中
2、GET提交的数据大小有限制(注意:HTTP协议规范没有对URL长度进行限制,这个限制是特定的浏览器及服务器对它的限制);POST方法提交的数据没有限制 。
3、对参数的数据类型,GET只接受ASCII字符;而POST没有限制
4、GET请求参数会被完整保留在浏览器历史记录里;而POST中的参数不会被保留
5、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

测试报告包括哪些内容?测试报告交付文档有哪些?你认为测试报告的侧重点是什么?

测试报告中主要包括本次测试记录,像测试范围、测试开始结束时间、测试人员、用例覆盖、执行通过率;还有bug统计及分析,总体bug汇总、bug不同维度的统计分析等;最后还有测试结论
交付物主要是测试用例、提交的bug、测试报告;
侧重点我认为是bug的结果分析以及测试结论。

测试过程中用过哪些测试工具?怎么使用的?

自己会用的工具:Jmeter、soapui、fiddler等。jmeter简单压力测试、接口测试;soapui接口测试;fiddler抓包工具;
举例子简述如何操作:用的比较多的是Jmeter,我们一般用来测试接口。比如说以前测试过投资接口,首先创建一个线程组,添加一个http类型的请求,把url以及参数都填写到http请求界面,然后再添加一个查看结果树,方便我们自己查看http请求以及返回结果。根据接口测试用例来一一测试接口,并把发现的bug提交到禅道上面。

在平时测试工作中你是如何保障测试的质量的 ?

——从需求阶段开始,会先理清楚产品的大致功能及功能模块的联系,进而再去熟悉需求细节,把需求不明确的部分会及时跟产品进行沟通;
——需求确定后,时间紧张的话,我会按功能模块去整理测试点,整理过程中也会参考同行业的产品去进去测试点设计;整理完成后,我们测试内部会进行测试点的评审,进而保证对于需求覆盖的完整性;
——测试执行过程中,注意bug格式规范,提交详细有用的bug信息,便于开发解决问题;且会做好bug跟踪。碰到测试点覆盖不到但出现bug的地方,都会做好文档总结;
——每天会发送日报汇报进度安排,便于项目管理跟踪——项目结束后会进行项目总结,便于下次项目测试。

有做过安全测试吗?

没有做过规范化的安全测试,拿我们项目来说,安全测试主要是对用户登录的校验、密码加密;充值、提现必须是绑定手机号的短信验证码校验;所有投资操作必须是实名认证为前提的,做压力测试的时候如果同一个ip地址的请求过多,网站会判断为恶意攻击,打入黑名单。

为什么要转行到测试行业呢?

我大学的专业是软件工程专业,是计算机方面的,然后毕业以后想做一个自己喜欢的并且跟专业契合的工作。我有计算机的基础,同时有开发能力,所有在这个方向,我相信自己可以坐的很好。测试主要是发现问题,我又善于去找问题。开发转测试的优势:容易上手,然后可以看懂底层的代码,发现问题以后更容易定位到问题
开发转测试:
1.对软件测试的未来看好—这样既说明你很了解行业发展,也很有规划和选择;
2. 开发的要求是深度,测试的要求是广度,所以测试可以让自己知识涉猎更加广泛一点。
3. 具有开发经验,Linux系统熟悉,对SQL熟悉,对软件测试会有相当大的帮助,更能胜任软件测试工作;
4 做过开发,逻辑思维能力强;
5 对软件内部实现、功能需求、功能实现了解更深入,能根据自己的经验分析,那里容易出错,快速定位找出bug出现的地方,更有针对性。
6. 会代码,更适合做自动化测试。
7. 自身性格特点-- 很细致很有条理,很擅长找bug,很擅长沟通。

是否做过性能测试?你对性能测试了解哪些?

有简单的接触过。采用的工具是Jmeter,进行轻量级的压力测试。
1)确定好压力测试的功能模块,首先利用JMETER录制脚本,然后对脚本进行优化
2)对一些测试数据进行参数化,利用CSV导入存在txt文档里面的数据
3)设计测试场景
4)执行压力测试
5)查看压力测试结果,并对数据进行分析,主要考虑错误率 吞吐量 平均等待时间这些。
6)出压力测试报告

用python如何实现接口自动化测试

1、安装requests库 pip install requests
2、根据接口文档,使用python编写接口请求
3、根据测试方法,编写正常、异常测试用例

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

怎么判断前后端bug?

前端没有发出请求,就是前端的问题。
前端发出了请求,但是请求的参数有错误,就是前端的问题
前端发出了请求,参数没有问题,后端返回数据有问题,就是后端的问题。
前端发出了请求,参数没有问题,后端没有响应,就是后端的问题。

熟悉 adb 命令,能够使用 adb 命令查看后台日志,分析定位问题;

1、adb devices 查看当前已连接的设备 2.adb install <apk文件路径>将指定的apk文件安装到设备上
3、adb uninstall <包名> 卸载设备上的指定程序 4、 adb push/pull 复制文件
5、adb kill-server 关闭adb服务 6、adb start-server 启动adb服务
7、adb logcat 查看日志 9、adb help 显示帮助信息

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:11:31  更:2021-10-19 12:12:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 3:00:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码