测试开发面试经验汇总

1)怎么对算法模型进行测试?

(1)如何针对某个具体算法本身,就要测试正确性(是否正确运行),可用性(高内聚,低耦合),可读性(简单,逻辑结构清楚),效率(算法复杂性分析),健壮性(异常处理)

(2)基本图像处理算法结果评价:参考图像质量评价方法,这个有做图像处理的研究人员研究,主要包含:主观评价方法(在特定环境下,观察者根据国际标准ITU-T Rec.P.910,打分评级);

客观评价方法(根据一些人眼主观视觉数学模型,如均方误差,信噪比数学方法等)

(3)图像中与计算机视觉有关,这个就需要知道光学模型及一些图像分析样本库进行模型测试。

(4)计算机图形相关,这个是人构造的结果,与计算几何模型和主观预期咯

2)list和set区别?

Java中的集合共包含三大类,它们分别是Set(集),List(列表)以及Map(映射)

(1)重复对象国:ist方法可以允许重复的对象,而set方法不允许重复对象。

(2)null元素:list可以插入多个null元素,而set只允许插入一个null元素。

(3)容器是否有序:list是一个有序的容器,而set方法是无序容器。

(4)常用的实现类:list方法与set方法实现类不同,List适合经常追加数据,插入,删除数据,但随机取数效率比较低。Set适合经常地随机储存,插入,删除,但是在遍历时效率比较低

3)MySQL索引的优缺点?

索引相当于图书上的目录快速找到所需的内容,提高性能(查询速度)

优点: (1)索引大大减少了服务器需要扫描的数据量。

  (2)索引可以帮助服务器避免排序和临时表

  (3)索引可以将随机IO变为顺序IO

缺点: (1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

(2)索引需要占用物理空间,数据量越大,占用空间越大

(3)会降低表的增删改的效率,因为每次增删改索引,都需要进行动态维护

4)Q:微博发动态,设计一下测试点?

功能测试:发刷删动态(边界值)

性能测试:热搜性能、接口性能

兼容测试:不能机型设备、版本

风控:反黄

5)Q:对一台自动售货机进行测试用例设计(因果图)

功能测试:商品陈放、出货、结算、统计

易用性测试:出货是否及时

异常测试:断电提醒、缺货提醒、失败退钱、次数

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

6)Q:设计微信发红包测试用例

7)Q:设计抖音直播功能测试用例

后台的测试,譬如:审核后台、监控平台、数据中台 等等

8)Q:微信红包是先计算每个人能获得的钱还是当这个人点了再计算?

目的:预先算好每个人获得的钱,会占用大量存储空间,而采用红包算法进行纯内存计算,不需要预算空间存储,节约成本。

9)哪些线程是安全的?

线程安全:就是当多线程访问时,采用了加锁的机制;线程安全(Thread-safe)的集合对象:

Vector

HashTable

StringBuffer

10)4.ArrayList和LinkegList的区别?

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构

11)sql注入是什么?

是把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,常用的数据库攻击手段

12)应用层哪些协议是基于udp,哪些基于tcp?

1.基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH

2.基于UDP的应用层协议:DNS、TFTP、SNMP

13)快速排序法

14)常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等

15)哪些点可以提高测试效率?

测试的准备工作:用例评审的效率:合理的详细的测试计划\需求分析尽量发现设计缺陷、减少测试版本送测次数

用例设计的效率。 比如需求不稳定、不清晰、或者业务逻辑本身就比较复杂等。

用例评审的效率。 其他人员不熟悉业务,导致评审效率和质量很低,沟通成本很高。

用例执行的效率。 比如测试计划制定的不合理,对测试覆盖的不合理偏执追求。 缺少必要的自动化测试。

善于用测试工具

实现测试自动化

提高测试人员的专业技能和工作能力

16)自动化衡量标准是什么?

有覆盖率,通过率,执行时间和执行效率

17)自动化遇到过规避错误的问题?

自动化的时候是自己构建数据写数据,然后验证,数据容错处理。

18)说一下接口自动化是怎么做的?一共写了多少个接口,效果怎么样?

步骤:1、用来封装HTTPclient,发送请求

2、解析结果xml的类

3、用于比较测试结果和期望值的类,验证结果

4、自动生成报告的类:自动发送报告之类的

19)公司晋升机制:

工程师->高级工程师->专家工程师(leader)->高级专家工程师(测试经理)->架构师->高级架构师。

20)requests方法中data与json参数区别?

1.使用json参数,不管报文是str类型,还是dict类型,如果不指定headers中content-type的类型,默认application/json

