从面试中吸取经验及了解知识(2)
背景:公司业务调整,被迫离职,自18年10月离职至同年11月,找工作已有月余,多互联网行业:金融、餐饮、区块链等;面试屡败屡战,大多夭折于公司业务不精(存在大量遗忘)、技能不精(app测试为涉及专项测试,多体现在功能测试,如性能、adb-monkey自动化等,接口测试不精,如用例涉及、测试理论)、拓展性能测试,linux-shell编写、网络技术tcp/udp、session/cookies等,现
背景
公司业务调整,被迫离职,自18年10月离职至同年11月,找工作已有月余,多互联网行业:金融、餐饮、区块链等;面试屡败屡战,大多夭折于公司业务不精(存在大量遗忘)、技能不精(app测试为涉及专项测试,多体现在功能测试,如性能、adb-monkey自动化等,接口测试不精,如用例涉及、测试理论)、拓展性能测试,linux-shell编写、网络技术tcp/udp、session/cookies等,现自省,整理面试(经验)流程如下:
1、自我介绍,务必突出工作重点,使用技能、测试类型、介绍都是自己擅长的;(自由发挥)
2、项目经验:借贷业务(还款类型、起息方式)、资金端(募集、满标、计息)、资产端(银行存管);
XXX为项目测试管理(管理);
XXX功能测试(业务);
XXX及第三方支付接口测试;
3、如何做接口测试?接口测试持续集成,测试基础?
由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
--也可以用接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。
-- 业务功能(场景测试)
-- 边界分析测试
-- 参数组合测试
-- 异常情况测试
-- 性能测试:系统下cpu、内存决定一个系统支持多少用户压测,看系统资源的值来确定瓶颈
-- 安全测试:app植入Root根证书不被抓取接口,无法恶意攻击、js脚本、xss、数据库注入、接口mobile+密码加密传输;
对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:
a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。
b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等
c) 问题定位:报错信息、日志更精准,方便问题复现与定位。
d) 结果校验:加强自动化校验能力,如数据库信息校验。
e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。
f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。
(接口)测试用例包括的内容:用例编号、功能点,测试环境,测试数据,执行操作以及预期结果,执行结果。
4、接口测试质量评估标准(完成测试验收标准):
a) 业务功能覆盖是否完整(包括正常、异常场景是否实现)
b) 业务规则覆盖是否完整
c) 参数验证是否达到要求(边界、业务规则)
d) 接口异常场景覆盖是否完整(重复提交、并发提交、事务中断、多机环境、大数据量测试)
e) 接口覆盖率是否达到要求
f) 代码覆盖率是否达到要求
g) 性能指标是否满足要求(响应时间、吞吐量、并发数、资源要求)
h) 安全指标是否满足要求(js、权限验证、SQL注入等)
5、数据库操作命令?
聚合函数 avg max min sum count
sql语句:select * from db.table; delete from table; insert into table(col,col,) values(val,val);update table set col=‘val’;
order by desc降序 group by 默认升序
6、自动化测试框架?jenkins遇到的问题?
工具类自动化测试框架:jenkins+jmeter+ant/maven+svn/git;
jenkins能遇到的问题,很多都在百度能发现。本人常遇到环境的问题:如插件安装与jenkins版本的问题、配置项技术的问题:远程服务器、邮件配置、集成环境等。
7、http网络编程协议,状态码、tcp/udp协议异同?
了解协议的基本内容,包括:通信原理、三次握手、常用的协议类型、报文构成、数据传输方式、常见的状态码、URL构成等;
一般get请求用来获取数据,post请求用来发送数据;
http状态码:
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了。
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面。
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果。
tips:http和https的区别?
#http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议;
#http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443;
8、HTTP协议和TCP协议之间的区别联系?
①Tcp/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据;
②HTTP的默认端口号是80,TCP/IP协议通信编程时端口号需要自己指定(例如socket编程);
③HTTP协议是在TCP/IP协议基础上实现的,即HTTP数据包是经过TCP/IP协议实现传输的;
④HTTP是无状态的短连接协议,TCP是有状态的长连接协议;
9、HTTP是在有状态长连接TCP/IP协议的基础上实现的,为什么却是无状态短连接协议?
答:因为HTTP协议每次请求结束就会自动关闭连接,这样就变成了短连接;
短连接又导致了该次请求相关信息的丢失,也就造成了HTTP协议对于前期事务处理没有记忆能力,故为无状态协议。
10、HTTP协议其完整的工作过程可分为四步:
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
Https协议,HTTPS握手过程包括五步:
1)浏览器请求连接;
2)服务器返回证书:证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3)浏览器收到证书后作以下工作:
a) 验证证书的合法性;
b) 生成随机(对称)密码,取出证书中提供的公钥对随机密码加密;
c) 将之前生成的加密随机密码等信息发送给网站;
4)服务器收到消息后作以下的操作:
a) 使用自己的私钥解密浏览器用公钥加密后的消息,并验证HASH是否与浏览器发来的一致;
b) 使用加密的随机对称密码加密一段消息,发送给浏览器;
5)浏览器解密并计算握手消息的HASH:如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
11、session/cookies异同?cookie与session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、Session、Cookie都有失效时间,过期后会自动删除,减少系统开销。
6、所以个人建议:
将登陆信息等重要信息存放为session。
其他信息如果需要保留,可以放在cookie中。
tips:session原理:HTTP协议本身是无状态的,那么H5或网页,是怎么通过session来通讯的?
a、Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。
b、服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明
c、Cookie是客户端的存储空间,由浏览器来维护
12、性能测试,并发数:
接口性能:响应时间、并发、服务端资源的使用情况等
app性能:手机cpu、内存、流量、fps等
估算并发用户并发数公式:
1、用户从登陆系统到退出系统的间隔时间L
2、登陆系统的用户数量n
3、被考察的时间长度T
并发用户数C=nL/T
吞吐量/事务点击率:QPS(TPS)= 并发数/平均响应时间
13、linux操作命令
监控系统(动态)资源命令:top\topas、nmon、vmstat \ mpstat \ iostat \sar \ pmap
文件管理:tail -f \ chmod \ chown \ more \less \ scp \ awk \ read \ find \cp \whereis \rm \ touch \ echo\ wc \ vi/vim
磁盘管理:df \ cd \ du \ mkdir \ ls \ xargs \ clear \ alias 别名 \netstat\ tcpdump \head \ pwd \ yum \wget
系统管理:kill \ ps \ free \ tar czvf 压缩 xzvf 解压 \ zip -q -r 包括目录 -dv 删除源文件 \ unzip \
14、rocketmq
RocketMQ原理:mmap+write,文件系统,数据存储结构,队列,刷盘策略,消息查询,消息过滤,事务消息,发送、订阅负载均衡,同步双写/异步复制,充分利用内存,消息堆积能力以及解决办法
RocketMQ是一个消息中间件。消息中间件中有两个角色:消息生产者和消息消费者。消息生产者负责创建消息并发送到RocketMQ服务器,RocketMQ服务器会将消息持久化到磁盘,消息消费者从RocketMQ服务器拉取消息并提交给应用消费。
15、redis是什么?性能测试?集群?
redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化。
Redis一共支持五种数据类:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)
ping Redis的连通性
redis-benchmark 性能测试(默认配置,request=100000,client = 50)
补充一下指令
-t 选择你想测试的命令,比如redis-benchmark -t set
-p 指定port redis-benchmark -p 6379
-l 一直循环
-c 指定客户端数量
-n 指定request数量
redis集群:
Redis Sentinal着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。
Redis Cluster着眼于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。
16、前端测试相关面试题:app和web测试异同?
app测试:专项测试:耗电、内存、cpu、adb
H5/web测试:ui自动化、session技术,如何实现通讯;
17、java的数组、List、map的区别?
数组是固定长度的,list不固定,map是基于key-values进行映射的。访问元素数组可以通过下标访问,list需要遍历,map可以通过Key值获取map的values.
18、以往工作经验中的测试流程概述?
类似于功能测试,需求讨论→评审需求→确定需求→产出接口定义→根据需求文档及接口定义设计测试用例(测试用例主要从业务场景,功能以及异常测试几个方面考虑)→评审用例→执行测试;
19、HashTable, HashMap,TreeMap区别?
答: 1、HashTable线程同步,HashMap非线程同步。
2、HashTable不允许<键,值>有空值,HashMap允许<键,值>有空值。
3、HashTable使用Enumeration,HashMap使用Iterator。
4、HashTable中hash数组的默认大小是11,增加方式的old*2+1,HashMap中hash数组的默认大小是16,增长方式一定是2的指数倍。
5、TreeMap能够把它保存的记录根据键排序,默认是按升序排序。
20、dubbo面试题:了解方向?
dubbo默认推荐使用netty框架;推荐使用zookeeper注册中心;默认使用dubbo协议;
其他分布式框架:spring cloud
21、测试管理?测试策略思考?思考回答方向:
功能覆盖、自动化;
优先级
环境和工具
过程控制标准
其他+数据
更多推荐
所有评论(0)