软件测试面试常问的问题

1.软件测试分为几个阶段?
测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段

2.系统测试的测试对象、目的、依据和方法是什么?
系统测试的测试对象是整个系统;目的是对整个系统进行测试,测试依据是需求规格说明书;测试方法是黑盒测试

3.测试和质量保证有什么区别?谈谈你的看法。
质量保证是对软件制作过程中的额制作质量进行管理,看是否符合公司的规定。
软件测试是对软件产品的质量本身进行测试,是从技术方面出发测试软件质量

4.TCP与UDP区别?
1.基于连接与无连接
2.TCP要求系统资源较多,UDP较少;
3.UDP程序结构较简单
4.流模式(TCP)与数据报模式(UDP);
5.TCP保证数据正确性,UDP可能丢包
6.TCP保证数据顺序,UDP不保证

5.性能测试的分类有哪些?
性能测试八大类包括:性能测试、负载测试、压力测试、配置测试、并发测试、容量测试、可靠性测试、失败测试。

分类描述
性能测试性能测试是为了描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试。它主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项指标进行测试。通常把性能测试、负载测试、压力测试等统称为性能测试。
负载测试是通过逐渐增加系统的负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能承受的最大负载量的测试。简而言之,负载测试时通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。
压力测试是通过逐步增加系统的负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和和甚至失效。
配置测试主要是通过对被测试软件的软硬件配置进行测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统提供重要依据。
并发测试测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
容量测试在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力,最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。
可靠性测试通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。
失败测试对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。

6.c/s和b/s结构的软件进行测试时有什么不同?
b/s测试重点,偏向于服务端,需要着重注意安全性
c/s需要分别测试客户端及服务端,还需要测试安装卸载更新

7.测试用例有哪些要素?
比如用例编号、测试的版本、测试模块、前置条件、输入数据、预期结果、实际结果、是否通过、测试人员、测试时间

8.请描述下吞吐量和响应时间的关系
通常,平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越小。但是系统吞吐量越大,未必平均响应时间越短。因为在某些情况下,吞吐量的增大,有时候会把平均响应时间作为牺牲,来换取一段时间处理更多的请求。

9.什么时候开始进行性能测试?
性能测试一般分前期阶段和后期阶段。
前期阶段是功能实现后还没有到系统集成时期。 可以针对功能实现进行性能测试,看看单独功能实现的响应时间。
后期阶段是指系统功能通过功能性测试完毕后,到整体的性能测试阶段。

10.解释下列命令的含义:ls -la|grep log;ps -ef; kill -9 2543
ls -la |grep log 查找当前目录含有log的文件
ps –ef查看所有进程
Kill -9 2543强制终止2543进程

11.web安全性怎么测试?
测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和授权错误.等等

12.堆栈和队列的差异
队列是先进先出,有出口和入口,先进去可以先出来。
栈就像一个箱子,后放上去的,可以先出来

13.知道几种排序方法,他们的差异是什么?
4种常见的有冒泡排序、选择排序、插入排序、快速排序、希尔排序。
选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。

14.谈谈你对存储过程的理解
我理解的存储过程就是预先定义好的SQL语句,然后存储起来,等你用的时候再把自己所需要的匹配的SQL语句用Execute(即exec)调用就行!

15.JAVA的八大类型
byte、short、int、long、float、double、boolean、char

16.selenium 八大定位方式
id、name、tagname、classname、linktext、partiallinktext、xpath、cssselector

17.get和post区别是什么?
最直接的区别:
1.GET请求的参数是放在URL里的,POST请求参数是放在请求body里的
2.GET请求的URL传参有长度限制,而POST请求没有长度限制
3.GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制
但是GET和POST本质上两者没有任何区别。他们都是HTTP协议中的请求方法。底层实现都是基于TCP/IP协议。上述的所谓区别,只是浏览器厂家根据约定,做得限制而已。

18.请列举OSI七层协议模型的内容。TCP属于哪一层?HTTP属于哪一层?
七层结构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
tcp属于传输层;http属于应用层。

19.请求接口中常见的返回状态码
1xx – 信息提示(表示临时的响应)
2xx – 成功(表明服务器成功地接受了客户端请求)
3xx – 重定向(客户端浏览器必须采取更多操作来实现请求)
4xx – 客户端错误(发送错误,客户端有问题。)
5xx – 服务器错误(服务器由于遇到错误而不能完成该请求)