2.使用data参数,报文是dict类型,如果不指定headers中content-type的类型,默认application/x-www-form-urlencoded

3.使用data参数,报文是str类型,如果不指定headers中content-type的类型,默认application/json

4.参数提交数据形式不同

21)内存溢出是什么?怎么解决?

内存泄漏的累计会导致内存减少,最终会导致内存溢出

是指程序运行所需要的内存超过了系统剩余的内存

解决:

(1)修改JVM启动参数,直接增加内存

(2)对代码进行走查和分析

(3)检查对数据库查询中,是否有一次获得全部数据的查询

22)数据库连接查询分几类,分别为什么?

内连接:等值连接=、自然连接=、不等连接<=

外连接:LEFT JOIN、RIGHT JOIN 、FULL JOIN返回查询结果 WHERE 搜索条件或 HAVING 条件)和连接条件 的行

交叉连接:CROSS JOIN不带WHERE 子句

23)python中的列表和元组都有哪些区别?

1)列表是动态的,长度大小不固定,可以随意的增加、删除、修改元素

2)元组是静态的,长度在初始化的时候就已经确定不能更改,更无法增加、删除、修改元素

24)Python与Java的equals和==的区别?

java里边,

a==b是比较两个引用对象

a.equals(b)是比较两者的值

在python里边

a==b是比较两者的值

a is b是比较两个引用对象

25)http和https区别?

1、HTTPS 协议需要到 CA 申请证书

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。

26)项目负责的模块?遇到什么问题?怎么解决?

27)进程与线程的区别?

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

多进程是指操作系统能同时运行多个任务(程序)。

多线程是指在同一程序中有多个顺序流在执行。

28)数组与链表的优缺点

数组:插入和删除效率低、可能浪费内存、内存空间要求高、数组大小固定,不能动态拓展。

链表:插入删除速度快、内存利用率高,不会浪费内存、大小没有固定,拓展很灵活、不能随机查找,必须从第一个开始遍历,查找效率低

29)列表和字典有什么区别?

答: 一般都是问列表和元组有什么不同。

(1)获取元素的方式不同。列表通过索引值获取,字典通过键获取。

(2)数据结构和算法不同。字典是 hash 算法,搜索的速度特别快。

(3)占用的内存不同。

30)从文件中读取关键词进行搜索,默认是显示的是行?

cat test.txt | grep -nf test2.txt

31)匹配到需要展示的字符串?

grep -o "you" ab.log

32)文件中查找需要的关键词忽略大小写?

grep -i 'linux' test.txt

33)排除某个关键词进行查询?

ps aux | grep ssh | grep -v "grep"

34)查找与g重复的字符串?

grep -n 'g.*g' regular_express.txt

35)接口验证涉及:数据库与接口

接口验证除了要验证接口的返回,有时候还要同时验证数据库的数据,或者将接口返回的数据与数据库的数据做对比,检验数据的正确性,增删改查数据。

安装node.js和xmysql,实现Postman与数据库的连接 postman接口自动化测试之利用node.js和xmysql连接、操作数据库 - 测试开发喵 - 博客园

36)seleunim常用的一些包:

1、测试框架 TestCase :import unittest

2、判断条件 :from selenium.webdriver.support import expected_conditions as EC

3、下拉框 :from selenium.webdriver.support.select import Select

4、滚动条 :WebDriver类库中并没有直接提供对滚动条进行操作方法,但是它提供了可调用JavaScript脚本的方法

5、发送邮件 :import win32com.client as win32

6、测试报告--自带:import HTMLTestRunner

7、引用mysql:import MySQLdb

37)自动化环境架构

python3.6.5+pycharm2018.1.3社区版+unittest+selenium3.141.0

38)性能方面主要包含哪些关键点?

 1.单用户登录的相应时间小于3s;

 2.高并发场景下用户登录的相应时间小于5s;

 3.单登录时,后台请求数量是否过多;

 4.高并发场景下,是否存在资源死锁或不合理资源等待情况;

 5.长时间大量用户连续登录、退出,服务端是否存在内存泄漏;

40)安全性方面主要包含哪些关键点?

 1.用户名、密码在后台存储是否加密;

 2.密码在网络传输过程中是否加密;

 3.密码是否具有有效期,到期是否会提示重新设置密码;

 4.不登录情况下,在浏览器输入url,验证是否会重定向到用户登录页面;

 5.密码是否支持复制、粘贴;

 6.密码是否可以在页面源码直接查看;

 7.连续多次登录失败时,系统是否会阻止后续的尝试,以应对暴力破解

 8.同一用户在同一终端的多种浏览器登录,验证互斥性是否符合需求;

 9.同一用户在不同终端的浏览器登录,验证互斥性是否符合需求

