测试基础
1.如何制定测试计划
测试计划包括测试目标,测试范围,测试环境的说明,测试类型的说明(功能,安全,性能,稳定稳定性)、测试工具、模块的划分、测试负责人、测试执行轮次的时间安 排、相关文档在文档管理库中的位置、测试的风险 。其中模块划分需要根据测试人 员对于业务的熟悉程度及个人能力进行分配,工作量的估算需要根据以往测试时的经验,结合本次需求的修改,可以大致估算出测试量
2.在项目中如何保证软件质量?
1.
产品,保证迭代过程中的产品逻辑,对于可能的兼容,升级做出预判,并给出方案
2.
设计,满足产品表达的同时,保证设计的延续性
3.
开发,产品细节的保证,技术方案选择要严谨,考虑兼容,性能,开发完成后要充
分自测,严格遵循开发规范操作
4.
测试,验证产品逻辑,站在用户角度对交互设计进行系统验证,尽可能多的使用技
术手段保证测试质量
3.功能测试用例一般包含那些内容?
用例编号、用例优先级、测试目的、所属模块、前提条件、测试环境、输入数据、测试步骤、
预期结果、测试脚本等
核心要素:用例优先级、测试目的、预期结果
4.黑盒(或功能)测试用例设计方法有哪些?
等价类划分方法
:等价类划分法将程序所有可能的输入数据(有效的和无效的)划分成若干
个等价类。
边界值方法
:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
错误推测方法
:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,
从而有针对性地编写检查这些错误的测试用例的方法。
因果图方法
:因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件
的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用
例的方法,它适合于检查程序输入条件涉及的各种组合情况。
判定表驱动分析方法:判定表是黑盒测试的方法之一,判定表是把作为条件的所有输入的各
种组合值以及对应输出值都罗列出来而形成的表格。
正交分解法
:是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水
平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的
情况,找出最优的水平组合。
场景分析法
:分析软件应用的场景,从用户的角度出发,从场景的角度来设计测试用例,是
一种面向用户的测试用例设计方法。关心用户做什么,而不是关心产品做什么。
全局探索式测试方法:测试人员根据应用程序所提供的信息自由发挥,不受限制,不受任何
约束的探索程序的各种功能。
5.如何测试纸杯
功能度:纸杯容量(空杯、满杯升数、半杯升数);水能不能被喝到;纸杯形状(正圆柱、
上宽下窄圆柱、上窄下宽圆柱、其他形状)、纸杯材质(全纸质、全塑料、半纸半塑料)、纸
杯耐温程度(冷水、热水、冷水、冰)、支持盛放液体名称(水、咖啡、牛奶、可乐)
安全性:杯子有没有毒或细菌、装液体多久有化学反应(例如:异味)
可靠性:杯子从不同高度落下的损坏程度
可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用、装液体多久漏水、装热水多
久变形、装多少度热水变形
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水放
24
小时检查泄漏时间和情况;盛上汽油放
24
小时检查泄漏
时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透;手挤压多久变形(单
手、双手)
7.遇到概率性bug怎么办?
运用排除法、错误推测找规律,必要时找开发人员、项目经理一起定位分析讨论,如果最终仍
未解决,那么需要在测试报告中体现,并分析可能造成的影响,大家一起权衡该
bug
是否可
遗留。
8.一个身份证号码测试框,怎么设计测试用例
校验身份证号规则的有效性(包括地址码、生日期码、顺序码和校验码
校验
15
位身份证号和
18
位身份正好都是可用的
校验末位是
X
的情况
校验不足
15
位、
16-17
位和大于
18
位的情况
如果是必输项,校验不输入的时候会不会有正确的提示
如果不是必输项,则要校验不输入的时候流程能否正常进行
校验输入非数字的情况,是否会有正确提示信息(包括大小写字母、汉字、特殊字符和
标点符号)
校验输入全角的数字的时候,系统是否会识别
9.给你一个网站,如何展开测试
1.
查找需求说明、网站设计等相关文档,分析测试需求。
2.
制定测试计划,确定测试范围和测试策略。
3.
设计测试用例,包括功能、兼容、性能、安全等方面
4.
开展测试执行
5.
回归测试及测试总结
10.软件的生命周期
11.bug的生命周期
New
:发现
bug
,未经评审决定是否指派给开发人员进行修改。
Open
:确认
bug
,并且认为需要进行修改,指派给相应的开发人员。
Fixed
:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
Rejected
:如果认为不是
Bug
,则拒绝修改。
Delay
:如果认为暂时不需要修改或暂时不能修改,则延后修改。
Closed
:修改状态的
Bug
经测试人员的回归测斌验证通过,则关闭
Bug
。
Reopen
:如果经验证
Bug
仍然存在,则需要重新打开
Bug
,开发人员重新修改。
14.如何通过Fiddler确定时前端还是后端BUG
(
1
)测试遇到
bug
,首先
Fiddler
开启抓包后看是否能抓到接口,如果不能抓到接
口,说明是前端
BUG
(
2
)如果抓到接口,但是接口请求参数或者参数值错误,说明是前端
BUG
(
3
)如果是接口应答信息错误,说明是后端
BUG
15. 发现一个 bug,怎么定位是 APP 端还是服务端的问题
1.
抓包分析 通过对客户端进行抓包,分析服务端返回的数据是否符合预期,如
果服务端数据是正确的,那就是客户端的问题
16.介绍下你最近做过的一个项目
1
) 慕慕商城
2
) 项目平台(终端):
web
3
) 主要业务:针对
****
(用户群体:学生,老师)提供
用户登陆、注册、商品搜索、商品详情
系统管理、商品系统、优惠营销、库存系统、
等功能的网页
4) 主要模块:
登录注册模块以及后台商品管理,内容管理等
5
) 我负责
登录注册模块以及后台商品管理,内容管理等
的测试,包括功能、接口
使用Postman配合Fiddler抓包进行接口测试
使用Jmeter进行接口测试、性能测试等
在测试这个项目你遇到了哪些困难,你是如何解决的?
在用jmeter进行性能测试的时候跨线程组传参的问题,从登录模块提取token(线程组一)在购物车模块的信息头中添加token(线程组二)的全局变量设置的问题,我在线程组外面设置了一个HTTP信息头管理器,他在两个线程组外面,应该作用的是这两个线程组,我给登录的模块设置了一个json提取器来设置token的值,发现设置不上,购物车模块的线程组也拿不到这个token,自己查阅了资料,发现设置全局变量要用BeanSell后置处理并且要用setProperty这个函数设置一个key,value的值,然后就可以在其他线程组的HTTP信息头管理器中用函数P来说获取这个全局变量
12.在项目中,你都测出过哪些类型的bug?哪些地方容易出bug
在慕慕商城项目中,我遇到了一些不同类型的 bug,让我简单描述一下:
1. **登录注册模块的验证漏洞**:在用户注册时,我发现部分用户可以通过提交空表单或者包含非法字符的表单来成功注册,这导致了注册模块的验证漏洞。修复这个问题需要对注册表单的输入进行严格的验证,包括对用户名、密码的长度和字符类型进行限制,以及对特殊字符进行转义处理。
3. **订单系统的支付漏洞**:在订单支付功能中,我发现部分订单支付成功后,系统没有正确更新订单状态或者没有触发相应的支付成功事件,导致订单状态不一致或者支付成功后无法跳转到支付成功页面。这可能是由于支付接口的调用参数不正确或者支付回调函数没有正确处理的原因导致的。修复这个问题需要对支付接口的调用参数进行调试和优化,确保支付成功后能够正确更新订单状态和跳转到支付成功页面。
这些是我在慕慕商城项目中遇到的一些常见的 bug,解决这些问题需要我不断地进行测试和调试,同时与开发人员和产品经理密切合作,及时反馈问题并提出解决方案。
Mysql数据库
用一条 SQL 语句 查询出每门课都大于 80 分的学生姓名。表 scores 如下:
name course score
张三 语文
81
张三 数学
75
李四 语文
76
李四
数学
90
王五
数学
100
王五
英语
90
参考答案
:
学生的最低分数大于
80
,那么就可以查询出每门课都大于
80
分的学生姓名
select name,min(score) from
scores
group by name having min(scor
e)>80);
什么是事务?
事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操
作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操
作集合
原子性,一致性,隔离性,持久性
Linux
说几个工作中常用的 Linux 命令?
cat
:浏览文件内容
vi
:文件编辑
grep
:过滤文件内容
ifconfig: 查看网络IP
less: 查看文件
rm: 删除文件
netstatus -napt :查看端口占用
lsblk 查看磁盘分区情况