重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我从事软件测试及质量保障领域至今,已经有十几个年头了,从白盒自动化测试到黑盒自动化测试,从功能测试到性能测试、安全测试,从测试流程、测试框架到后来的测试管理、质量体系建设,深爱着这个行业,经常为能和小伙伴们攻克了一个技术小山头而激动兴奋, 也为了加班加点使命必达的完成了一个艰巨任务而感到欣慰。
成都创新互联公司是一家集网站建设,东区企业网站建设,东区品牌网站建设,网站定制,东区网站建设报价,网络营销,网络优化,东区网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
我负责测试技术管理、团队管理也已经有8年多了,期间面试过的人少说也有一两千了。下面我就从面试中常见的问题来聊一聊性能测试的基本功:
一、基础篇
1、较为完整的性能测试的流程
2、性能测试的基础理论、常见术语
3、性能测试模型、类型
4、HTTP、TCP协议相关知识
5、连接池、线程相关知识
二、工具篇
1、Jmeter
①、Jmeter的工作原理是什么?
②、常用的元件、插件有哪些?各自的作用是什么?
③、几个典型的场景,如何基于jmeter设计测试脚本?
比如:参数化、关联、控制TPS、接口加密验签、阶梯式加压、集合点、检查点等;
④、是否会二次开发?如果会,怎么二次开发的(介绍大概过程和原因)?
2、Loadrunner
3、其他开源/商业性能测试工具
比如:Ngrinder、Locust、Wrk、Artillery等;
4、前端、服务器、数据库性能监测工具
三、系统架构篇
1、服务集群
2、负载均衡
负载均衡原理、实现方式
3、容量规划
4、缓存应用
缓存原理、缓存优点、缓存命中、缓存穿透、多层缓存
5、分布式框架
分布式的特点、面临的挑战:CAP理论(数据一致性、服务可用性、分区容错性)
6、全链路压测
关于全链路压测
四、服务器&中间件篇
1、JVM
JVM原理、启动参数配置、堆栈原理、垃圾回收原理、OOM原因和表现
2、Tomcat
配置、使用方法、启动参数配置
3、Nginx
配置、使用方法
4、Dubbo
服务注册、消息队列
5、RabbitMQ/Kafka
本身的特点、生产者、消费者如何管理
五、数据库篇
1、锁
2、索引
3、读写分离
4、分库分表
六、方案篇
1、设计性能测试方案需要考虑哪些问题?
时间成本、人力成本、环境&脚本可复用性、实现难度
2、针对某些情况,你会如何设计、优化方案?
七、案例篇
1、如何测试MQ?
2、压测中TPS上不去的原因分析?
3、测试环境和生产环境服务器配比如何选择?
服务器配置版本保持一致,容量测试后等量代换、考虑边际递减效应、容灾方案
4、发现瓶颈,如何分析?
自上而下,从局部到整体,瓶颈分析粒度
5、如何准备测试数据?如何防止数据污染?
生产数据备份、数据隔离、测试数据落入影子库、挡板、mock
6、性能优化的常见方法
关于性能优化之空间时间可靠性思考
八、常见4类问题汇总
问题一、接口测试要在什么环境下测试?
测试设备允许的情况下,尽量把测试的应用部署到测试服务器上面。并且按照生产环境的部署方式来搭建测试环境。
如果在生产环境通过接口交互的应用在不同服务器,测试环境也要把应用在不同服务器。生产环境使用了vpn,测试环境的服务器最好也是在vpn环境下。
问题二、压力测试工具能否安装在被测的WEB服务器上进行本地的压力测试?
一般要求是发压和被压机器分离,便于分析压测结果,最好压测和被压的机器放置在同一机房,降低网络及带宽带来的数据波动和因此导致的瓶颈。
这里无论发压和被压,都是会占用资源。当出现系统瓶颈时,如果两个在同一个机器,对你的分析会造成很大的影响。
如果你的上层请求是同内网下的同idc的调用方法,那么你可以选择同idc的机器进行发压参考。
当然,如果你的预期QPS很低,完全不会达到机器瓶颈,只是验证一些内存泄漏等简单并发问题,混布也未尝不可。
问题三、云平台的性能测试
云平台的性能测试和一般的性能测试也是差不多的,云平台的性能并发容量比较大,用户数多一点。
1.首先分析性能测试点如:发生频率非常高的,关键程度非常高的资源占用非常严重的等;
2.性能指标如:首页打开速度,支持最大在线用户,系统支持的并发用户数等;
3.工具的选择:JMeter,Loadrunner等。
问题四、如何设置才能保持用户始终在线;
1.录不同的场景在多个script里然后controllor里同时并发应该就行了。
2.登录后什么都不做,肯定要超时掉线的。那些保持在线的脚本,应该在action里面定时发送一些能够让服务器认为你仍然在线的请求,比如心跳请求,否则会掉线的。
另一种做法是你就保持思考时间不变,什么都不要发,但是让开发人员修改服务器端的超时时间,变得非常长,也可以达到不掉线的目的。
总结:
相信这些常见面试问题,在实际中很多人都会遇到。作为软件测试工程师,对面试问题的严谨,注意提升自己良好的沟通和表达能力,在面试过程中体现出扎实的软件测试基础知识,足够的耐心、细心、信心、责任心,善于自我总结、自我督促和不断学习的能力,相信大家都能在面试中有出色的表现,找到心仪的工作。
欢迎加入 51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ 群: 755431660