20.什么情况下开展接口测试?
1.项目处于开发阶段,前后端联调接口是否请求的通?(对应数据库增删改查)–开发自测
2.有接口需求文档,开发已完成联调(可以转测),功能测试展开之前
3.专项测试:如测流量大小,查看图片压缩大小,测试接口请求响应时间
4.版本上线前,进行整体回归测试,查看接口是否有异常(如404等)。对准备上线的版本进行抓包,查看服务器地址是都正确
5.版本功能稳定后,接口自动化
6.还可以应用在安全测试,性能测试领域等。。

21.selenium中hidden或者是display = none的元素是否可以定位到?
不能

22.自动化测试的时候是不是需要连接数据库做数据校验?
UI自动化不需要
接口测试会需要

23.drop、 truncate 、 delete区别
1、在速度上,一般来说,drop> truncate > delete。
2、在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。
3、如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;
如果想删除表,当然用drop;
如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;
如果和事务有关,或者想触发trigger,还是用delete;
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

24.web和APP测试区别?
具体区别

25.cookie和session有什么区别?
(1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。
(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的
(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全
(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

26.cookie是什么,有什么作用?
cookie指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
作用:当你访问了某些网页,并且对网页的一些设置进行修改,cookies就能跟踪并记录到这些修改,当你下一次访问这个网页的时候,这个网页会分析你电脑上的cookies,进而采取措施像你返回更符合你个性化的网页;
例如:你此前访问了大量的健身类网站,cookies记录了你的访问行为,广告主就能够根据你的访问行为,向你推送健身类的广告。

27.seesion是什么?
seesion是在一次会话中解决2次HTTP的请求的关联,让它们产生联系,让2两个页面都能读取到找个这个全局的session信息。session信息存在于服务器端,所以也就很好的解决了安全问题。

28.抓包的原理是什么?
fiddler的实现原理是以代理服务器的方式工作,代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。

29.Robot Framework 运行之后会生成哪3个文件?
Robot Framework 生成三个文件:output.xml、log.html 和 report.html。
1)output.xml 记录的测试结果是 XML 文件。根据特定的需要可以编写脚本读取 XML 文件并生成特定的测试报告。
2)log.html 会记录 Robot Framework 运行的每一步操作,主要用于编写测试脚本的过程中查看。
3)report.html 为测试报告,整理性的展示测试用例的运行情况。

30.思维逻辑题 :有一个水塘,现在有两个瓶子,一个5升,一个6升,怎么弄出3升的水?
1 先装5升瓶子,倒入6升瓶子,这时6升瓶子里有5升水
2 再装5升瓶子,倒入6升瓶子,这时5升瓶子里还剩4升水
3 6升瓶子里有6升水,倒掉,再倒入第二步里5升瓶子剩下的4升水,这时6升瓶子里有4升水
4 再装满5升瓶子,往6升瓶子里倒,只能倒走2升,5升瓶子里剩3升水.

31.思维逻辑题:3个开关、3个灯,只能进一次房间,怎么判断哪个开关控制哪个?
开两盏灯,等待一段时间后,关其中一盏,再等待一段时间,进入房间,摸灯的,依据温度判断。

32.思维逻辑题:微信红包这个功能怎么设计用例?
https://www.cnblogs.com/fusir/p/13109231.html

33.同一时间两个用户同时租借衣服 怎么并发的 你是怎么测的
jmeter 设置请求,用户用参数来表示,使用csv文件存放不同的用户信息,线程组中设置多个线程进行测试

34.支付方式怎么测的
1.正常的支付流程,支付完成后的订单状态、用户操作、字段值变更
2.错误的支付:
  2.1 支付中断(支付时中断、支付前中断、)
  2.2 支付信息篡改
  2.3 支付时账户余额不足
  2.4 支付的金额测试(大金额、小金额、)
  2.5 支付回调(正常回调、网络异常回调)
  2.6 订单重复提交支付测试
3.支付前的测试:
  3.1 购物车测试
  3.2 购物车提交生成订单,参数修改
  3.3 订单的修改测试
  3.4 生成订单,购物车清空
  3.5 并发情况下的订单生成测试
4.支付后的测试
是否有对应回单,是否生成对应订单

35.问到数据驱动管理 怎么做的 怎么管理的 数据放哪儿?
可以使用postman,jmeter工具来做,也可以用代码方式来做, 工具 postman,jmeter来做的时候数据存放在 csv文件中。 自己写代码可以将数据存放在csv,Excel中也可以放在数据库中

36.postman怎么打断点?
使用Postman进行接口测试的时候,可以动态的执行脚本(javaScript)语言,从而达到请求接口前的处理,请求后处理。
比如接口请求基于Header token参数验证的方式。需要动态的改变每次token的参数值,即可以在Text模块中处理。
如下图
在这里插入图片描述
37.请解释一下三次握手 四次挥手
https://blog.csdn.net/zz18256889177/article/details/106322918/

38.sql 怎么去除重复字段
1.重复数据完全一样,使用distinct
select distinct * from table
2.id列不同,id类型为int,自增字段,使用聚合函数max或其他

39.你了解过docker么?
docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。简言之,就是可以在Linux上镜像使用的这么一个容器。

40.docker可以在什么情况下使用?
1.web应用自动化打包发布,像tomcat应用的发布。
2.自动化测试和持续集成、发布
3.在服务型环境中部署和调整数据库或其他的后台应用
4.搭建paas环境

41.使用docker有什么好处?
1.简单易操作,简化了以往复杂的应用程序安装步骤,使用docker会变得非常简便。
2.可兼容多种应用,Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成镜像部署。
3.省钱 docker结合云可以做到高性能低价格
特别之处:Docker是基于Linux 64bit的,在32位机器上无法运行

42.写出linux查看日志几种方法
linux 日志查看
tail、head、 cat、tac、sed、less、echo

tail -n 100 catalina.out 查询日志尾部最后100行的日志;
tail -n +100 catalina.out 查询100行之后的所有日志;
tail -fn 100 catalina.out 循环实时查看最后100行记录(最常用的)
配合着grep用, 例如 : tail -fn 100 catalina.out | grep – ‘关键字’
如果一次性查询的数据量太大,可以进行翻页查看,
例如:tail -n 6000 catalina.out |more -100 可以进行多屏显示(ctrl + f 或者 空格键可以快捷键)

head -n 1000 catalina.out //查询日志文件中的头10行日志;
head -n -1000 catalina.out //查询日志文件除了最后10行的其他所有日志;
head其他参数与tail 类似

cat 是由第一行到最后一行连续显示在屏幕上
$ cat filename // 一次显示整个文件
$ cat > filename //从键盘创建一个文件
$cat file1 file2 > file //将几个文件合并为一个文件,只能创建新文件,不能编辑已有文件.
$cat -n textfile1 > textfile2 //将一个日志文件的内容追加到另外一个 :
$cat : >textfile2 // 清空一个日志文件
注意: >意思是创建, >>是追加。

tac 则是由最后一行到第一行反向在萤幕上显示出来

sed这个命令可以查找日志文件特定的一段 , 也可以根据时间的一个范围查询
sed -n ‘2,100p’ //按照行号

43.列表 元组 字典有什么区别
1.列表可变
2.元组不可变
3.字典是以key value的形式表示的

44.元组里面的列表可变么?
不可变

45.java中的八大类型
同15题

46.怎么查看Linux下的进程

47.测试web和app的区别?
1.从功能测试的来讲的话,在流程和功能测试上是没有区别的。系统测试和一些细节可能会不一样。
web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。那么在系统测试测试的时候就会产生区别了。

首先从系统架构来看的话:
web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。
app端是不能够保证完全一致的,除非用户更新客户端。如果是app下修改了服务端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍。

2.性能方面:
web页面可能只会关注响应时间,而app则还需要关心流量、电量、CPU、GPU、Memory这些了。

3.兼容方面:
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。
app的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。

4.相比较web测试,app更是多了一些专项测试:
  一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。
  而弱网测试是app测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机制。避免用户的流失。这些在前面的弱网测试那篇已经讲过,这里不再讲了。

安装、卸载、更新:
  web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除app相关的文件等等。这里讲起来的话太多了,如果有疑问的同学可以评论或者给我留言。

界面操作:
  现在app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。

48.L=[1,2,3,4,5] 请问 L[10:] 输出多少
![[](https://img-blog.csdnimg.cn/20200810183657434.png)

49.请用一行代码求出1-100的和

50.python中read、readline 和 readlines 的区别?
read:读取整个文件。
readline:读取下一行,使用生成器方法。
readlines:读取整个文件到一个迭代器以供我们遍历(读取到一个list中,以供使用,比较方便)。

51.UI自动化 / 和// 有什么区别?
绝对路径/ 相对路径//

52.https 和http 有什么区别?
1.HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
2.使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
3.HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
4.http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
5.HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

53.UI自动化3种等待方式有什么差别?
1.implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,即整个页面的加载时间;如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

2.WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。

3.通常都用time.sleep(XX)方法来表示强制等待,是由Python的内置time模块提供的方法,例如:time.sleep(5),意思是强制性等待5秒时间。

54.代码题: 文章怎么去重?

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值