测试人生 | 从小团队的业务到独角兽的测开,涨薪超过60%,90后小哥哥凤凰涅槃了

原文链接

本文为霍格沃兹测试学院优秀学员跳槽笔记,测试开发进阶学习文末加群。
作为七年的测试老鸟,做过几年外包,也做过自研项目,目前在一家电商小团队做业务功能测试,涉及一点压力测试,只是配合开发写jmeter脚本,资源分析和问题定位都是开发主导。总体来说,自己缺乏自动化和python语言能力,想在这方面提升自己。
不甘点点点的业务功能测试,想提升自己的技能,拿高薪。当初也想过自己学习,但是遇到以下几个问题,第一自觉性。第二,一个人学习很枯燥,没有学习氛围。第三,不是系统性学习,知识点很凌乱,成长很慢。
在百度找到的咱们学院,也对比了其他几家培训机构,看了咱们学院的课程安排,和试听课,觉得干货满满,比较合适我最后就报名了。现在已经拿到了某知名企业的高薪offer,涨薪超过60%。

名师指引,事半功倍


报班加入学院之后,老师会不定期更新基础知识部分的录播课,然后每周四和周日有直播课,而且老师每周会学习任务,班级微信群也能提供一种学习氛围,有时大家上完直播课需要整理笔记或练习到凌晨,看到其他同学那么努力,自己有什么理由不努力呢?所以通过几个月的学习,自己在python算法、自动化、和持续集成框架等各方面的技能都有提升。

学习心得

1.我觉得最重要的有2点:笔记和练习,推荐“语雀”
2.录播要提前看,python算法题要坚持刷,可以在力扣或牛客网找题目,一般刷容易或中级题目即可,不懂得可以先看看讲解,慢慢学会自己思考,写完代码提交时有用例,可以帮助自己看考虑是否全面
3.师父引进门修行靠个人,在学习完自动化框架之后(比如pytest框架,webUI自动化,Jenkins持续集成),有条件的比如在职的同学可以在自己公司的产品上实践一把,多采坑,让自己印象更深刻,学习得更彻底

面试经验

不打无准备之仗,面试前一定要做好准备,可以从这四大方向去梳理:基础知识储备、算法储备、项目经验、常见软技能问题,还有一些必考题比如:自我介绍、简历上的工作经历和项目经验、最后面试官问有什么需要问的吗。
面试官问的题基本上都是咱们学院老师讲过的,面试前看看岗位要求再针对性复习一下。我面试的测试开发岗位,要求自动化框架设计及实现能力,那就多复习一下这块,比如元素定位,等待方式,po设计模式、javascript脚本及空间交互等等,当前除此之外,测试理论,流程,和linux、数据库这些也必不可少,性能测试如果会,也是加分项。然后就是算法题了,这个就不是一两天能准备好的,是一个积累的过程,建议大家从学习开始,坚持每天刷1-2道算法题。

面试真题之基础理论

1、开场介绍

面试官,你好,我叫xx,20xx年xx专业本科毕业,从事软件测试将近xx年的时间,在此期间做过一些项目也积累过一些经验,能够独立地完成软件测试流程的一个工作。我之前主要做过的是功能测试,web、接口自动化测试、和一些管理工作,也带过新人,用过Jmeter做过一些压力方面的测试。我对于缺陷管理工具比如禅道,版本控制器git与svn能够熟悉应用。数据库、linux、Fiddler、Charles、Jmeter这些应用也比较熟悉。对pytest测试框架比如参数化、fixture、allure报告比较熟悉。能独立完成搭建持续集成环境,以上就是我的一些简单的自我介绍,谢谢。
------使用的架构是VMware+ubuntu+docker(部署Jenkins)+windows节点+pytest+allure报告的这样一个架构。
app的持续集成,它是使用Pythopn+Appium,结合pytest自动化测试框架,基于PO的思想来实现的。

2、公司的测试流程?

