【文章末尾给大家留下了大量的福利】
十、面试总结
1. 你的优势在哪里?我为什么要录用你?
我也许不是最优秀的人,但我认为我很适合这一岗位。我以往的工作经历都与之息息相关,在这一领域不断发展也是我的目标。我相信我的专业水平和工作能力能够在这个岗位上为公司道的业绩和发展做出贡献。我到这个公司来面试也是看到了公司的发展前景,而我相信自己可以给公司带来更多地利益。比方说公司需要的接口测试我也是比较有经验的,而自动化测试方面我觉得做个初级的项目应该是没问题的,如果公司需要, 我是有能力去进修完善自动化知识,然后把这些知识运用到项目上来,以上是我总结的
个人优势。
- 你如果进来公司了,重心放在哪里?
我个人认为重心是技术方面,比方说接口和自动化这方面,如果公司有要求,业务还有管理方面我也会尽我最大的努力去做好。
- 你们是怎么写用例的?
首先对需求进行分析,提取测试点,熟悉项目流程。然后,根据测试点来编写测试用例, 测试用例要考虑到功能、用户体验、性能、兼容性和一些异常的场景。我们一个测试用例包含:用例编号、测试项目、测试标题、重要级别、预置条件、测试输入、测试步骤、 预期结果这些要素,编写完后还要进行用例的评审。
- 你会数据库吗?
数据库我们主要用的是增删改查,比如:我们在前台下做了充值操作,除了在用户中心和系统后台查看这笔金额是否正确,我们也会到数据库中查询该记录的数据是否正确。
- 为登录设计一个全面的测试用例
功能性用例设计点:
-
- 输入已注册的用户名和正确的密码,验证是否成功登录
- 输入已注册的用户名和不正确的密码,验证是否登录失败,且提示信息正确
- 输入未注册的用户名和任意密码,验证是否登录失败,且提示信息正确
- 使用未激活账户登录,验证是否登录失败
- 使用被停用用户登录,验证是否登录失败
- 用户名和密码两者都为空,验证是否登录失败,且提示信息正确
- 用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确
- 如果登录功能启用了验证码功能,在用户名和密码正确的情况下,输入正确的验证码,验证是否登录成功
- 如果登录功能启用了验证码功能,在用户名和密码正确的情况下,输入错误的验证码,验证是否登录失败,且提示信息正确
- 用户名和密码是否大小写敏感
- 页面上的密码框是否加密显示、或者是否需要有明暗码切换按钮
- 后台系统创建的用户第一次登录成功时,是否提示修改密码
- 忘记用户名和忘记密码的功能是否可用
- 前端页面是否根据设计需求限制用户名和密码长度
- 如果登录功能需要验证码,点击验证码图片或者点击换一张是否可以更换验证码, 更换后的验证码是否可用
- 刷新页面是否会刷新验证码
- 如果验证码有时效性,需要分别时效性内和时效性外验证码的有效性
- 用户登录成功但是会话超时后,继续操作是否会重定向到用户登录界面
- 不同级别的用户,比如管理员和普通用户,登录系统后权限是否正确
- 页面默认焦点是否定位在用户输入框中
- 快捷键 Tab 和 Enter 等,是否可以正常使用
- 为空和输入空格字符串的校验是否一致
- 使用中文键盘输入字母和使用英文键盘输入字母传入后端的字符长度是否一致
-
- 成功登录后的 session 的时效设置
- 输入栏是否设置快速删除按钮
- 用户名和密码是否支持特殊字符和中文
- 浏览器的前进后退按钮,是否有效
- 成功登出后,点击浏览器回退按钮,是否可以继续操作系统
- 需求中是否有登录时间限制,如果有验证时间限制是否有效
- 验证不同登录方式的正确性:扫码、账号密码、第三方……
- 若支持手机号+验证码登录,验证码是否有时间限制,移动设备是否可以直接获取验证码
- 操作错误提示信息是否简单明了
兼容性测试用例设计点:
- 不同浏览器下,验证登录页面的显示以及功能正确性
- 相同浏览器的不同版本下验证登录页面的显示以及功能正确性
- 不同移动设备终端的不同浏览器下,验证登录页面显示以及功能的正确性
- 不同分辨率的界面下,验证登录页面的显示以及功能正确性
安全性测试用例设计点:
- 用户密码后台存储是否加密
- 用户密码在网络传输过程中是否加密
- 密码是否具有有效期,密码有效期到期后,是否提示需要修改密码
- 不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面
- 密码输入框是否不支持复制粘贴
- 密码输入框内输入的密码是否都可以在页面源码模式下被查看
- 用户名和密码输入框分别输入典型的“SQL 注入攻击”字符串,验证系统的返回页面
- 用户名和密码输入框分别输入典型的“XSS 跨站脚本攻击”字符串,验证系统行为是否被篡改
- 连续多次登录失败的情况下,系统是否会阻止后续的尝试以应对暴力破解
- 同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期
- 同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性
- 是否可以记住密码,记住的密码保存是否加密,记住的密码是否有有效期,过了有效期后是否清空密码
- 是否支持第三方登录
- 密码的强弱性,复杂度校验
- 异地登录校验、更换设备登录校验、登陆信息异常是否考虑账户冻结停用、是否允许第三方平台存储密码
- 是否可以使用登录的 api 发送登录请求,并绕开验证码校验
- 是否可以用抓包工具抓到的请求包直接登录
- 截取到的 token 等信息,是否可以在其他终端上直接使用,绕开登录,token 过期时间校验
- 登录错误后的提示是否存在安全隐患
性能压力测试的用例设计点:
- 单用户登录的响应时间是否小于 3 秒
- 单用户登录时,后台请求数量是否过多
- 高并发场景下用户登录的响应时间是否小于 5 秒
- 高并发场景下服务端的监控指标是否符合预期
- 高集合点并发场景下,是否存在资源死锁和不合理资源等待
- 长时间大量用户连续登录和登出,服务器是否存在内存泄露
- 输入内容校验是否加入了函数防抖
- 你平常会看日志吗, 一般会出现哪些异常
这个主要是面试官考察你会不会看日志,是不是看得懂 java 里面抛出的异常,Exception 一般面试中 java Exception(runtimeException )是必会被问到的问题
app 崩溃的常见原因应该也是这些了。常见的异常列出四五种,是基本要求。常见的几种如下:
NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常。IllegalArgumentException - 传递非法参数异常。ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常IndexOutOfBoundsException - 下标越界异常NegativeArraySizeException - 创建一个大小为负数的数组错误异常NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常
- 单元测试、集成测试、系统测试的侧重点是什么?
- 单元测试的重点是系统的模块,包括子程序的正确性验证等。
- 集成测试的重点是模块间的衔接以及参数的传递等。
- 系统测试的重点是整个系统的运行以及与其他软件的兼容性。
- 白箱测试和黑箱测试是什么?什么是回归测试?
- 白箱测试:对程序的内部结构与算法进行的测试
- 黑箱测试:不考虑程序的内部结构,只检查程序是否实现了需求的功能
- 回归测试:BUG 修正重新测试,关联其他模块测试。
- 全部回归与部分回归的区别?
- 全部回归:对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例,防止以前没有的问题现在出问题了
- 部分回归:当开发修复某个 bug 时,我们需要去检查该 bug 是否被修复,还需要检查与之相关联的模块是否受到影响。
- 设计用例的方法、依据有那些?
- 白盒测试用例设计有如下方法:基本路径测试\等价类划分\边界值分析\覆盖测试\循环测试\数据流测试\程序插桩测试\变异测试.这时候依据就是详细设计说明书及其代码结构吧;
- 黑盒测试用例设计方法:基于用户需求的测试\功能图分析方法\等价类划分方法\边界值分析方法\错误推测方法\因果图方法\判定表驱动分析方法\正交实验设计方法.依据是用户需求规格说明书,详细设计说明书
- 一个测试工程师应具备那些素质和技能?
- 掌握基本的测试基础理论
- 本着找出软件存在的问题的态度进行测试,即客观吧,不要以挑刺形象出现
- 可熟练阅读需求规格说明书等文档
- 以用户的观点看待问题
- 有着强烈的质量意识
- 细心和责任心
- 良好的有效的沟通方式(与开发人员及客户)
- 具有以往的测试经验
- 能够及时准确地判断出高危险区在何处.
- 集成测试通常都有那些策略?
大爆炸集成;自顶向下集成;自底向上集成;三明治集成;分层集成;基干集成;基于功能的集成;基于消息的集成;基于风险的集成;基于进度的集成.
- .一个缺陷测试报告的组成?
缺陷跟踪报告:
- 编号,如:ut-dt00016
- 标题,如:文字排版功能.字间距.MarchCalculator 计算错误
- 版本号,如:V1.3
- 执行状态,如:空白/草稿/提交/审批/分发/正在修改/修改完毕/正在确认/关闭…
- 修改记录,如:2003 年 7 月 2 日;肖睿编制/修改;原因
- 测试环境和版本号码、程序编写人员
- 错误严重程度和优先级别
- 错误详细描述
- 重现步骤和方式、对应的测试记录编码
- 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测
试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法, 保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试策略和测试方法(最好是能先评审)
- 你认为做好测试计划工作的关键是什么?
- 明确测试的目标,增强测试计划的实用性
编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试
计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
- 坚持“5W”规则,明确内容与过程
“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where
(在哪里)”、“How(如何做)”。利用 “5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置
(Where)。
- 采用评审和更新机制,保证测试计划满足实际需求
测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没
有及时更新,误导测试执行人员。
- 分别创建测试计划与测试详细规格、测试用例
应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计
划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。
- 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
- 等价类划分
划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的
测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作 为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可 有两种不同的情况:有效等价类和无效等价类.
- 边界值分析法
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生 在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误. 使用边界值分析方法设计测试用例,首先应确定边界情况. 通常输入和输出等价类的边界, 就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
- 错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况, 根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为 0 的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择
这些情况下的例子作为测试用例.
- 因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条 件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况.