软件测试面试题 - 各方面

本文收录软件测试面试过程当中常见的面试题.一些问题是从网上搜罗而来,剔除了不合时宜的;一些则是本身总结的面试题.不少的问题是开放性的,并无确切的标准答案.java

常见问题

  • 软件测试的目的是什么?

1.为了发现程序中的缺陷,保证软件质量。 2.知足用户须要web

  • 软件测试的通常流程是怎么样的?

1.项目立项后,参加需求评审
2.根据需求文档制定测试用例,而后进行用例评审
3.项目提测后,执行用例,问题记录cp4,及时有效的跟进问题的解决状况
4.测试环境测试经过后,产品进行验收测试面试

  • 常见的测试类型有哪些?分别说明一下?

1.黑盒测试,即常说的功能测试
2.白盒测试,即单元测试,一般由开发来完成,对程序类和方法的测试
3.兼容性测试,主要是浏览器的兼容测试
4.集成测试,即各个模块的测试
5.系统测试,各模块测试完成后,对整个系统的完整性测试
6.回归测试
7.验收测试算法

  • 测试用例设计经常使用的方法有哪些?详细说明一下?

最经常使用的3种 等价类划分、边界值、场景法
1.等价类划分 分为有效等价类和无效等价类,将测试的范围划分红几个互不相交的子集,从每一个子集选出若干个有表明性的值做为测试用例
2.边界值:选取正好等于、刚刚大于、刚刚小于边界的
3.场景法:划分不一样的场景,而后逐一进行验证sql

  • 解释下单元测试,集成测试,系统测试以及验收测试?

1.单元测试,一般由开发来完成,对程序类和方法的测试
2.集成测试,即各个模块的测试
3.系统测试,各模块测试完成后,对整个系统的完整性测试
4.验收测试,测试环境测试经过后,由产品或者用户进行验收测试,看看产品的实现,是否是知足了他们当初设计的需求数据库

  • 探索性测试是什么?应该怎么作?

在需求文档不完善或者压根没有需求文档的状况下,根据经验进行摸索尝试性进行的测试,是测试过程当中造成的基本的思惟性测试编程

  • 什么是冒烟测试,如何有效的开展冒烟测试?

1.软件最基本的功能测试,一般由开发完成,只有冒烟点都经过的产品,交由测试,才会比较有意义
2.冒烟测试贯穿于测试的各个阶段,好比集成测试,系统测试等api

  • 一条高质量的缺陷记录(Bug)应该具备哪些内容?

1.记录bug产生的前提条件
2.产生bug的详细操做步骤
3.截图,直观的展现问题,有效帮助开发快速定位问题浏览器

  • 缺陷的生命周期是怎样的?

1新建–提交–分配–修复–验证–验证经过关闭–验证不经过reopen安全

  • Alpha测试与Beta测试的区别?

1.Alpha测试:把用户请到开发方的场所来测试,用户在模拟实际操做环境下进行的测试,由开发记录下用户反馈的问题
2.beta测试:当开发和测试根本完成时所作的测试,不少不一样的用户,在不一样的环境下操做,而后用户把产生的问题,按期发给开发者,进行修复(开发不在现场)
3.一般现有alpha测试,后有bata测试

  • 你认为作好软件测试应该具有哪些素质?

1.较好的技术能力
2.对业务逻辑的理解
3.良好的沟通能力
4.解决和分析事情的能力

  • 做为测试人员,在与开发人员沟经过程中,如何有效的提升沟通效率和效果?

1.耐心的跟开发沟通,跟他阐述不过的重要性 说服他解决问题
2.充分尊重对方,哪怕再低级的bug都不要小看他
3.宽以待人,设身处地为他人着想 即便开发由于压力或者其余缘由不愿合做 也要心平气和的跟他沟通 讨论bug的优先级
4.平时多跟开发沟通 不管是工做仍是生活上的问题,可是测试必定要有本身的原则 对测试的产品质量负责
5.本身先定位问题 帮助开发缩小排查范围

  • 你以为软件测试工程师在一个团队中,都须要作什么?有什么价值?

1.在产品需求会上 能够站在用户的角度 提一些贴合用户需求的建议
2.测试阶段,根据本身对项目的了解和专业的测试技能 尽量在项目上线前测出更多问题 保证产品质量
3.对测试过程当中出现的问题 合理有效的进行风险评估。
4.对质量严格把关 测试不经过的 必定不能发布生产

  • 你对软件测试最大的兴趣是什么?

1.行业前景比较好,并且近些年 愈来愈多企业更注重测试
2.测试时间越久 面临的困难和挑战也越多,解决问题的同时 也提升了自身的能力
3.本身的性格比较外向开朗 很容易跟产品和开发沟通 作起事情能够事半功倍

  • 你对本身的职业规划是什么?

