背景:10月份离职后继续找互联网行业自动化测试工程师,在自习室闭关几天,开启复习学习之路:
一、软件测试-复习思路
二、准备好Boss直聘的在线&附件简历
三、重点复习简历上所写的技术:自动化测试
四、面试时会问的一些非技术性的问题
五、自己电脑上的开发软件
六、检查简历上我三个社交网站更新情况
七、百人计划,继续听完
八、看一遍自己笔记里的每日TodoList(2016年至今)
九、Boss上回复HR信息,寻面试机会(先过学历这一关)
十、面试
十一、根据面试中的问题重点提升
一、软件测试-复习思路
看一遍老徐的软件测试资料,全面了解软件测试的知识体系(简单版),以下只把目前对我有用的测试知识点记下来了。
- python、unitest、postman
- 软件测试的基本理论、测试方法、项目管理工具
- Linux及链接Linux服务器的工具Xshell Xftp等
- Mysql及链接数据库Mysql的工具Navicat等
- 代码管理工具Git、SVN
- Bug管理工具Tapd、禅道、Jira等,
- 用例管理工具,日常文档协作工具Wiki等,很多很多
- 任何公司,只是规范不同,工具使用无门槛,几天可搞定
- 搞好关系,尽快熟悉工作上要接触的产品 开发 设计 运维 售后 客户
- 有时间,多用用自己的公司产品
- 文档落地、沉淀(不仅自己会,还得让其他同学会)
养成输出文档的习惯,一个人的研究成果,可以让多人快速掌握,不用重复投入时间 。这是Leader比较喜欢的员工。 - 结果反馈,非常重要
- 交付的工作任务,及时响应,有结果后,及时同步(即使没完成,遇到困难,也同步进度,知道你在干这事)
- 又或是问一些“平常看什么书?什么时候看?从什么渠道了解最新的知识?”。测试行业有哪些垂直社区?有哪些大的IT技术站点?有哪些测试方面的微信公众号?
- 用例唯一编号、用例类型、模块、功能项、输入、预期结果、实际结果、测试结论、备注,就OK
- 测试点(思维导图写测试点,不错的方式,如Xmind )吧,提取关键要素
- 测试点到底该怎么写呢 ? 侧重点是什么 ?
- 重点关注业务逻辑、业务场景、异常测试等,至于具体UI细节,简单带过即可(因为此时,需求未定,后续确定后,做简单补充即可,因为UI层面的问题,视觉就可直观的看出来,不需要大篇幅的测试用例,浪费时间,产出并不高)
- 故测试用例一定要写,颗粒度可是情况而定
- 等价类划分法,边界值分析法,功能图法、错误推测法、因果图法,场景法等。
- 首先一定要熟悉需求,需求分析,拆解非常重要,需求熟悉过程中,不理解或有疑惑的地方,一定要找产品进行及时沟通,确定结果。其次项目开发过程中,每期的用例都要不断总结,学会总结,尽可能的保证少漏。
- 会议记录
- 需求评审:先对功能复杂,优先级高,疑问多的用例进行评审,再评审功能简单,优先级低的功能点。对于评审过程中,(超过5min)一时半会没有结论的问题,可以记录下来,作为会后讨论跟进的重点。
- 浏览器的F12 (查看基本的请求、cookies、Error、404等)、
- 浏览器的缩放(很多问题,其实是浏览器缩放了导致,就没必要傻乎乎的抛给开发)
- 基本的抓包(Fiddler)
- Linux下查看log 、部署包(常用的十几个命令)
- http基本常识(看的懂接口、参数、post/get,之前推荐过电子书)
- Bug的基本描述(图文并貌)
- 最简单的基线性能测试(之前文章)
- 行业内测试相关工具、管理相关工具得知道(TAPD / ZenTao 等)
- 得会画脑图(Xmind)
- 多看看软件工程方面知识、数据库方面知识、项目管理方面知识、产品方面知识 。
- 问题1、平时是否有学习工作中,所需技能的知识
- 问题2、每天那么忙,时间消化在哪?是否有分析
- 通过问题1,了解面试者的主动求知欲,以及自主学习能力 ;测试岗位,需要学的太多了,如果缺乏这两方面,很难培养,未来提升空间太小。初当管理者,最容易犯的错误,就是招人错误,他们往往只关注,招过来的人,能解决当前遇到的问题;完全不考虑团队整体结构分布,以及面试者的未来可培养空间 。
- 通过问题2,了解面试者事项分类、优先级处理能力、以及找问题、分析问题、解决问题的能力 。如果找出问题的能力都没有,更别谈分析问题、解决问题的能力 。这种情况,招过来的可能性麻烦:不会去微创新、解决问题、提升效率,只知道瞎忙、每天把自己累的半死,日复一日,团队无成长 。
- 接触的新技术、新知识、新流程玩法,老大的管理风格,用文字的形式记录下来,并思考总结,变成自己的知识,融会贯通,应用于工作中 。
- 多写,多分享,多用文字记录自己的成长过程 & 学习成果
- 问题定位能力
- 问题跟进能力
- 严谨的思维
- 问题归类总结能力
- 自驱动、学习能力
- 常见的比较考验综合能力的几个面试问题:
- 一分钟时间,阐述自己的整体优势
- 你平时的学习渠道有哪些
- 遇到问题的解决思路是哪些
- 阐述你工作中主要负责的内容
- 从开发代码提交,整个后续流程是怎样的?
- 你认为自己需要自己的是哪些?
- 如果让你评价这次面试,你给自己打多少分?
- 如果是我,肯定会通读所有的现存文档、分析历史所有Bug、玩熟现有业务。
二、准备好Boss直聘上的在线&附件简历
三、重点复习自己简历上写的技术技能
1. 软件测试理论、方法
2. Python、Java
- w3c python
- 2019 Python接口自动化测试框架实战开发(一)
- python 接口自动化unittest、ddt
- 之前织云是用的内部的qta写的,这个qta框架其实和unnitest和pytest差不多。
-
Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战
走一遍文中的方法和实战例子。
3. Linux基本命令、Xftp、Xshell
- Linux 远程登录
- Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell 等
- 常用命令:
- chown (change ownerp) :修改所属用户与组。
- chmod (change mode) :修改用户的权限。
- 使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组
- ls(英文全拼:list files): 列出目录及文件名
- cd(英文全拼:change directory):切换目录
- pwd(英文全拼:print work directory):显示目前的目录
- mkdir(英文全拼:make directory):创建一个新的目录
- rmdir(英文全拼:remove directory):删除一个空的目录
- cp(英文全拼:copy file): 复制文件或目录
- rm(英文全拼:remove): 删除文件或目录
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
- grep 在给定的文件中搜寻指定的字符串。grep -i “” 在搜寻时会忽略字符串的大小写,而grep -r “” 则会在当前工作目录的文件中递归搜寻指定的字符串。
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
- Linux的vi/vim
- yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- XShell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。配置时,需要ip+端口+用户名+密码
- 在Linux系统如果想要与本机传输文件,可以使用ftp工具,推荐安装与XShell配套的Xftp工具。
- 也可以使用SSH来远程连接服务器
ssh user@remote -p port
● user 是你在远程机器上的用户名,如果不指定的话默认为当前用户
● remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名
● port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22
需要输入密码,成功后就可以操作。 - 之前是更新项目的文档中心-帮助中心、使用案例、FAQ等一些静态文件
查看自己写的简书GitBook + Git + PyCharm开发文档中心 - 27个常用的linux命令
- su — Switch User
- ps显示系统的运行进程。
- kill命令
- diff命令 功能说明:对比文件差异。 举 例:diff 123.txt 456.txt
- echo命令 功能说明:标准输出命令。 举 例:echo "this is echo 命令"
- netstat 功能说明:查看网络端口的使用情况
- hostname命令 功能说明:查看主机名
- 修改主机的hostname
sudo scutil --set HostName Lishan-MB
- linux工作实战中的常用命令
4. Postman
5. HTTP、JS
- https://zhuanlan.zhihu.com/p/45173862
- http协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
http请求由请求行,消息报头,请求正文三部分构成 - HTTP请求响应常见状态码(404、400、500)等错误
- JS主要是获取后台返回数据body中的key value
6. MySQL、Navicat
7. SVN、Git
测试会使用到的基本命令
8. F12、Fiddler
9. BUG管理工具 tapd、jira、禅道、wiki等
只关注之前所在项目时的使用的那个即可
四、面试时会问的一些非技术性的问题
1) 一分钟自我介绍,说一下技术优势,还有哪方便需要提升?
2) 简述一下你所负责的项目,主要职责?
3) 为什么从上一家离职?
4) 给你一个项目怎么测?
(以下是我的回答,有不妥的地方大家自行修改)
不管是新项目还是已上线的,我一般是通过各种方法了解熟悉项目(需求文档、产品设计、以往同事写的文档,历史bug,dev环境多操作几遍)。熟悉的过程会以笔记或者Xmind脑图的方式记录。之后就开始细化自己所负责的模块。有任何疑问会以excel的方式记录,找准时间,让同事帮答疑。需求熟悉后,就要开始编写测试点或者测试用例(核心主路径、功能测试、UI测试、安全测试、兼容性测试、性能测试等),然后进行用例评审,再之后就是执行测试,输出测试报告,上线后的回归测试,总结复盘,并推动负责人落实改进。
5) 遇到问题如何解决,解决思路是什么,若解决不了该怎么办?
(以下是我的回答,有不妥的地方大家自行修改)
可分为:技术问题,产品业务问题,还是一些部门沟通问题。
若是技术问题,我会先自己先在网上找答案,若花20分钟还没有头绪,就会咨询身边的技术同事。
若是产品业务问题,自己也会先查找以往文档,聊天记录,会议记录,若还解决,就联系相关的产品同事。
若是跨部门的问题,我就需要整理出当前问题发生背景,发生原因,若解决需要谁配合等,整理好后发给我直属领导。带着解决方案反馈给领导,让领导做选择题,而不是找领导要答案。
6) 学习能力?
(以下是我的回答,有不妥的地方大家自行修改)
自我提升,永远保持在学习的路上,带着目的去工作和学习。
- 问题定位能力
- 问题跟进能力
- 严谨的思维
- 问题归类总结能力
- 自驱动、学习能力
7) 你还有什么想问的吗?
如果我有幸进入公司,我所面试的这个岗位,我还需要提升哪些技能?对我的期望是什么?
8) 为什么没有对象/结婚?
我每次都会被问到,囧
9) 你的学习渠道有哪些?国内有哪些技术站点?行业类的微信公众号?
关注一些行业活跃着的blog、菜鸟教程、公众号、TestHome测试之家、CSDN、51Testing、简书、SegmentFault等等
10) 公司团队架构是怎样的,测试流程是怎样的,你认为规范的流程是?
我所接触的就是:项目经理、产品、设计、开发、测试、运维
=> 构思产品=> 需求采集=> 交互设计=> 需求评审=> 项目经理排期=> 软件开发=> 产品验收=> 确认提测=> 软件测试=> 产品灰度体验=> 正式发布=> 运维
五、整理自己电脑上的所需软件
python、pycharm、postman、fiddler、soapui、git、weterm、Xshell、Xftp、mysql、navicat、印象笔记、xmind、sublime、腾讯文档、chrome、firefox、outlook、switchhosts
六、检查简历上我三个社交网站更新情况
七、百人计划,温习一遍
去年参加的课程。
八、看一遍自己笔记里每日TodoList(2016年至今)
好记性不如烂笔头,多对自己有这个好习惯,这样复习回忆之前的项目会比较快狠准。
九、Boss上回复HR信息,寻面试机会(先过学历这一关)
只要有面试机会,就参加(现在面试大多是电话、腾讯会议等面试,可忽略来回的路程),在面试中了解自己的不足和当下大多公司多需要的技能。
十、面试(电话、腾讯会议、WeMeeting、面对面)
(1) 首先自我介绍一下吧!
可以从以下几点来介绍(大概3分钟以内):毕业时间、从事互联网行业时间、技术优势、沟通能力、文档总结能力、问题推动能力及闭环意识、学历力。
(2) 所负责的项目、担任的职责,通过自己让项目达到什么效果?
(3) 怎么评判一个项目是符合上线要求的,从哪些特性分析?
- 验收标准
(1) 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
(2) 在验收测试中发现的错误已经得到修改,各级缺陷修复率达到标准
(3) 所有测试项没有残余紧急、严重级别错误。
(4) 需求分析文档、设计文档和编码实现一致。
(5) 验收测试工件齐全(测试计划、测试用例、测试日志、测试通知单、测试分析报告,待验收的软件安装程序。) - 缺陷修复率标准
(1) 紧急、严重级别错误修复率应达到100%;
(2) 普通级别错误修复率应达到95%以上;
(3) 优化级别错误修复率应达到60%以上;
注:项目紧急时,普通级别错误修复率达60% 以上;优化级别错误修复率达20% 即可。 - 服务器运行状态响应指标
(1) cpu% 并发期间最大使用率应不超过70-80%,如有集合点并发可允许短暂接近或到达100& 但大部分不应查过95%;
(2) memery 测试期间保证内存充足可用内存不少于20%;
(3) disk 监控硬盘是否有读写不超过40%;
(4) cpu load average 不应超过cpu 核心数*2 或者不超过cpu 核心数。 - 软件性能指标
(1) 响应时间(并发下的响应时间)
不同页面浏览时的响应时间、点击注册用户时的响应时间、登录时的响应时间、搜索功能响应时间、项目特殊功能响应时间。
事物的响应时间又分为最大响应时间、平均响应时间、最小响应时间(验收可忽略此数) 、90%响应时间。如为B/S 项目可设定验收标准为最大响应时间不超过20s、平均响应和90%响应不超过10s。如为c/s 项目(手机客户端) 可设定为最大响应时间不超过30s、平均响应和90%响应不超过15s(因为手机网络相对较慢,可以适当加大响应时间)。
(2) 测试中事物通过率:
一般web 项目通过率为3 个9,设定验收标注为各个事物通过率为99.9%。
(3) 系统能支持的用户量
需要先评估上线后会有多少注册用户和活跃用户
(4) 吞吐量应与hits tps 等数据成正比且波动较小
(4) 给你一个纸杯怎么测试?
【针对整体的事务或系统】
a. 先描述(理清)功能点,同时给自己一定的思考时间;
- 纸杯,主要功能是用来装水、端水、喝水的。那么首要是要覆盖其功能。
b. 根据系统测试的主要类型来分析要测试的内容:
- 首先从功能层面来说
● 要测试水杯是否能够装水
● 测试水杯能否用手拿
● 测试水杯是否让人喝到水 - 其次从 UI 层面来说
● 水杯的外观是否美观
● 水杯上的 log 配色是否合理
● 水杯上的文案是否合理,是否有错别字 - 再次从性能(可靠性、稳定性)方面来说
● 水杯能装多少度的水
● 水杯装多久能保证不发生渗漏 - 再从安全性方面来说
● 水杯表面的涂层是否会释放有毒物质
● 水杯的边缘是否会割伤嘴唇 - 再从兼容性方面来说
● 除了装水是否还能装可乐、啤酒、咖啡等 - 最后从易用性方面来说
● 水杯是否适合抓握
● 是否方面喝水
(5) 设计用例:用户必须达到钻石会员且积分>=5000的用户才能领取。领取时间4月2日早上10:00,数量100张,领完为止。
【根据局部功能】这种局部需求,说什么兼容性、易用性等就没多大意义啦。更多的是要分析这个需求,提取需求中的关键词。关键字如下:会员等级、积分要求、领取时间、剩余优惠券情况
- 针对会员等级:
测试用户为钻石会员及以上会员的情况
测试用户为钻石会员以下的情况 - 针对积分要求:
用户的积分 > 5000、用户的积分 = 5000、用户的积分 < 5000 - 领取时间:
时间未到、领取时间、时间结束 - 剩余优惠券情况
有剩余、剩余为0 - 其他场景:
会员等级为钻石会员、积分为5000、且在领取时间内,并且有剩余的情况,能正常领取。
会员等级为钻石会员、积分大于5000、时间未到,不能领取。
会员等级为钻石会员,积分大于5000、在领取时间内、剩余为0,不能领取。
会员等级为钻石会员,积分大于5000、领取时间结束,不能领取。
会员等级为钻石会员,积分小于5000,不能领取。
会员等级为普通会员,积分为5000、且在领取时间内,并且有剩余的,不能领取。 - 再加上一些特殊的情况:
优惠券余1时,多人同时领取
时间刚到10点时,能否领取
(6) Python如何去调用Linux命令
我们想要Python能够调用Linux系统命令,也就是Python与Linux系统交互,要么需要使用os库。
- 1、 os.system() #只得到命令成功与否的执行状态
2、 os.popen #通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。但是无法读取程序执行的返回值
3、 commands.getstatusoutput() && commands.getoutput()- commands.getstatusoutput() 既可以输出执行成功与否的状态,也会输出执行结果
- commands.getoutput() 只输出执行结果
4、 subprocess子进程(功能强大,最常使用的方式)
(7) Linux的操作:从日志中搜索出某关键字然后重定向到另一个文件
1、 从日志中搜索出某关键字
- a) 单个文件可以使用vi或vim编辑器打开日志文件,使用编辑器里的查找功能。在查看模式下,符号/后面跟关键字向下查找,符号?后面跟关键字向上查找,按n查找下一个,按N查找上一个。
- b) 多个文件可以使用grep命令,比如 grep ERROR /var/log/messages*。会把匹配到ERROR这个关键字的行和所在的日志文件直接输出到屏幕。
2、重定向
- 命令 > 文件,将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,会清空原有数据,再写入新数据。
- 命令 2> 文件,将命令执行的错误输出结果重定向到指定的文件中,如果该文件中已包含数据,会清空原有数据,再写入新数据。
- 命令 >> 文件,将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,新数据将写入到原有内容的后面。
- 命令 2>> 文件,将命令执行的错误输出结果重定向到指定的文件中,如果该文件中已包含数据,新数据将写入到原有内容的后面。
- 命令 >> 文件 2>&1 或者 命令 &>> 文件,将标准输出或者错误输出写入到指定文件,如果该文件中已包含数据,新数据将写入到原有内容的后面。注意,第一种格式中,最后的 2>&1 是一体的,可以认为是固定写法。
查询到关键字:grep 关键字 文件路径
重定向到指定文件:命令 > 文件
则面试的问题回答是:grep 关键字 文件 >> 文件
eg:grep guanjianzi linuxtest00001 >> lishan002
(8) HTTP协议,常见的状态码?
(9) 简单写代码,实现数字的大小排序?
(10) 怎么区分一个bug是前台还是后台?
(11) 若发现一个问题,开发不认为是一个bug,怎么解决?
(12) 若发现一个体验性问题,该怎么去督促开发解决?
(13) 感情or婚姻状况?
(14) 怎么看待外包?
(15) 若发现一个问题,日志是warning,可以降低bug等级到debug,输出日志?
(16) 印象比较深的bug?
(17) 给你一个项目,你该怎么去测试?
上面准备时有写过这个问题
(18)之前的自动化是用什么语言写的,有没有使用python进行实战?
(19)一部电梯怎么测试,说出测试点?
- 按钮指示灯:按压上下按钮指示灯是否亮
电梯门开关:按压上下按钮电梯门在当前楼层是否能打开
按向上按钮:电梯是否关门且向上面楼层方向走
按向下按钮:电梯是否关门且向下面楼层方向走
当电梯门没有关上:按开电梯门按钮,门是否开
当电梯门没有关上:按关闭电梯门按钮,门是否关闭
电梯内:按各个楼层,对应的指示灯是否亮
电梯内报警装置:报警装置是否正常
电梯内通话设备:按通话按钮能否接通外界
电梯内灯光:电梯内灯光是否亮,是否有无损坏
电梯内通风:是否通风
按各个楼层按钮:是否到当前楼层停止并开门
当超过最高重量:电梯是否报警打开电梯门,直到小于最高承重
电梯当前楼层是否和电梯内显示屏楼层一直
显示屏内是否有当前楼层,当前向上或者向下箭头,且与当前操作一致
电梯门超过规定时间未关门是否会有报警提示
上下按钮是否控制一个电梯或者两个电梯的开关门,如果控制两个电梯,按向上或者向下按钮,另一个电梯是否受控制
电梯是否分单双层?
在单层电梯情况下,按双层电梯,对应双层电梯数字是否亮,是否会到这一层
在双层电梯情况下,按单层电梯,对应单层电梯数字是否亮,是否会到这一层
电梯限层:按超过限层的电梯层数,数字是否亮,是否会到这一层
双击某楼层:是否会取消这个楼层且楼层灯灭
假如我在9楼,有人先按12楼,有人后按1楼,此时电梯是否先上12楼,再下1楼?
电梯感应:有人或者物体在门中间卡着,门是否会关闭,是否会有警铃提示?
电梯到达指定楼层是否有声音提示?
电梯是否刷卡:刷卡的电梯,如果没有刷卡是否能选楼层
维修开关:电梯内是否有维修开关
(20)面试官简单介绍某项目某功能,让说出测试点
基本上是讲述他所在项目的。
(21)Python实现:输出随机字符串中每个字符的个数?
import string
from random import choices
s = ''.join(choices(string.ascii_letters + string.digits, k=1000))
print("string: ", s)
char_count = dict();
for i in s:
char_count[i] = char_count.get(i, 0) + 1
print(char_count)
(22)。。。待更新
十一、根据面试中的问题重点提升
- pycharm
- python函数
- 算法思路
- linux常用命令的组合使用
- 多参加一些专业活动论坛,与时俱进