测试工程师面试过程中大型翻车现场

发布于 2021-05-09 23:45 ,所属分类:软件测试工程师学习资料

凡猫软件测试

08

2021-05

“身处一行业,那我们的水准便是行业的水准,生在这一时代,那我们的面貌就是时代的面貌。坚持、改变,都是我们的事。前方无限可能,你我仍须努力。


点击上方蓝字“凡猫软件测试“我,每晚准时推送。




最近的就业高峰,在面试中遇到好多有趣的事情,一起来看看面试官眼中都有哪些小可爱吧~


所谓测试经理

保障某某项目的整体测试质量

负责某某版本管理以及发版工作
参与招聘测试工程师并对其进行培训
编写及评审测试用例,参与项目的整体测试
负责与各部门之间沟通协调,以推动项目测试工作的及时完成
负责测试环境搭建


所谓测试开发

使用siege、jmter(没有看错,确实这么拼的,不是JMeter)进行压力测试
使用appium、selenium、UiAutomator进行UI自动化测试
熟练使用adb命令,熟练使用monkey
使用GT进行性能测试
参与测试平台和接口自动化平台搭建


所谓高级测试工程师

使用Charles、Fiddler进行HTTP、HTTPS抓包测试
使用postman、jmeter进行接口测试
使用jira进行bug管理和跟踪
熟悉掌握git、SQL server、MySQL
熟悉功能测试、性能测试,了解自动化


我在问什么



1、测试环境搭建过程中负责哪部分?服务器负载测试如何完成?测试环境机器的CPU及内存使用情况如何监控?如何同步线上数据?


2、siege压测有成功测试出服务器最高并发量吗?有出现过请求失败的情况吗?jmeter测试结果主要看重哪些数据?


3、UI自动化是用来做回归测试还是新功能测试?现在已经完成并投入使用的自动化用例有多少条?有了解过其他UI自动化框架吗?选择自动化框架的原因是什么?自动化脚本由谁来维护?


4、使用adb命令的场景主要是什么?monkey测试结果如何体现?


5、GT在iOS中的集成如何配置?性能数据如何导出?GT自身消耗的性能如何计算?


6、测试平台技术选型由谁来做?平台集成了哪些功能?组员日常工作中使用的频率高吗?接口自动化框架是自研还是使用的第三方开源框架?支持全区变量、用例导入导出、环境切换功能吗?


7、多接口测试如何实现?测试分支由谁来维护?git平时主要使用哪些命令?SQL命令平时使用最多的是哪几条?在用的数据库客户端是什么?


8、了解哪些性能测试和自动化测试工具?有自己动手本地搭建过吗?




他们怎么说



1、主要是负责整个测试进度的正常进行,代码由组员负责;平台搭建确实没有太多的参与,但关于技术选型有给出建设性的意见;测试环境搭建主要由运维负责,测试负责后期环境的维护和正常使用;线上数据由开发来完成同步


2、主要接口响应时间


3、UI自动化的实施与投入使用并不理想;选择主流的工具;代码只能由专人维护,其他同事不了解


4、adb命令主要用来安装和卸载应用;Excel整理数据测试结果


5、由开发完成GT SDK的集成;GT自身消耗性能忽略不计


6、基本由测试开发完成技术方案,选择的理由是自己比较熟悉某种语言代码或者某种框架;大部分使用第三方框架;


7、postman或者requests实现多接口测试;测试分支由开发维护;git命令了解push、pull;SQL常用select、update、delete;SQL客户端用Navicat;


8、基本了解,没有动手



???


我其实是想要哪些答案



1、测试经理除了测试进度的把控,更多的应该是在解决如何提高测试效率,除了招聘和培训,更多的应该体现在测试平台的完善和测试技术的全组推进,任何技术上选型都应该参与其中并给出意见和建议;


2、接口测试应该是按需进行,不管是入参还是返回都应该先明确数据的准确性;模拟并发时,用户信息如何模拟应该着重体现;压测的qps基数以及压测的目的应该有所提及;


3、UI自动化投入本身就和产出不成正比,回归测试的用例维护应该有完善且简单操作的方案;事实证明appium虽然主流但并不好用,尝试其他自动化框架的心得;


4、adb完成远程操作设备并获取APP内信息;测试报告最起码应该有时间或者错误唯一标识追溯日志信息,有功能提示,最好有截图展示;


5、选择GT并不是个好选择,CPU占用的那部分应该如何解决


6、虽然没有在工作中使用的地方,但是最起码要了解别人正在使用什么




我在想什么



1、那些自称管理经验丰富的人,真的是只有管理经验,没有技术可言


2、像是测试进度把控、保障测试质量、招聘、培训这种真的写在简历上没什么意义啊,难道不都是应该的么


3、jira、Charles、fiddler、postman这种基础工具熟练掌握难道不是应该的么,日常工作中都在用啊


4、号称5、6年工作经验的,还在不停的功能测试,是什么挡住了你前进的脚步


5、我认为,如果你某个大部分人都懂的技术或工具你不懂或你不会,或者你不会,只有两种原因,一种是你不想学,一种是你学不会,不管是哪种,都不是什么好事情。


下面赠送常见面试题及答案,请各位小主收藏:


Q

1、http与https有何区别

答:①https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

②http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

