本文收录软件测试面试过程当中常见的面试题.一些问题是从网上搜罗而来,剔除了不合时宜的;一些则是本身总结的面试题.不少的问题是开放性的,并无确切的标准答案.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
1.记录bug产生的前提条件
2.产生bug的详细操做步骤
3.截图,直观的展现问题,有效帮助开发快速定位问题浏览器
1新建–提交–分配–修复–验证–验证经过关闭–验证不经过reopen安全
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:近期的一个项目,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.负责测试团队的培训,培养团队队员的能力。
1.抽象
2.继承 继承是使用已存在的类做为基础–创建新类的技术,新类的定义能够增长新的数据或新的功能,也能够用父类的功能,但不能选择性地继承父类。经过使用继承咱们可以很是方便地复用之前的代码,可以大大的提升开发的效率
(1)子类拥有父类非private的属性和方法。
(2)子类能够拥有本身属性和方法,即子类能够对父类进行扩展。
(3)子类能够用本身的方式实现父类的方法
学习继承必定少不了这三个东西:构造器、protected关键字、向上转型
3.封装(把数据和逻辑封装在类里,经过建立对象去访问这个类里的方法和属性,封装把一个对象的属性私有化,同时提供一些能够被外界访问的属性的方法,做用:能够更改好的保护类的内部成员,)
4.多态性
依赖继承,重写方法
同一行为具备不一样的实现,经过继承父类,在子类中进行方法的实现
经过建立不一样子类的对象,去调用不一样的方法
5.抽象的方法,必定是方法没有方法体的,如:abstract void work(),必定是没有花括号的
重写 @Override(不一样类),用于子类继承父类,在子类去重写方法,对父类进行扩充或改造
ps:父类的方法只有是public或者protected的,子类才能重写方法,其余的如父类是私有或者default,子类都是不可见的,因此不能重写方法
子类的方法名,参数,返回值都跟父类相同,重写的方法修饰符大于等于父类的方法
重载,同一个类中,存在相同的方法名,可是方法的参数必定不一样
为何重载不能根据返回值判断?–答案:由于若是根据返回值判断,那么编译器编译的时候,若是参数相同,就不知道调用哪一个方法了
类的成员不写访问修饰时默认为default。默认对于同一个包中的其余类至关于公开(public),对于不是同一个包中的其余类至关于私有(private)。受保护(protected)对子类至关于公开,对不是同一包中的没有父子关系的类至关于私有。
Java中,外部类的修饰符只能是public或默认