测试人生 | 疫情之下工资翻了2倍多,这4个月学习比工作8年学到的还多
本人毕业后懵懂的加入了软件测试这个行业,前 3 年是在做外包项目,后来跳槽到甲方干了 5 年,在去年突然发现我已经干了 8 年功能测试了。
在这8年里,我成为一名宝妈,有娃之后明显感觉精力不够用加不动班了。为了自己不被行业淘汰,为了给孩子做一个榜样,经过深思熟虑后,为了专心学习裸辞报名了测试开发学社课程。
在4个月的学习后,我顺利拿下某企业测试开发岗位 Offer,年薪 30W+,实现了工资翻了两倍多!这里特别感谢各位老师和同学的帮助,也分享下自己的一点学习心得和成长经验。培训机构的事情我就不多讲了分享分享我的面试经验把
面试真题(附作者答题思路)
以下分享我个人的学习心得和面试经验。主要是关于接口,UI 自动化测试框架实战方面的技能。以上是我在面试过程中,被问到的一些问题以及我的个人答题思路,仅供参考。可能有些问题回答的不是很全面,也欢迎大家留言交流探讨。
关于 Python 学习
-
深浅拷贝
-
各数据结构特点、区别
-
垃圾回收机制
-
Python 缓冲池
-
装饰器原理与实现
-
线程,进程,协程区别、实现
-
迭代器与生成器等
关于接口自动化
其实很多时候,企业不是仅限于满足断言接口状态响应码,部分字段等。对于编写速度,稳定性,数据真实性也是有很多的要求
-
对于速度,我们可以通过 mustache 模板技术生成测试用例,可以通过 Charles 生成的 chls 文件进行部分处理生成 JSON 或者 YAML 文件
-
对于稳定性,可以通过在设计阶段,生成对应接口正确的 jsonschema 进行对比
-
对于数据真实性,可以通过 mitmproxy,让流量走特定接口,直接生成线上数据,模拟真实用户请求
接口测试如何设计测试用例?
接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!
接口测试设计测试用例的思路如下:
1.接口业务逻辑测试:
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。
2.模块接口测试:
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。
模块接口测试的主要包括以下几个方面:
-
鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)
-
其他参数异常
-
错误码异常覆盖
-
接口测试其他的关注点
-
接口有翻页时,页码与页数的异常值测试
-
数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
-
接口返回的图片地址能否打开,图片尺寸是否符合需求
-
当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。
-
所有列表页接口必须考虑排序值
-
所有功能都要考虑兼容旧版本
-
Pytest 测试框架
Pytest 是最流行的 Python 自动化测试框架,需要重点掌握
UI 自动化测试
除了学院教授的 PO 思想,简单完成页面封装后。我们要去增加用例,只有用例数足够多的时候,才能发现还需要处理在多个 py 文件中管理用例顺序,合理 driver 调度等一系列问题。也可以去增加相关的日志,报告模块的封装,将部分 JS 处理同步集成到 Basepage 模块中等一系列的系统操作,SeleniumGrid 的集成等等。
UI 自动化扩展:
增加 log 存储,Allure 报告存储(此处的 Allure 必须要结合趋势图,例如这一次生成报告后,你需要保存 result 中的 history 文件,等下一次生成时,覆盖到 report 中的 histroy 中),seleniumgrid 的执行命令,使用 pytest.ini 进行定制,使用pytest钩子函数定制,使用 pytest-xdist 进行并发用例等)。
对于自动化测试原理
重点掌握 Selenium 自动化原理,接口 Requests 原理,接口 Mitmproxy 代理原理(中间人攻击),Appium 自动化测试原理;
关于计算机网络
(1)网络七层模型,TCP/IP模型
(2)UDP 与 TCP 区别
-
TCP 有连接;UDP 无连接(基于无状态传输)
-
TCP 需要建立三次握手,含有确认、拥塞、重传机制,对系统资源要求多
-
UDP 不需要一系列复杂认证,速度快;TCP 速度慢
-
TCP 含有确认机制,数据可靠,有序;UDP 不可靠,无序
-
TCP 面向字节流(流模式);UDP 面向报文(数据报模式)
(3)HTTP 与 HTTPS 区别
-
http是超文本传输协议,信息是明文传输;https是具有安全性的ssl传输协议
-
http与https使用的是不同的连接方式,端口也一样,http默认端口是80;https默认端口是443
-
http连接状态比较简单,是无状态的;https协议是由ssl+http协议组成的可进行传输、身份认证的网络协议
(4)session、token、cookie 区别
-
cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数
-
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
-
可以将登录信息等重要信息存放为session;其他信息需要保存,可以放在cookie
(5)常见网络状态响应码
-
200 成功
-
30X 重定向
-
400 请求格式/语法错误
-
401 权限
-
404 资源未找到
-
405 不允许的请求方式
-
5XX 服务端错误:
-
50X 服务器内部错误
-
502错误网关
-
503服务不可用 服务器超载或者停机
-
504网关超时
关于数据库 MySQL
重点复习内连接inner join,左链接left join ,右链接right join(要知道左右连接的区别),union,子查询,排序order by,分组group by ,过滤having,去重distinct,事务,索引类型、原理,存储过程,慢 SQL,优化等。
关于测试思维
面试时候面试官大部分会询问你以往工作经验中的整体项目生命周期流程,具体功能的系统流程,另外会让你说出你是如何设计测试计划、测试用例、测试报告。还有接口测试,项目中如何做的接口测试,接口测试流程。
给大家总结一个登录的测试用例,需要考虑的层面有:功能测试、界面测试,性能测试,安全测试,易用性测试,兼容性测试,本地化测试。现用登录界面来举例如何设计测试用例
功能测试
-
输入正确的用户名和密码,点击提交按钮,验证是否能正确登录
-
输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息
-
登录成功后能否能否跳转到正确的页面
-
用户名和密码,长度
-
用户名和密码,特殊字符(比如空格)
-
登录失败后,不能记录密码的功能
-
用户名和密码前后有空格的处理
-
密码是否非明文显示,使用星号圆点等符号代替。
-
牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
-
登录页面中的注册、忘记密码,登出用另一个帐号登陆等链接是否正确
-
什么都不输入,点击提交按钮,检查提示信息
界面测试
-
布局是否合理,testbox 和按钮是否整齐
-
testbox和按钮的长度,高度是否符合要求
-
界面的设计风格是否与UI的设计风格统一
-
界面中的文字简洁易懂,没有错别字
性能测试
-
打开登录页面,需要的时间是否在需求要求的时间内
-
输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内
-
模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转
安全性测试
-
登录成功后生成的Cookie,是否是httponly
-
用户名和密码是否通过加密的方式,发送给Web服务器。
-
用户名和密码的验证,服务器端验证,而不能前端javascript验证
-
用户名和密码的输入框,屏蔽SQL注入攻击
-
防止暴力破解,检测是否有错误登陆的次数限制
-
是否支持多用户在同一机器上登录
-
单点登录or多机可登录
易用性测试
-
是否可以全用键盘操作,是否有快捷键
-
输入用户名,密码后按回车,是否可以登陆
-
输入框能否可以以Tab键切换
兼容性测试
-
不同浏览器下能否显示正常且功能正常
-
同种浏览器不同版本下能否显示正常且功能正常
-
不同的平台是否能正常工作,比如Windows、Mac
-
移动设备上是否正常工作,比如iPhone、Andriod
-
不同的分辨率下显示是否正常
本地化测试
-
不同语言环境下,页面的显示是否正确
关于Linux常用命令:
-
查看帮助文档 :--help ls --help ,man 如man ls
-
空格键向下翻页,回车键下一行,d 往前翻, 看完退出Q
-
ls查看文件,ls -a查看所有文件包含隐藏文件,前边带点的是隐藏文件,一个点是当前目录,两个点是上级目录,ls-l显示文件详细信息(简写方式ll),可以组合使用比如ls -al 显示文件加详细信息
-
cd h 按tab键自动补全了变成cd hotwargs
-
显示当前目录pwd
-
创建新目录mkdir,创建多层目录的新文件a/b/c -p,创建空文件touch touch 1.txt
-
查看文件里的具体内容cat cat 1.txt
-
删除文件 rm 1.txt,删除目录 rm -r加文件名,强有力的删除,不管有没有都不会报错 rm -rf,rm -ri b 会询问一下是否要删除目录b
-
cp ./1 ./feier 把1文件拷贝到feier目录下 cp 源文件路径加目标文件路径,拷贝当前目录下的a目录拷贝到上一层目录下的霍格沃兹 cp /a ./a ../hotwargs/ 加参数-a才能拷进去
-
查找文件:find ./ -name 1.txt 查找当前目录下的1文件,./ -name '*.txt' 查找当前目录下的所有txt文件
-
head -n 3显示文件内容的前3行信息
-
压缩文件 tar -zcvf f.tar.gz 1.txt 2.txt,解压文件 tar -xf f.tar.gz
-
du -sh 查看当前目录总大小,df -lh 查看磁盘使用
-
查看日志less或者view加文件名,查看控制台日志tail-f加日志文件名
-
查看当前系统都有哪些进程:ps -aux 或者ps -elf
-
查看系统都开启了哪些端口:netstat -lnp
-
杀死一个进程:Kill -9 pid
-
怎么重启 Linux 服务器:
-
shutdown -h now --立即关机
-
shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天。
重点说明,由于时间原因个人不能完全学习,推荐大家一定要尽力学完所有课程,个人认为掌握越多,薪资越高,薪资跟自己的努力还是大大相关的。
面试测试开发的时候,大家也不需要太紧张,除了以往的测试经验外,更多会考察你对开发方面的理解,对语言的熟悉程度,以及你站在测试开发方向,对软件测试和质量保障全局的一个理解。今天的分享就到此结束了哈
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
相关文章
- jmeter测试并发200_jmeter并发测试实例
- 【说站】python自动化测试需要学习什么?
- 测试开发学习路线,学完去大厂
- B站最火的测试开发学习路线,内容再次大更新
- 实践了上万次,原来这些才是敏捷测试需要遵循的原则
- Thinkphp6.0学习(1)安装tp6与测试
- SonarQube测试覆盖率--Java
- 学习自动化测试必读技术书单
- 【Laravel系列7.9】测试
- 测试之路python-flask框架:路由和蓝图
- 测试开发学习路线,学完去大厂
- 专项测试怎样才“好玩”
- Pytest学习笔记7——接口自动化测试框架实战附源码(开荒篇)
- Cypress学习笔记3——编写第一个测试脚本
- 【Rust日报】2022-12-31 Rust 如何测试?
- 学习自动化测试必读技术书单
- 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
- 【Android 电量优化】电量优化特性 ( Doze 低电耗模式 | Standby 应用待机模式 | 白名单设置 | 白名单添加系统设置界面 | 指定应用的白名单添加界面 | 测试应用 )
- 强化学习再登Nature封面,自动驾驶安全验证新范式大幅减少测试里程
- Shell脚本 | 健壮性测试之空指针检查详解程序员
- 微软扩大Win10 21H1测试范围 利用AI学习了解用户体验
- MySQL性能测试:Benchmarking数据库性能(mysqlbench)
- 解决另类的千年虫问题,火狐正在测试将版本改成100是否会引起网站故障
- Oracle内存压力测试有效驾驭资源(oracle内存压测)
- 测试Redis性能技巧与实践(如何测吃redis性能)
- 测试Oracle的使用效果(oracle使用测试)
- 又双叒重启,iOS 10.2.1小漏洞集锦 | 宅客爱测试