1、阅读相关文档(如产品PRD、UI设计、产品流程图等)。
2、参加需求评审会议。
3、编写测试计划。(根据最终确定的需求文档)
4、编写测试用例(等价类划分法、边界值分析法等)。
5、用例评审,给出冒烟用例(主要参与人员:开发、测试、产品、测试leader)
6、开发冒烟测试,并发提测邮件
7、执行测试用例,记录bug
8、验证bug与回归测试。
9、写测试报告,给产品发验收邮件,并配合验收
10、版本上线
11、线上日志分析,跟踪

3、你用过哪些用例设计方法?

白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖
黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试场景法

4、如何测试一个纸杯?

1、功能度:用水杯装水看漏不漏;水能不能被喝到
2、安全性:杯子有没有毒或细菌
3、可靠性:杯子从不同高度落下的损坏程度
4、可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
5、兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
6、易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
7、用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
8、疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)
放24小时检查泄漏时间和情况等
9、压力测试:用根针并在针上面不断加重量,看压强多大时会穿透

5、设计一个登录页面的用例(提供某个场景设计用例,重点!)

功能测试:正确输入、为空输入、字符类型校验、长度校验、密码是否加密显示、大写提示、跳转页面是否成功、登出后用另一个账号登录UI:界面布局合理、风格统一、界面文字简洁好理解、没有错别字
性能测试:打开登录页面需要几秒、点击登录跳转首页需要几秒、多次点击、多人点击安全性:用户名和密码是否加密发送给服务器、错误登录的次数限制(防止暴力破解)、一台机器登录多个用户、一个用户多方登录、检查元素能否看到密码
兼容性测试:不同浏览器、不同的平台(WindowsMac)、移动设备能否工作易用性:输入框可否tab键切换、回车能否登录等

6、什么是代码覆盖率?

是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或90%。
代码覆盖率=代码的覆盖程度,一种度量方式。

代码覆盖率的意义

分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?需求/设计不够清晰,测试设计的理解有误,工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,提醒设计/开发人员理清代码逻辑关系,提升代码质量。
代码覆盖率高不能说明代码质量高,但是反过来看,代码覆盖率低,代码质量不会高到哪里去,可以作为测试自我审视的重要工具之一。
覆盖率数据只能代表你测试过哪些代码,不能代表你是否测试好这些代码。不要过于相信覆盖率数据。不要只拿语句覆盖率(行覆盖率)来考核你的测试人员。测试人员不能盲目追求代码覆盖率,而应该想办法设计更多更好的案例,哪怕多设计出来的案例对覆盖率一点影响也没有。

7、了解中间件吗?有哪些?

1、服务注册、发现:

常见的有zookeeper,主要功能是让网关知道有哪些服务,还有服务的位置(注册中心),服务是否正常运行等(健康检查),与网关一起合作,将用户发送的请求导向正确的处理模块。

2、消息队列:

消息队列简介很透彻的文章消息队列(mq)是什么? - 知乎
常见的有reids等,主要功能是当请求量过大时,可以将请求放入到队伍中排队,再一一去处理,需要注意的是redis会将队列储存在内存里,需要准备足够的内存资源。
2.1、你为啥用MQ消息队列?
1、用于“异步、削峰、解耦”三大场景
2.2、消息队列有啥问题么?
1、比如消息重复消费、消息丢失、消息的顺序消费等等
2、NG
3、dubbo
4、MQ

8、以后的发展规划?

1.积累行业的业务知识
2.丰富测试技能如代码编写能力
3.提升开发小工具插件的能力
4.管理协调能力,独立带版本团队

9、测试开发、与测试的区别?

1、一个侧重业务,一个侧重自动化或工具
2、测试开发的核心职能依然是测试
3、测试开发:利用开发能力解决测试工作中的问题,小到生成数据、并发模拟等工具的开发,大到整个自动化测试平台的设计与实现,旨在提高效率,降低成本

10、什么是测试左移、右移?

