文章目录
参考: anliux测试面经合集
测试基础知识
与开发阶段的联系
测试阶段是和开发阶段是一一对应的
测试阶段:单元测试–>集成测试–>系统测试–>验收测试
开发阶段:需求分析–>概要设计–>详细设计–>编码阶段
测试分类
按阶段划分
-
单元测试(模块测试)
其目的是检验软件的基本组成单位的正确性。
测试方法:白盒测试
测试内容:模块接口测试,局部数据结构测试,边界测试,路径处理测试
-
集成测试:将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行争取性检测的测试工作。
测试方法:黑盒和白盒测试相结合。
测试内容:模块之间数据冲突,模块之间功能冲突
-
系统测试:包括对功能、性能以及软件所运行的软硬件环境进行测试。
测试方法:黑盒测试
测试内容:功能、界面、安全、兼容性、性能、可用性
-
验收测试:部署软件之前的最后一个测试操作,确保软件准备就绪。
测试方法:黑盒测试
测试内容:同系统测试
按是否查看代码划分
-
黑盒测试
又称功能测试,把被测软件当做一个黑盒子,不关心盒子的内部结构,只关注软件的输入输出数据。
-
白盒测试
基于代码的测试,打开盒子去研究里面的源代码和程序结果
-
灰盒测试
介于黑盒和白盒测试之间的一种测试,多用于集成测试阶段,既关注输入输出,又关注软件内部的情况
按是否执行程序划分
-
静态测试
不运行程序本身,仅通过分析和检查源程序的语法、结构来检查程序的正确性
检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核
-
动态测试
运行改程序,检查运行结果和预期结果的差异,并分析运行效率、正确性和健壮性。主要由构造测试用例、执行程序、和分析程序组成
按是否手工执行
-
手工测试
人工一个个的输入测试用例,然后观察结果,与机器测试相对应
优点:自动化无法代替探索性测试,发散思维类测试
缺点:执行效率慢,容易出错
-
自动化测试
在预设条件下运行系统或者应用程序,评估运行条件。
其他测试
-
回归测试
修改代码之后,再重新测试以确认没有引入新的错误或导致其他代码产生错误。
-
Alpha 测试
用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。
不能有程序员或测试员完成。
-
Beta 测试
是一种验收测试,Beta 测试由软件的最终用户们在一个或多个客房场所进行。
Alpha 测试和Beta 测试的区别:
- 测试的场合不同:Alpha 测试是指把用户请到开发方的场所进行测试,Beta 测试是指在一个或多个用户的场所进行的测试。
- Alpha 测试是受开发方控制的,时间比较集中。Beta测试的环境是不受开发方控制的,数量相对较多,时间不集中。
- Alpha 测试先于Beta 测试执行,通用的软件产品需要较大规模的Beta测试,测试周期比较长
测试非技术类问题
如何理解测开
测试的目的是发现问题,检查系统是否满足要求,保证程序的质量。
测开的职责一方面就是通过手工测试,自动化测试来保证质量,另一方面是提高测试的效率。
和开发的区别
- 开发是实现功能,也就是从无到有的过程;测试是发现软件的问题,检查系统是否满足要求,保证质量。测试和开发是相辅相成的,同步进行。
- 有些的很明显的bug开发人员自己能找到,测试人员要比开发人员有更全面的想法才能找到深层次的问题点。
为什么做测开,不选研发?
- 测试工程师经历了之前的误解之后,近年来公司开始重视质量,尤其是大公司,知道测试工程师的必要性,所以我相信虽然这个行业目前没有被足够的重视,但是后续会越来越好,我相信这个行业的前景。
- 从技术栈和个人性格上来说,我比较有耐心,具有较好的学习能力,自身也符合测开工程师的要求。
- 另外我了解了测试的基本理论之后,我觉得测试理论是一个比较普遍适用的技能。但是开发工程师有一定的专业性限制,比如说Java工程师可能一直是Java工程师,但是测试工程师可以测试由不同技术实现方案进行实现的产品,测试体系使用的面比较广。
如果开发认为测出来的不是bug,怎么办
-
首先看这个在需求里面有没有明确如何实现,可以找产品经理来进行确认,需不需要改动,三方商量确定好后再看要不要改。
-
先尽可能说出这个BUG的依据,把BUG复现出来,说清楚如果用户发现出了问题,会有什么不良后果。要坚持自己的立场,让问题得到最后的确认。
-
实在不行,就把这个问题提出来,和开发经理还有产品经理进行确认。
你认为测开工程师的需要哪些能力?
技术能力加软实力
技术能力:
- 计算机基础知识
- 编程能力,具备基本的开发能力
- 软件测试相关的知识
软实力:
- 性格(耐心,细心,有责任心)
- 思维(逻辑思维能力,测试思维)
- 能力(抗压能力,沟通表达,和产品研发对接)
- 坚持原则(和产品开发沟通的时候,不能人云亦云,要有自己的原则)
对测开工作的职业规划
测试用例设计
测试用例模板
- 功能测试
- 性能测试
- 安全测试
- 可用性测试
- 界面测试
- 兼容性测试
登录界面测试
-
功能测试
- 用户名正确,密码正确,点击提交按钮,是否能正常登录
- 输入错误的用户名或者密码,验证登录失败,有相应的提示信息
- 用户名为空或者密码为空,是否有响应的提示信息
- 登陆成功后页面能否正常跳转
- 用户名和密码太长太短怎么处理
- 用户名或者密码含有特殊字符,比如空格,和其他非英文的情况
- 用户名或者密码以空格开头的情况
- 记住用户名的功能
- 密码是否是非明文显示
- 牵扯到验证码的,验证码图案是否过于扭曲;点击换一个按钮是否好用
- 登录页面中的注册、忘记密码等链接是否好用
- 输入密码时,切换键盘大小写是否有提示
-
性能测试
- 打开登录页面,需要的时间是否在需求要求的时间内
- 登录成功,跳转到新页面的时间是否在需求要求时间内
- 模拟大量用户同时登陆,检查一定压力下能否正常登录
-
安全测试
- 登陆成功后的cookie是否是httponly,会不会通过js脚本被攻击
- 用户名和密码是否通过加密的方式,发给web服务器
- 用户名和密码输入框有没有禁止脚本输入,防止XSS攻击
- 用户名和密码的输入框应该屏蔽SQL注入攻击
- 用户名和密码应该在服务端验证,而不能单单在客户端验证
- 防止暴力破解,检测是否有错误登录的次数限制
- 是否支持多用户在同一机器上登录
- 同一用户是否可以在多台机器上登录
-
可用性测试
- 是否可以全键盘操作,是否有快捷键
- 输入框是否可以用tab键切换
- 输入用户名和密码是否可以按回车登录
-
界面测试
- 布局是否合理,按钮是否整齐
- 按钮的长度和高度是否符合要求
- 界面的文字简洁易懂,没有错别字
-
兼容性测试
-
不同的浏览器版本下能否正常显示和功能正常
-
不同版本的系统上能否正常显示和功能正常
-
不同平台是否能正常工作,比如mac,windows
-
不同版本的浏览器是否正常
-
移动设备是否正常工作
-
不同分辨率下显示是否正常
-
淘宝搜索框测试
测试矿泉水瓶
- 功能测试
- 瓶盖是否容易打开或者拧紧
- 水能不能正常倒出来
- 瓶盖拧紧成都
- 不同容积的水需要倾斜多少角度喝到
- 出水的流畅性
- 性能测试
- 可容纳的最高温度
- 最多可装多少水
- 是否漏水
- 可承受多大的重力杯子会变形
- 从多高摔落会破损
- 若装热水,多久会变冷
- 安全测试
- 是否防滑
- 是否有异味
- 装热水是否会裂开
- 是否有缺口,会划嘴
- 材料是否对人有害
- 装热水是否会烫手
- 材质是否对人有害
- 界面测试
- 外观是否美观
- 标签内容包括营养成分,字体排版是否正确,是否有错别字
- 标签是否容易脱落、褪色
- 标签内容是否符合行业标准
- 兼容性测试
- 是否可以放在不同环境下
- 是否可以装不同液体
- 可用性测试
- 是否防滑
- 是否方便携带
- 是否方便饮水