最近由于种种原因,面试了很多有意思的人,在这里记录一下面试这些人后的一些感想。
所谓测试经理
保障某某项目的整体测试质量
负责某某版本管理以及发版工作
参与招聘测试工程师并对其进行培训
编写及评审测试用例,参与项目的整体测试
负责与各部门之间沟通协调,以推动项目测试工作的及时完成
负责测试环境搭建
所谓测试开发
使用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、我认为,如果你某个大部分人都懂的技术或工具你不懂或你不会,或者你不会,只有两种原因,一种是你不想学,一种是你学不会,不管是哪种,都不是什么好事情。
下面赠送常见面试题及答案,请各位小主收藏:
1、http与https有何区别
答案:
①https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
②http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
③http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
④http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
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)连接终止协议(四次握手)
3、悲观锁和乐观锁
悲观锁:
悲观锁原理是每次获取数据的时候,都会担心自己数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后再进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。在Java中,synchronized的思想也是悲观锁。(如:同一个数据库表A用户在操作时B用户不能进行操作)
适合写入较频繁场景,如出现大量的读取操作,每次读取都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。
乐观锁:
适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。
(如:A用户操作一个表,B用户同时操作这个表,乐观锁认为不会冲突,但实际会造成冲突)
4、左连接、右连接和全连接
左连接:左边有的,右边没有的为null
右连接:左边没有的,右边有的为null
内连接:显示左边右边共有的
5、数据库中sum和count的区别以及使用
一般面试会把sum与order by 分组一起使用
count:统计你查询出来的数据记录条数 :select count(*) from 学生表;
sum:求和 :select sum(chengji) from 学生表 where name=‘张三’;
6、软件测试流程
软件测试的基本流程:
需求分析阶段:阅读需求,理解需求,分析需求点,参与需求评审会议。
测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围,进度安排,人力物力分配,整体测试策略的制定。
编写测试用例:适当的了解设计,搭建测试用例框架,根据需求和设计编写测试用例。
测试执行阶段:搭建环境准备数据,执行冒烟测试(预测试)然后进入正式测试(系统测试、回归测试、交叉测试、自由测试),bug管理直到测试结束。
输出测试报告:输出测试报告,确认是否可以上线。
7、软件测试方法有哪些?
黑盒、白盒、灰盒
8、jmeter中跟踪重定向和自动重定向区别?
1)跟踪重定向通俗的理解就是跟踪请求执行的过程,并记录一些信息给开发者看到,我们一般可以在结果日志和监控中看到
2)自动重定向是不用跟踪请求执行过程,也不用记录
9、数据库中事物是什么?有哪些特性
10、软件测试计划包含哪些内容
- 概述
1.1 编写目的 1.2 项目背景 1.3 项目质量目标 1.4 预期读者 1.5 参考资料 - 测试环境
2.1 系统架构 2.2 软硬件环境要求 2.3 测试环境部署图 - 测试规划
3.1 测试范围 3.2 测试工具 3.3 人员、角色及职责 - 测试策略
4.1 系统框测试 4.2 业务流程测试 4.3 功能点测试 4.4 UI界面测试
4.5 性能测试 4.6 兼容性测试 4.7 安全测试 - 测试进度安排
- 工作汇报
11、设计一个模块测试用例
考察面试者的经验、用例设计能力、思维、以及掌握的测试方法是否全面
从功能测试、接口测试、性能测试方面分析
12、自动化测试selenium 显示等待和隐式等待
显示等待就是有条件的等待
隐式等待就是无条件的等待
显示等待:
#设置等待时间
WebDriverWait(driver, 3, 0.5) #传入三个参数,第一个是浏览器驱动,第二个是等待多少秒,第三个是每隔多少秒监控一次
原理:指定一个等待条件,和一个最长等待时间,程序会判断在等待时间内条件是否满足,如果满足则返回,如果不满足会继续等待,超过时间就会抛出异常
隐式等待:
browser.implicitly_wait(10) #直接等待10秒钟
当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0
13、pytest如何管理测试用例?
1)掌握案例规则,如以test_开头,类以Test命名等
2)案例文件执行单个py如何执行,多个文件夹的管理方式
- 1
- 2
- 3
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
15、软件测试通过的标准是什么?
回答:
1、ISO90001-ISO90004标准
2、通过案例执行完成,bug验收通过,完成功能测试、集成测试
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。