毛毛虫
一、灵活的问题
1、你介绍一下你最近做的一个项目?
2、你主要负责什么?说说某个模块是怎么测试的?
3、拿到一个需求后,你会从哪些方面进行测试?
4、给你一个网站,你如何测试?
5、你印象最深的bug?
6、测试中发现的bug,但开发经理不认为这是一个bug,该怎么办?
7、如果没有需求文档怎么办?
二、功能测试
1)功能测试
1、测试用例怎么保证覆盖率
***测试用例对需求的覆盖率;
*需求的理解分析
需求来源又分为显式需求和隐式需求,显式需求顾名思义是明面上的需求,比如产品人员从用户那里搜集的原始需求、转换后的产品需求、原型图、设计文档等;那隐式需求包含了用户的体验等。那我们如何保证需求分析的全面性呢?
从业务角度进行分析:通过业务流程、业务数据、业务操作等分析,明确要验证的功能、数据、场景等内容,从而确定业务方面的测试需求;
从技术角度分析:通过研究系统架构设计、数据库设计、代码实现等,分析其技术特点,了解设计和实现要求,包括系统稳定可靠、分层处理、接口集成、数据结构、性能等方面的测试需求;
基于以上分析,拆分需求点,形成测试点。
*需求评审:参与需求的评审,保证需求的正确性和完整性;
*用例测试:根据对需求的分析、利用专业的测试用例设计方法编写测试用例,保证测试用例的设计覆盖所有的测试需求。
*用例评审:组织产品设计人员、开发人员、测试人员等参与测试用例的评审,吸取别人的意见,减少遗漏,补全测试用例。
*执行测试: ● 对测试用例进行100%执行。●在测试执行过程中,需求都是会变的,要继续对测试用例补充完善,确保提高测试覆盖率。
2、测试用例包含哪些部分
*前提---用例名称---用例步骤---期望---等级
*用例等级如何定义?冒烟【来源于特高】特高【核心功能点】高【重要功能点】中【异常功能点】低【界面相关】
3、提bug包含哪些部分
*项目---bug类型---严重等级---出现概率---缺陷简述---缺陷详情(包含复现详细步骤)---缺陷证据(日志等)
4、怎么避免开发不自测的情况
*测试端 转测(发测后优先测试自研用例,作为正式发测的前提,不存在fail和block用例)
5、系统测试,回归测试,UAT测试,从测试角度需要注意的部分
*系统测试:模拟系统的运行以验证系统是否达到功能和性能要求;关注测试用例的覆盖率。【实际项目中对应第一轮的测试(第一轮需求全实现时)】
*回归测试:修改bug;需求变更;环境变更。导致软件程序的变动。关注影响【实际项目中的非首轮测试;以及基于基线项目的定制需求】
*UAT测试:用户验收测试;关注用户真实的使用。
6、在写测试用例之前,怎么预测一个项目的测试时间
*当前公司 发测试时间(开发评估)结合TR4(项目经理评估)时间即可知测试时间。【根据项目节点(TR4阶段为系统测试结束时间);结合与开发一起评估需要测试的轮数;若发布最后一轮需要稳定性测试至少7天】
7、如果自我预计测试时间为3天 ,项目组要求2天测完的情况下,应该如何处理?
*首先,原测试策略不变下,反馈风险【若未能按时完成,提供风险评估(未测低等级用例对应哪些风险)】;若风险不可接受,调整测试策略至风险可接受为止。
*其次,测试内部调整参与测试的人员;测试人员预测试和提前准备测试环境,提高正式测试时的效率;组织测试人员加班。
8、bug怎么分级
*致命:阻碍开发或测试工作的问题
1)系统崩溃/死机/无法退出死循环;2)安全相关:用户数据受到破坏【篡改,丢失等】;3)基本模块完全未实现;4)其他导致功能无法测试的问题。
*严重:
1)重要功能不能实现(例如:用户所要求的功能缺失,该有的页面未实现,逻辑不通,重要图表数据未开发,等)
2)错误的波及面广,影响到其他重要功能正常实现
3)非常规操作导致的程序崩溃、死机、死循环 (非常规操作:用户使用软件时不会进行的操作)
4)系统中数据保存后数据库中显示错误
5)密码明文显示
6)页面无显示白屏,无数据
7)地图数据和图表数据不一致
*一般:不影响产品的运行、不会成为故障的起因、但对产品外观和下道工序影响较大的缺陷
1)次要功能不能正常实现
2)操作界面错误(包括数据窗口内列名的定义,含义不一致) 例如:列名与列名下的内容不一致
3)查询错误、数据错误显示
4)简单的输入限制未放在前端进行控制;(格式显示,如登录和注册中的格式判断可由前端判断)
5)删除操作未给出提示
6)边界条件错误或者未做限制
7)系统未做优化,数据页面加载慢,操作卡顿之类(性能层面问题)
8)兼容性问题(分辨率,系统版本等等)
*轻微:程序在一些显示上不美观,不符合用户习惯,或者是一些文字的错误
1)界面不规范
2)辅助说明描述不清楚
3)提示窗口文字未采用行业术语
4)界面存在文字错误
5)操作时未给用户提示
6)文字排列不整齐等一些小问题
*建议:
1)对于产品设计方面的意见和建议
2)对于产品界面优化方面的意见和建议
3)对于产品需要优化增强用户体验方面的意见和建议
结合bug出现频率:偶现【特定测试环境下,>=5%出现】,必现
9、如果在上线前,还有bug未解决,产品又必须要求上线,应该怎么处理
1)首先,产品不可能不存在bug,只是带bug发布,需要根据bug严重程度及其影响进行评估;
2)正常情况下,产品线会存在发布标准,以及项目组内对bug的评估及应对方案;
3)若存在测试不同意的bug存在,意见不同意,测试结论仍为不通过,若发布需要上升到领导层决策,含风险发布。
10.给出登录,注册的测试点
1)登录
界面相关:账号输入框(输入内容校验最长最短字符?超过最长或少于最短提示?合法字符有哪些?非法字符输入提示?中文占几个字符长度?特殊字符有哪些,重点关注SQL注入等安全?)/密码输入框(密码长度?超过最长或少于最短提示?合法字符有哪些?非法字符输入提示?不合理组合密码提示?非明文显示)。
功能相关:正确账号+正确密码/错误密码(空/不对应的密码)+正确账号/错误账号(空/不对应的密码)+存在的密码/都为空,关注提示信息不能太明确
安全相关:登录非明文传输;
性能压力:并发多用户登录跳转/进入登录页面耗时/登录成功,跳转耗时
兼容性:不同系统不同浏览器不同版本不同分辨率登录
国际化:不同语言
2)接口测试
1、你平常做接口测试的过程中发现过哪些 bug?
2、平常你是怎么测试接口的?
3、平常用什么工具测接口?
4:、webService 接口是如何测试的?
5、没有接口文档,如何做接口测试?
6、在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
7、依赖于第三方数据的接口如何进行测试?
8、当一个接口出现异常时候,你是如何分析异常的?
9、如何模拟弱网测试
10、如何分析一个 bug 是前端还是后端的?
11、Postman和Jmeter使用有什么区别
12、使用Postman测试接口提供什么
13、Get 和 Post的区别
14、Cookie和Session的区别
Http是无状态的协议,对于事务处理没有记忆力,每次客户端和服务端会话完成时,服务端不会存储任何会话信息
每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求,发送者和这一次的发送者是不是同一个人
那这个状态就要通过cookie或者session去实现
cookie指的是浏览器存储的一种数据,仅仅是浏览器实现的一种数据存储功能,cookie有服务器生成发送给浏览器,浏览器把cookie以kev-value形式
保存在浏览器中,下一次请求同意服务时,会把cookie发送给服务器
a.安全性,session比cookie安全,session是存储在服务端的,cookie是存储在客户端的
b.存储值的类型不同,cookie只支持存字符串数据,想要设置其他类型的数据,需要将其转换成字符串,session可以存任意数据类型
c.有效期不同,cookie可设置为长时间保持,session一般失效时间较短,客户端关闭或者session超时都会失效
d.存储大小不同,单个cookie存储大小不能超过4k,session可存储数据远高于cookie,但是当访问量过多会占用过多的服务器资源
6.head头部信息包含哪些内容
7.Jmeter集合点
8.Jmeter怎么保证并发数是准确的按照线程组进行并发测试
9.Jmeter性能测试关注哪些指标
3)其他---app 测试
1、什么是 activity?
2、Activity 生命周期?
3、Android 四大组件?
4、app 测试和 web 测试有什么区别?
5、android 和 ios 测试区别?
6、app 出现 ANR,是什么原因导致的?
7、App 出现 crash 原因有哪些?
8、app 对于不稳定偶然出现 anr 和 crash 时候你是怎么处理的?
9、app 的日志如何抓取?
10、你平常会看日志吗,一般会出现哪些异常(Exception)?
三、自动化测试
1)UI自动化---selenium
1、如何判断一个页面上元素是否存在?
2、如何提高脚本的稳定性
3、如何定位动态元素
1)常见动态id时:
使用其他元素定位
如果元素有其他的唯一属性值,如class name、name等,我们可以使用这些属性来定位。
根据相对关系定位
根据父子、兄弟相邻节点定位
根据部分元素属性定位
xpath提供了3种非常强大的方法来支持定位部分属性值。
contains(a,b) 如果 a 中含有字符串 b,则返回 True,反之 False
starts-with(a,b) 如果 a 中以字符串 b 开头,则返回 True,反之 False
ends-with(a,b) 如果 a 中以字符串 b 结尾,则返回 True,反之 False
示例如下:
driver.find_element(By.XPATH,'//*[contains(@id,"general-table")]/tbody/tr[3]/td[2]/select')
driver.find_element(By.XPATH,'//*[starts-with(@id,"general-table")]/tbody/tr[3]/td[2]/select')
driver.find_element(By.XPATH,'//*[end-with(@id,"general-table")]/tbody/tr[3]/td[2]/select')
注意:
*不同的浏览器可能效果不一样,比如你用Chrome浏览器使用contains 能够定位到元素,使用IE 可能定位不到;
*不同的xpath 版本可能不支持全部,之前遇到过定位某个元素,使用starts-with 定位不到,换成contains就定位到了;(这里有时间了,深入研究一下)
4、如何通过子元素定位父元素
5、如果截取某一个元素的图片,不要截取全部图片
6、平常遇到过哪些问题?如何解决的
7、一个元素明明定位到了,点击无效(也没报错),如果解决?
2) 接口自动化
1、json 和字典的区别?
2、测试的数据你放在哪?
3、什么是数据驱动,如何参数化?
4、下个接口请求参数依赖上个接口的返回数据
5、依赖于登录的接口如何处理
6、依赖第三方的接口如何处理
7、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试
8、接口产生的垃圾数据如何清理
9、一个订单的几种状态如何全部测到
10、pvthon 如何连接数据库操作?
11、其它的就是运行出报告、代码管理(git)、运行策略和持续集成 jenkins 相关了
四、数据库
1、左右连接的区别
select *fromA表 left join B on
以A表为主表查出A表所有数据,B表不存在的数据显示为空
select *from A表 right join B on
以B表为主表查出B表所有数据,A表不存在的数据显示为空
2、索引,数据库调优
索引是B+tree的数据结构
分为有单列索引,唯一索引和多列索引
用于查询时加快速度
3、讲出删除表内数据,不删除表结构的两种方法
delete from 表名,truncate table 表名 ,truncate不可以回滚
delete可以加where条件,truncate不可以
4、int类型判空 <>''
5、不去重 union all
7、条件查询 if(ex1,ex2,ex3)
ex1,条件
true为ex2
false为ex3
8、多条件
case when ... then
when... then
when... then
else... end
9、时间年月份取值
date:2021-12-16
取年份:year(date)
取月份:month(date)
取日:day(date)
10、substring_index(str,delim,count)分割取值
str = 字段名/字符串
delim = 分隔符
count = 计数
假设 str =www.baidu.comm
substring_index(str,'1)
结果为 www
substring_index(str,.2)
11、substr()函数
substr(str,start,length)
start为第几位开始,0.1都为第一位
length为所截取需要的长度
例:substr('234556'3,2) 结果为45
12、窗口函数
13、Replace into tableName values()
replace 首先尝试插入数据,如果表中有此数据(根据主键ID或唯一索引判断),先删除此行数据,再重新插入新数据
14、insert into tablename values()
update tablename set 需修改的字段内容 where 所要修改的那条记录 delete from tablename where 删除某条记录
15、timestampdiff(minute.开始时间,结束时间)查询两个时间之间的差值
可以进行参数设置,可以精确到天(day),小时(hour),分钟(minute),秒(second)
16、修改表结构
举例:请在用户信息表,字段level的后面增加一列最多可保存15个汉字的字段school;并将表中job列名改为profession,同时varchar字段长度变为10;achievement的默认值设置为0。
alter table user_info add school varchar(15) after level;
增加列在某列之后alter table 增加的表格 add 增加列的名称 数据类型 位置(after level 在level 之后)
alter table user info change job profession varchar(10):
更换列的名称及数据类型alter table user info change 原列名 修改列名 修改数据类型
alter table user info modify achievement int(11) default 0:
更改数据类型alter table 表名 修改列名称 数据类型 默认值等
五、Linux常用命令
1、说II和Is的区别
l是ls-!的别名,所有ls和I|功能是相同的
is是显示当前目录下文件,ls-I是显示当前目录下文件详细信息
2、复制 cp,移动mv,删除rm
3、chmod 754 777
操作文件或目录的用户,有3种不同类型:文件所有者、群组用户、其他用户
7=4+2+1 读写运行权限
5=4+1 读和运行权限
4=4 只读权限
chmod 754就是对文件所有者含有读写运行权限,群组用户含有读和运行权限。对其他用户只有只读权限
chmod 777就是对文件所有者,群组用户,其他用户都含有读写运行权限
4、top是显示进程信息
六、计算机网络
1、TCP和UDP协议属于那一层?区别?应用(哪些软件使用的/工作中)?
2、TCP三次握手四次挥手过程?为何有TIME_WAIT?
3、http状态码?http请求、ARP请求?
4、http和HTTPS的区别?
7、OSI七层模型?
8、ARP攻击?
9、如何修改自己的Mac地址?
10、开机启动操作系统做了那些事情?
11、消息队列接口参数是什么?
12、网页没有正确显示的原因?
13、浏览器发送的超文本有哪些?
14、浏览器请求,浏览器输入一个链接,到展示到页面,经历了什么?
七、蓝牙mesh
1、
八、实例
1、给你一个字符串,你怎么判断是不是ip地址?手写这段代码,并写出测试用例
2、请进行测试用例设计:一串数字,闰年的判别
3、请你说一说简单用户界面登陆过程都需要做哪些分析
4、请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示
5、请你对吃鸡游戏进行压力测试
6、请你根据微信登录界面设计测试用例
7、请你对朋友圈点赞功能进行测试
8、如果做一个杯子的检测,你如何测试
9、如何对一个页面进行测试
10、如何对水壶进行测试
11、如何对淘宝搜索框进行测试
12、如何对一瓶矿泉水进行测试
13、如何测试登陆界面
14、请你说一下jmeter
15、请你进行测试:前端下拉框实现,测试下拉框定位方式
16、请你来聊-聊appium断言
17、请你来说一下购物车的测试用例
18、请你进行一下弱网模拟
19、你写的测试程序是怎么样的,你写过前端、后端程序吗?
20、请问你有没有写过测试脚本,怎么写的?
21、请问你有没有写过web测试,怎么写的?
22、请你回答一下如何测试手机开机键?