测试左移:本质上是借助工具和测试手段更早地发现问题和预防问题。
1)需求:对需求、架构和设计模型的测试
2)开发:着重增加对单元、组件和服务层的测试
3)持续测试:自动化测试
落地:测试任务跟踪,不仅仅只是跟踪测试本身的工作,还需要介入到需求、技术方案、编码的全过程。只有前序每一步都跟踪到位,才能尽量避免测试过程中的不可控因素,从而保证产品质量

测试右移:

对测试同学来说,版本上线后需要持续关注线上监控和预警,及时发现问题并跟进解决,将影响范围降到最低。
1)灰度发布:新版本线上测试;
2)服务监控:合理的性能监测、数据监控和预警机制;
3)用户反馈:线上问题处理、跟踪机制

11、adb常用命令有哪些?

adb devices,获取设备列表及设备状态
adb connect127.0.0.1:7555连接设备
db get-state,获取设备的状态
adb shellps|grepadbd,可以找到该后台进程
adb install 用于安装
adb uninstall 用于卸载
adb shell pm listpackage 获取设备应用信息
adb logcat 在cmd窗口查看手机的Log日志

12、举例说明项目推进的能力(针对个人评价的举例说明)

(例)推动开发解决菜单权限需退出登录才可应用的问题。描述:XX项目上线后,由于权限更新导致用户无法使用旧界面+用户不懂得自己退出登录以应用新菜单权限,线上多个用户反馈平台相关功能无法使用。处理:远程操作+线上指导出现问题的用户退出登录,凌晨脚本批量强制用户退出登录。推进:在下一次版本中,推动开发处理菜单权限更新问题,以防每次更新菜单都出现用户使用不了功能的问题。结果:处理为用户登录期间仍可使用旧界面,直到用户退出重新登录后,才应用新菜单权限推动冒烟:冒烟不通,测试召开会议罗列项目不通的模块、存在的问题,一一对应到每个人去跟进,得到解决的时间,后续项目群说明并艾特每个人跟进。测试准时验收
推动文档质量:在日常工作中遇到需求文档、设计文档、接口文档不规范或不详细的在绝大多数,这个时候就要通过沟通或以bug的形式,促使各个岗位将各自的文档完善结合自己的个人经验,从问题描述+处理过程+推进表现+结果,一一说明

13、印象深刻的一个bug?

隐藏得比较深的bug、影响比较大的bug、处理过程比较曲折的bug。根据自己的经验描述:如何发现的、如何处理、影响、结果、反思。
举例说明:如升级版本兼容性问题、接口安全性问题、数据库安全性问题、服务器资源占用溢出问题、代码逻辑问题等

14、你们公司是不是敏捷开发?介绍一下敏捷开发?

敏捷开发属于增量式开发,对于需求范围不明确、需求变更较多的项目而言可以很大程度上响应和拥抱变化、主张简单、拥抱变化、可持续性、递增的变化、高质量的工作、快速反馈、软件是你的主要目标

15、复盘会议的主要内容有哪些?

这点需要结合自己平时参与的项目会议举例说明。如线上bug分析、优化改进策略、bug优先级等等

16、app的兼容性怎么测,app的接口测试怎么测?

系统兼容(ios、安卓)、机型兼容(iPhone、华为、小米、三星、vivo、OPPO)、分辨率兼容、软件本身向前向后兼容接口测试:
获取接口文档,使用fiddler抓包工具获取接口的请求方式、url、请求参数、返回参数,然后使用postman、jmeter进行测试

17、web端测试和app端测试有何不同(常见)

系统结构方面
web项目,b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步会更新
app项目,c/s结构的,必须要有客户端;app修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍
兼容方面
web项目:a.浏览器(火狐、谷歌、IE等)b.操作系统(Windows7、Windows10、Linux等)
app项目:a.设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等)、Windows(Win7、Win8)、OSX(Mac)b.手机设备可根据手机型号、分辨率不同
性能方面
web项目需监测响应时间、CPU、Memory
app项目除了监测响应时间、CPU、Memory外,还需监测流量、电量等
相对于Wed项目,APP有专项测试
干扰测试:中断,来电,短信,关机,重启等
弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi等)
安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况卸载:需考虑卸载后是否删除app相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等