先作高级测试
有机会的话,想往管理方向发展,目前在携程作测试组长,也为之后管理作储备

  • 在你以往的工做中,发现的影响大或印象深入的Bug是什么?为何?

印象深入的bug:近期的一个项目,x发单n是发qmq消息,调用发单服务自动发单,测试过程当中,我给开发提议加个手动发单–做为发单失败或者未发单的补偿,开发力争 生产不会出现发单失败的状况,但后来仍是被我说服,在上线前,加个手动发单的功能。
上线次日,公司qmq框架出现问题,产生消息消费的延迟,致使一段时间内的订单不能自动发单,这时候你们手动发单,解决部分订单,事情事后,开发更加确定了 我当时的提的bug修复是正确的

  • 在你以往的经历中,解决过的最困难的问题是什么?

环境问题,是全部测试人员都面临的一个难题;解决的那么多问题中,测试环境没法使用,没法快速的介入测试,仍然是比较突出的。曾经把一个长久未使用的环境,根据经验和clog定位,各个服务之间的调用,一步步完成调通

  • 在你以往的工做或学习中,你最大的收获是什么?学到了什么?

1.业务的积累
2.经过各类自动化,如UI自动化,job自动化,api自动化,不只提高了本身编码能力,也在每周的常规发布中,起到举足轻重的做用
3.长期的测试过程当中,提高了本身解决问题的能力

  • 在没有任何文档的状况下,你如何开展测试?

1.尽可能的去获取其余的文档吧,好比开发的一 些设计文档—概要设计、功能设计、详细设计
2.尝试从网上找相似的项目文档,若是幸运,能够从公司的资料库找到相似的文档
3.按照开发的接口或者设计文档,按照功能模块划分,大体写一些用例,而后进行摸索测试,在测试过程当中逐渐完善本身的用例

测试用例设计问题

  • 测试用例是什么?如何设计有效的测试用例?

为了测试某个产品,编制的一组测试输入、执行条件以及预期结果
设计有效的测试用例:
1.明确需求,清晰的知道需求要实现哪些功能
2.根据需求文档,拆分出功能点和测试测试要点
3.详细的梳理业务需求,设计不一样的业务场景,尽量多的覆盖,尤为重要的逻辑,颗粒度要精细
4.具体逻辑的设计方法,遵循边界分析法,出问题最多的就在边界值,而后用等价类划分方法补充一些测试用例
5.UI测试,界面元素测试+样式+操做控件设计+浏览器兼容性相关的用例
6.时间充足的状况下,设计接口的测试用例,从而保证接口数据的用等价类划分方法补充一些测试用例完整性和正确性–目前携程提倡测试先行的概念,接口要在项目提测前,完成api自动化测试

  • 输入三个整数,判断是否构成有效的三角形,针对这个设计测试用例

首先要设计知足三角形的条件,输入的三个数必须大于0,且同时知足任意两边之和大于第三边。假设三条边是A/B/C,则要知足的条件为A>0,B>0,C>0,A+B>C,A+C>B,B+C>A。以此为例来进行设计便可
有效等价类:A>0,B>0,C>0

  • 针对文件上传功能,设计下测试用例
  • 针对网上购物中订单提交的过程,设计测试用例

测试管理问题

  • 你认为测试经理的工做职责和内容是什么?

1.负责创建和维护一个有效的测试流程;
2.负责测试团队的平常管理工做;
3.负责制定和安排测试计划、测试工做;
4.带领测试团队进行程序测试工做、按照制定的测试计划执行,并监督和控制测试工做的进程;
5.负责测试用例的质量,开发高效的测试用例;
6.负责与其余部门的人员沟通协做,例如与开发人员和项目管理人员进行沟通,共同推进项目的顺利进行;
7.负责测试团队的培训,培养团队队员的能力。

  • 若是你做为测试Leader,你应该怎么创建公司的测试体系并实施它?
  • 说明你做为测试团队的负责人,如何提升测试团队的技术能力?
  • 列举你以往项目测试中遇到的风险以及你如何处理的?
  • 若是当时间不充裕时,该如何安排测试?
  • 列举你曾经作过的测试(你认为有技术含量的或者提升了测试管理能力的),并说下你从中如何受益?
  • 在开发和测试存在不合做甚至对立的状况下,你如何平衡和协调工做?