③http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

④http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。


Q

2、tcp/ip三次握手

①含义理解

TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

②三次握手:

(1)客户 端发送一个带SYN标志的TCP报文到server。这是三次握手过程中的报文1。
(2) server端回应client的,这是三次握手中的第2个报文。这个报文同一时候带ACK标志和SYN标志。

因此它表示对刚才clientSYN报文的回应。同一时候又标志SYN给client,询问client是否准备好进行数据通 讯。

(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。

(4)连接终止协议(四次握手)


Q

3、悲观锁和乐观锁

悲观锁:

悲观锁原理是每次获取数据的时候,都会担心自己数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后再进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。在Java中,synchronized的思想也是悲观锁。(如:同一个数据库表A用户在操作时B用户不能进行操作)

适合写入较频繁场景,如出现大量的读取操作,每次读取都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。

乐观锁:

适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。

(如:A用户操作一个表,B用户同时操作这个表,乐观的认为不会冲突,但实际会造成冲突)


Q

4、左连接、右连接和全连接

左连接:左边有的,右边没有的为null

右连接:左边没有的,右边有的为null

内连接:显示左边右边共有的


Q

5、数据库中sum和count的区别以及使用

一般面试会把sum与order by 分组一起使用

count:统计你查询出来的数据记录条数 :select count(*) from 学生表;

sum:求和 :select sum(chengji) from 学生表 where name='张三';


Q

6、软件测试流程

软件测试的基本流程:

需求分析阶段:阅读需求,理解需求,分析需求点,参与需求评审会议。

测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围,进度安排,人力物力分配,整体测试策略的制定。

编写测试用例:适当的了解设计,搭建测试用例框架,根据需求和设计编写测试用例。

测试执行阶段:搭建环境准备数据,执行冒烟测试(预测试)然后进入正式测试(系统测试、回归测试、交叉测试、自由测试),bug管理直到测试结束。

输出测试报告:输出测试报告,确认是否可以上线。


Q

7、软件测试方法有哪些?

黑盒、白盒、灰盒


Q

8、jmeter中跟踪重定向和自动重定向区别?

①跟踪重定向通俗的理解就是跟踪请求执行的过程,并记录一些信息给开发者看到,我们一般可以在结果日志和监控中看到

②自动重定向是不用跟踪请求执行过程,也不用记录


Q

9、软件测试计划包含哪些内容

1. 概述


1.1 编写目的 1.2 项目背景 1.3 项目质量目标 1.4 预期读者1.5 参考资料


2. 测试环境

2.1 系统架构 2.2软硬件环境要求 2.3 测试环境部署图


3. 测试规划
3.1 测试范围 3.2 测试工具 3.3 人员、角色及职责


4. 测试策略
4.1 系统框测试 4.2 业务流程测试4.3 功能点测试 4.4 UI界面测试

4.5 性能测试4.6 兼容性测试 4.7 安全测试


5. 测试进度安排
6.工作汇报


Q

10、设计一个模块测试用例

考察面试者的经验、用例设计能力、思维、以及掌握的测试方法是否全面

从功能测试、接口测试、性能测试方面分析


Q

11、自动化测试selenium 显示等待和隐式等待

显示等待就是有条件的等待
隐式等待就是无条件的等待

显示等待:

# 设置等待时间
WebDriverWait(driver, 3, 0.5) #传入三个参数,第一个是浏览器驱动,第二个是等待多少秒,第三个是每隔多少秒监控一次
原理:指定一个等待条件,和一个最长等待时间,程序会判断在等待时间内条件是否满足,如果满足则返回,如果不满足会继续等待,超过时间就会抛出异常

隐式等待:

browser.implicitly_wait(10) #直接等待10秒钟
当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0


Q

13、pytest如何管理测试用例?

1)掌握案例规则,如以test_开头,类以Test命名等

2)案例文件执行单个py如何执行,多个文件夹的管理方式


Q

14、cookie、token、session的区别

从安全性优先级来说:

1、优先级

Cookie<session<token

2、安全性


Cookie:
①cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
②HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就诞生了Cookie
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie
客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

session:
① session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
② 关闭浏览器不会关闭session,它具有失效日期,失效后服务器认为客户端停止了活动,并删除session以节省空间

Token:
① 作为身份认证 token安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击
② Oauth token提供的是认证和授权,认证针对用户,授权针对app
③ token的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的token,存储一般保存在数据库中。token过期时间采用把token二次保存在cookie或session里面,根据cookie和session的过期时间去维护token的过期时间

开发过程举例:
案例一:
项目中我们的用户数据可能需要和第三方共享,或允许第三方调用我们的API则用token
案例二:
公司内部的网站,自己的App,就可以用cookie、session
一般来说我们可以将登录信息放在session,其他信息保存在cookie
案例三:
观察、支付宝登录接口用的就是token


Q

15、软件测试通过的标准是什么?

回答:

1、ISO90001-ISO90004标准

2、通过案例执行完成,bug验收通过,完成功能测试、集成测试


凡猫软件测试
往期内容


1、软件测试知识点 | 常见性能问题分析

2、常见探索性测试方法论


3、你需要的面试技巧全在这里!


4、学好软件测试,你需要看这些书......


扫描ErWeiMa

我们了解更多




相关资源