41)产品常用测试的几个阶段?

DT单元测试--集成测试--系统测试--回归测试--验收测试

集成(迭代交付)---系统(全特性)---回归(bugfix测试)---验收(资料、Bata局)

42)测试方如何推动和保证用户验收测试的效果?

用户验收测试的目的是保证上线的产品是用户真正想要的产品。

1、选择合适的时间点:系统测试完成、测试遍历完、评审完成。

2、选择合适的方式

3、如何有力的支持用户

4、简化验收标准

43)测试人员的发展路线?

1、软件测试技术路线--- 从初级测试工程师到中级测试工程师、高级测试工程师、资深测试工程师

这个是我们多数人的发展路线,里面包括了性能、自动化、安全等。性能测试是一个比较好的途径,相比自动化编码要求没那么低,但需要比较广的知识和分析能力。这个也是行业中最缺少的。

2、软件测试管理路线--- 初级测试工程师、测试组长、测试经理

一般外向、健谈的人,人际关系处理能力好的,并且有一定技术能力的人比较合适。

3、软件质量保证路线--- 初级测试工程师、质量保证人员、质量管理人员

这个是比较偏重流程优化管理方面的,同时去协调各个部门,优化整体的研发流程。这个在国内还是比较少的。

4、软件开发技术路线--- 初级测试开发工程师、中级测试开发工程师、高级测试开发工程师

这个需要有编码功底,或者你喜爱编码,那些多编码极其反感的童鞋我建议还是放弃这条路线。

44)linux命令,找出关键字出现的次数

语法:grep 字符串 文件名|wc -l ,grep输出,wc -l按行统计

45)APP是用多进程安全还是用多线程安全?

多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

46)关系型数据库有哪些?

Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL

47)MySQL中char、varchar和text三者的区别?

1、都可以用来存储字符类型的数据。

2、char、varchar都可以指定最大的字符长度,但text不可以。

3、数据的检索效率是:char > varchar > text。

48)App测试和Web测试的区别?

1、web和app的区别

web项目,一般都是b/s架构,基于浏览器的。

App则是C/S的,必须要有客户端。那么在系统测试测试的时候就会产生区别了。

2、性能方面区别

web页面可能只会关注响应时间。

App则还需要关心流量、电量、CPU、GPU、Memory这些了。

3、兼容方面

Web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。

App的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。

49)设计用例的方法、依据有那些?

1、白盒测试用例设计有如下方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。依据就是代码结构。

2、黑盒测试用例设计方法:基于用户需求的测试、等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验法、场景法。依据是用户需求规格说明书,详细设计说明书。

50)软件测试的流程?

测试流程:了解用户需求-->参考需求规格说明书-->测试计划(人力物力时间进度的安排)-->编写测试用例-->评审用例-->搭建环境-->测试包安排预测(冒烟测试)-正式测试-bug-测试结束出报告-->版本上线-->面向用户

51)网页很卡的原因?

1、带宽不足、硬件配置低、CPU或者是内存被占满。

2、http请求次数太多。

3、接收数据时间过长,如下载资源过大。

4、JS脚本过大,阻塞了页面的加载。

5、网页资源过多、接受数据时间长、加载某个资源慢。

6、DNS解析速度。

52)单元测试、集成测试、系统测试区别?

1、粒度不同:

单元测试粒度最小,集成测试粒度居中,系统测试粒度最大。

2、测试方式不同:

单元测试一般由开发小组采用白盒方式来测试,集成测试一般由开发小组采用白盒加黑盒的方式来测试,系统测试一般由独立测试小组采用黑盒方式来测试。

3、测试内容不同:

单元测试主要测试单元是否符合“设计”,集成测试既验证“设计”,又验证“需求”,系统测试主要测试系统是否符合“需求规格说明书”。

4、使用阶段不同:

单元测试为开发人员在开发阶段要做的事情,集成测试和系统测试为测试人员在测试周期内级层做的工作。

54)并发和并行区别?

并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。

并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。

55)网络七层有哪些?tcp,udp,arp,TCP/IP都在哪一层 http,tcp,ip协议

56)http请求方式有哪些?GET、POST、HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE。

57)常见的状态码:502 网关错误 (Bad gateway)、504 Gateway Time-out。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值