自动化测试问题

  • 你认为适合作自动化测试的标准是什么?
  • 你认为何类型的测试不适合作自动化测试?
  • UI自动化测试的优势和缺点分别是什么?
  • 在一个项目中目前尚未进行自动化,若是我想开展自动化测试,我应该怎么作(通常步骤)?
  • 你认为该如何选择最适合的自动化测试工具?
  • 什么是自动化测试框架?一个好的自动化测试框架应该具有什么元素?
  • 说一下你写过的测试框架的代码目录结构是怎么样的?
  • 自动化测试框架的类型有哪些?
  • 说一下你在实施自动化测试过程当中好的代码实践?
  • 自动化测试是否仅仅能够是实施在UI层?为何?
  • 你是否熟悉Selenium工具?说一下它是什么?
  • 你是否还熟悉其它的自动化测试工具?各自简单的介绍一下?

性能测试问题

  • 什么是性能测试?为何要进行性能测试?
  • 性能测试的类型有哪些?
  • 列举下用户会面对的性能问题和性能瓶颈?
  • 列举下性能测试中常涉及的性能计数?
  • 性能测试中并发用户点击量是什么?如何实现?
  • 性能测试进入和结束的标准是什么?
  • 说一下在选择性能测试工具以前须要考虑哪些东西?
  • 在性能测试中,如何识别性能瓶颈?
  • 在对应用程序进行性能测试期间通常会执行哪些活动?
  • 性能测试中吞吐量是什么?
  • 解释下什么是耐力测试和尖峰测试?

数据库问题

MySql

  • 一张表,里面有ID自增主键,当insert了17条记录以后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18仍是15

操做系统问题

  • 列出超过10个Linux经常使用的命令以及其做用?
  • 进程和线程是什么?它们有什么区别和联系?

算法问题

Java面试题

基础知识

  • 面向对象编程有哪些特性?

1.抽象
2.继承 继承是使用已存在的类做为基础–创建新类的技术,新类的定义能够增长新的数据或新的功能,也能够用父类的功能,但不能选择性地继承父类。经过使用继承咱们可以很是方便地复用之前的代码,可以大大的提升开发的效率
(1)子类拥有父类非private的属性和方法。
(2)子类能够拥有本身属性和方法,即子类能够对父类进行扩展。
(3)子类能够用本身的方式实现父类的方法
学习继承必定少不了这三个东西:构造器、protected关键字、向上转型
3.封装(把数据和逻辑封装在类里,经过建立对象去访问这个类里的方法和属性,封装把一个对象的属性私有化,同时提供一些能够被外界访问的属性的方法,做用:能够更改好的保护类的内部成员,)
4.多态性
依赖继承,重写方法
同一行为具备不一样的实现,经过继承父类,在子类中进行方法的实现
经过建立不一样子类的对象,去调用不一样的方法
5.抽象的方法,必定是方法没有方法体的,如:abstract void work(),必定是没有花括号的

  • 重写和重载的区别是什么?为何重载不能根据返回值判断?

重写 @Override(不一样类),用于子类继承父类,在子类去重写方法,对父类进行扩充或改造
ps:父类的方法只有是public或者protected的,子类才能重写方法,其余的如父类是私有或者default,子类都是不可见的,因此不能重写方法
子类的方法名,参数,返回值都跟父类相同,重写的方法修饰符大于等于父类的方法
重载,同一个类中,存在相同的方法名,可是方法的参数必定不一样
为何重载不能根据返回值判断?–答案:由于若是根据返回值判断,那么编译器编译的时候,若是参数相同,就不知道调用哪一个方法了

  • 访问修饰符public,private,protected以及默认之间的区别

类的成员不写访问修饰时默认为default。默认对于同一个包中的其余类至关于公开(public),对于不是同一个包中的其余类至关于私有(private)。受保护(protected)对子类至关于公开,对不是同一包中的没有父子关系的类至关于私有。
Java中,外部类的修饰符只能是public或默认

  • 抽象类和接口的异同?
  • Java中的异常有哪几类?分别怎么使用?
  • 经常使用的集合类有哪些以及各自有什么特色?
  • ArrayList和LinkedList内部的实现大体是怎样的?他们之间的区别和优缺点?
  • 内存溢出是怎么回事?请举几个可能出现内存溢出的场景?
  • ==和equals的区别?
  • hashCode方法的做用是什么?
  • HashMap实现原理,如何保证HashMap的线程安全?
  • Java中一个字符占多少个字节,扩展再问int, long, double占多少字节
  • 建立一个类的实例都有哪些办法?
  • final/finally/finalize的区别?
  • String/StringBuffer/StringBuilder的区别?
  • 什么是java序列化,如何实现java序列化?

JVM

  • JVM内存结构,为何须要GC?
  • JVM堆的基本结构
  • JVM的垃圾算法有哪几种?CMS垃圾回收的基本流程?
  • JVM有哪些经常使用启动参数能够调整,描述几个?
  • 如何查看JVM的内存使用状况?
  • 你经常使用的JVM配置和调优参数都有哪些?分别什么做用?