这里写目录标题

  • 面试第一问:请做个自我介绍
    • 个人的基本信息,扬长避短
    • 突出自己的技能
    • 个人兴趣爱好与结尾
    • 总体案例
  • 软件测试基础面试题
    • 软件生存周期及其模型是什么?
    • 软件配置管理的作用?软件配置包括什么?
    • 你们公司测试的一个基本测试流程是什么?
    • 测试用例是什么?编写测试用例时会用到什么方法?
    • 如何提交高质量的软件缺陷(Bug)记录?
    • 简述BUG 管理工具的跟踪过程
  • 软件测试--自动化面试题
    • selenium中hidden或者是display = none的元素是否可以定位到?
    • selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
    • 如何提高selenium脚本的执行速度?
    • 如何设计高质量自动化脚本
    • 你的自动化用例的执行策略是什么?
    • 什么是持续集成?
    • 自动化测试的时候是不是需要连接数据库做数据校验?
    • Web定位
    • 如何去定位页面上动态加载的元素?
    • 如何去定位属性动态变化的元素?
    • 点击链接以后,selenium是否会自动等待该页面加载完毕?
    • webdriver client的原理是什么?
    • webdriver的协议是什么?
    • 什么是page object设计模式?
    • 怎样去选择一个下拉框中的value=xx的option?
    • 如何在定位元素后高亮元素(以调试为目的)?
    • 什么是断言和验证?
    • page object设置模式中,是否需要在page里定位的方法中加上断言?
    • page object设计模式中,如何实现页面的跳转?
    • 自动化测试用例从哪里来?
    • 你觉得自动化测试最大的缺陷是什么?
    • 什么是分层测试?
    • webdriver可以用来做接口测试吗?
    • get和post 的区别?
  • Android 和 ios 测试区别
  • App 测试中 ios 和 Android 有哪些区别呢?
  • 注意点:


  随着企业对于软件质量的重视,软件测试工程师倍受青睐,对于求职者的要求也在提高,不仅要求求职者具备扎实的理论功底,还要有丰富的实战经验,这就给软件测试工程师求职增加了难度。今天就给大家分享一些常见的软件测试面试题及答案。

面试第一问:请做个自我介绍

  • 面试问题第一问,99.99999%都是:请先做个自我介绍吧

个人的基本信息,扬长避短

1、年纪太大与太小,都不需要主动去说明。

  软件测试年龄大是弱势,如我年纪只有30+
例子:面试官您好,我叫***,来自于哪里,从事软件测试工作有几年了。

2、专业不对口也不要过多的去提及(提到了就会增加问你的概率)。

比如你的专业是机械专业,面试官就可能会问你为什么转到测试行业?什么机遇转到软件测试行业的
例子:面试官您好,我叫***,来自于哪里,从事软件测试工作有几年了。

比如你的专业是计算机专业
例子:面试官您好,我叫***,来自于哪里,计算机专业毕业后,从事软件测试工作有几年了。

二、突出自己的工作经验

  自己的项目经验(重点突出跟你面试公司相关或者同类型的项目)。

  比如公司从事的主要是app项目:

  以前主要是从事的web与app的项目,最近做的项目主要是app为主,做过不少的项目,也积累了不少的测试经验,能够独立完成产品的测试。

  还要突出自己在项目承担的角色

突出自己的技能

1、测试熟练的开发语言(Python中高级必备)
2、测试流程
3、测试需求分析
4、linux系统(熟练搭建测试环境)
5、数据库
6、接口测试
7、自动化测试

8、性能测试
9、安全测试

基于目前市场情况,基本前面7个必备,市场的竞争会越来越大,后期大家需要好好的学习。

个人兴趣爱好与结尾

简单说下就ok。
  例子:我平常喜欢看看书,有的时候也喜欢打打游戏,这个是我一个简单的自我介绍,您看,我这边还需要做什么补充吗?

总体案例

  面试官您好,我叫****,来自于***。做软件测试工作有N年了。在期间做了不少的项目,也积累了不少的测试经验,能够独立完成软件测试的测试工作。

  主要做过功能测试、app专项测试和接口测试方面的工作。对于linux、数据库、fiddler、jmeter的应用都比较熟悉。也用jmeter做过一些性能测试,最近一段时间也做了接口自动化测试,主要是用的python+requests框架实现的。一定要突出自己的技能优势。

  我平常喜欢看看书,有的时候也喜欢打打游戏,这个是我一个简单的自我介绍,您看,我这边还需要做什么补充吗?

  最后一点:对于自己“会”的重点强调,如果性能跟自动化不会就说只是了解一些,根据自己的情况来定,切记不要照搬。

技术人一定要坚持学习,越努力越幸福。

软件测试基础面试题

软件生存周期及其模型是什么?


 
  答:软件生存周期(Software life cycle)又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,知道失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每个时期又划分为若干个阶段,每个阶段有明确的任务。

软件配置管理的作用?软件配置包括什么?

 答:软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。软件配置包括如下内容:配置项识别、工作空间管理、版本控制、变更控制、状态报告、配置审计。

你们公司测试的一个基本测试流程是什么?

答:首先会召开需求分析会议,参加人员有产品、开发和测试,主要是探讨需求主要的一些功能点,完了之后,开发就排期进行开发,我们就根据主管写出来的计划、分配到的任务编写测试用例,写完之后会进行用例评审,有评审修改的就修改整理形成最终的用例版本,之后开发人员版本编译完成后,我们会依据测试用例来执行测试,测试过程中,提交bug,跟踪bug,直至关闭,测试完后编写测试报告。

测试用例是什么?编写测试用例时会用到什么方法?

答:测试用例是为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。测试脚本是为了进行自动化测试而编写的脚本,测试脚本的编写必须对应相应的测试用例。  测试用例的方法有两种,白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖;黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法。

如何提交高质量的软件缺陷(Bug)记录?

答:

  1. 通用UI要统一、准确。缺陷报告的UI要与测试的软件UI保持一致,便于查找定位。
  2. 尽量使用业界惯用的表达术语和表达方法,保证表达准确,体现专业化。
  3. 每条缺陷报告只包括一个缺陷。
  4. 不可重现的缺陷也要报告。
  5. 明确指明缺陷类型根据缺陷的现象,总结判断缺陷的类型。
  6. 明确指明缺陷严重等级和优先等级。
  7. 描述 (Description) ,简洁、准确,完整,揭示缺陷实质,记录缺陷或缺陷出现的位置。
  8. 短行之间使用自动数字序号,使用相同的字体、字号、行间距。
  9. 每一个步骤尽量只记录一个操作。
  10. 确认步骤完整,准确,简短。
  11. 根据缺陷,可选择是否进行图象捕捉。
  12. 检查拼写和语法缺陷。
  13. 尽量使用短语和短句,避免复杂句型句式。
  14. 缺陷描述内容。

简述BUG 管理工具的跟踪过程


  测试人员发现了 BUG,提交到 Bugzilla 中,状态为 new,BUG 的接受者为开发接口人员;开发接口将 BUG 分配给相关的模块的开发人员,状态修改为已分配,开发人员和测试确认BUG。如果是本人的 BUG,则设置为接收;如果是别的开发人员的问题,则转发出去,由下一个开发人员来进行此行为;如果认为不是问题,则需要大家讨论并确认后,拒绝这个 BUG,然后测试人员关闭此问题。 
  如果开发人员接受了 BUG,并修改好以后,将 BUG 状态修改为已修复,并告知测试在哪个版本中
可以测试。测试人员在新版本中测试,如果发现问题依然存在,则拒绝验证;如果已经修复,则关闭BUG。

软件测试–自动化面试题

selenium中hidden或者是display = none的元素是否可以定位到?

不可以,想点击的话,可以用js去掉dispalay=none的属性

selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

1.首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait)
2.在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加载完成前或是在下拉之后才能显示。
3.不同方式进行定位,与expected_conditions判断方法封装,循环判断页面元素出现后再操作;
4.开发人员规范开发习惯,如给页面元素加上唯一的name,id等。

如何提高selenium脚本的执行速度?

1.优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法;
2.减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开;
3.中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载;
4.使用Selenium grid,通过testNG实现并发执行。 在编写测试用例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
1.在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执行下面的操作;
2.多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
3.多用 try 捕捉,处理异常;
4.尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。

如何设计高质量自动化脚本

1.使用四层结构实现业务逻辑、脚本、数据分离。
2.使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性
3.对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。
4 测试用例设计中,减少测试用例之间的耦合度。

你的自动化用例的执行策略是什么?

1.自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;
2.有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;
3.有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

什么是持续集成?

频繁的将代码集成到主干,持续性的进行项目的构架,以便能能够快速发现错误,防止分支大幅度偏离主干

自动化测试的时候是不是需要连接数据库做数据校验?

  • UI自动化不需要
  • 接口测试会需要

Web定位

Selenium有几种定位方式?你最偏爱哪一种,为什么?
Selenium有八种定位方式:
与name有关的有三种:name、class_name、tag_name
与link相关的有两种:link_text、partitial_link_text
与id有关:id
全能选手:xpath、css_selector
如果存在id,我一定使用Id,因为简单方便,定位最快。其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位
如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。

如何去定位页面上动态加载的元素?

首先触发动态事件,然后再定位。如果是动态菜单,则需要层级定位。——JS实现(对动态事件封装)

如何去定位属性动态变化的元素?

先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)
属性动态变化也就是指该元素没有固定的属性值,可以通过:
JS实现,
通过相对位置来定位,比如xpath的轴,paren/following-sibling/percent-sibling
http://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564332.html

点击链接以后,selenium是否会自动等待该页面加载完毕?

不会的。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。

webdriver client的原理是什么?

在selenium启动以后,driver充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client.

webdriver的协议是什么?

WebDrive协议本身是http协议,数据传输使用json

启动浏览器的时候用到的是哪个webdriver协议?
-http

什么是page object设计模式?

1.通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法
2.用例层从页面层调用操作方法,写成用例
3.可以做到定位元素与脚本的分离

怎样去选择一个下拉框中的value=xx的option?

1.select类里面提供的方法:select_by_value(“xxx”)
2.xpath的语法也可以定位到

如何在定位元素后高亮元素(以调试为目的)?

-重置元素属性,给定位的元素加背景、边框

什么是断言和验证?

断言(assert):测试将会在检查失败时停止,并不运行后续的检查
优点:可以直截了当的看到检查是否通过
缺点:检查失败后,后续检查不会执行,无法收集那些检查结果状态
验证(vertify):将不会终止测试
缺点:你必须做更多的工作来检查测试结果:查看日志——>耗时多,所以更偏向于断言

page object设置模式中,是否需要在page里定位的方法中加上断言?

不需要,page页只做元素抓取和操作方法

page object设计模式中,如何实现页面的跳转?

初始化driver参数,Page类传driver参数

自动化测试用例从哪里来?

-手工用例中抽取

你觉得自动化测试最大的缺陷是什么?

-不稳定
-可靠性不强
-不易维护
-成本与收益

什么是分层测试?

1.数据层
2.接口层’
3.UI层

webdriver可以用来做接口测试吗?

不可以,webdriver是专门做web的UI自动化参数

get和post 的区别?

1、GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
2、传输数据的大小
使用GET请求时,传输数据会受到URL长度的限制。
对于POST,理论上是不会受限制的
3、安全性。POST的安全性比GET的高

Android 和 ios 测试区别

App 测试中 ios 和 Android 有哪些区别呢?

1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用;

2.多分辨率测试,Android 端 20 多种,ios 较少;

3.手机操作系统,Android 较多,ios 较少且不能降级,只能单向升级;新的 ios系统中的资源库不能完全兼容低版本中的 ios 系统中的应用,低版本 ios 系统中的应用调用了新的资源库,会直接导致闪退(Crash);

4.操作习惯:Android,Back 键是否被重写,测试点击 Back 键后的反馈是否正确;应用数据从内存移动到 SD 卡后能否正常运行等;

5.push 测试:Android:点击 home 键,程序后台运行时,此时接收到 push,点击后唤醒应用,此时是否可以正确跳转;ios,点击 home 键关闭程序和屏幕锁屏的情况(红点的显示);

6.安装卸载测试:Android 的下载和安装的平台和工具和渠道比较多,ios 主要有 app store,iTunes 和 testflight 下载;

7.升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于 Android 若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)

注意点:

1.并发(中断)测试:闹铃弹出框提示,另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停;

2.数据来源的测试:输入,选择、复制、语音输入,安装不同输入法输入等;

3.push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;应用在开发、未打开状态、应用启动且在后台运行的情况下是 push 显示和跳转否正确;推送消息阅读前后数字的变化是否正确;多条推送的合集的显示和跳转是否正确;

4.分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确;

5.触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会 crash 等

  在面试的过程中,从回答问题的方式,就可以看出这个人是否有自信,是否敢于承担责任。当然,良好的准备才是打赢胜仗的基础,而只有知己知彼,才能百战不殆。如果你想学习更多软件测试相关的技能及面试技巧,加群:893694563,分享技术面试学习的资料

❤️❤️熬夜整理!最新零基础至高级自动化测试面试题,题多涵盖面广(建议收藏)❤️❤️相关推荐

  1. 常见Python自动化测试面试题(含答案)建议收藏!

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

  2. 最新零基础C++逆向辅助+过驱动保护+lua

    最新零基础C++逆向辅助+过驱动保护+lua 地址:资源共享吧 最新零基础C++逆向辅助+过驱动保护+lua-资源共享吧-专业共享VIP视频 最新零基础C++逆向辅助+过驱动保护+lua https: ...

  3. 从零基础到高级程序员需要走多久?

    原文:从零基础到高级程序员需要走多久? 绝大多数计算机专业的学生是零基础,即时通讯软件 其中不乏被调剂的.等到毕业之际,有的成了大神,进入BAT或者google微软,有的还是零基础-- 我高中搞竞赛, ...

  4. python零基础实例-零基础学习Python开发练习100题实例(1)

    零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2864浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...

  5. python基础代码事例-零基础学习Python开发练习100题实例(2)

    零基础学习Python开发练习100题实例(2) 2018-02-26 13:11:39 1934浏览 11.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个 ...

  6. python入门经典100题-零基础学习Python开发练习100题实例(1)

    零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2854浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...

  7. 零基础如何学习自动化测试

    现在很多测试人员有些急于求成,没有任何基础想当然的,要在一周内上手自动化测试. 在自动化的过程中时候总有人会犯很低级的问题,有语法问题,有定位问题,而且有人居然连__init__.py 文件名都弄错误 ...

  8. 2021最新零基础入门—网站建站教程(新手必备)

    前言 相信很多新用户会有这样的疑惑,我要做个网站,到底要使用什么产品,如何能快速完成网站建站呢?搭建网站有两种选择,一种是直接购买建站模板,另一种则是自行建站.两类建站方式对比如下: 建站方式 优势 ...

  9. 零基础数据挖掘入门系列(一) - 赛题理解

    思维导图:零基础入门数据挖掘的学习路径 1. 写在前面 零基础入门数据挖掘系列是记录自己在Datawhale举办的数据挖掘专题学习中的所学和所想, 该系列笔记使用理论结合实践的方式,整理数据挖掘相关知 ...

最新文章

  1. java的关键字与保留字
  2. java开发webservice_Java WebService开发详解
  3. 脚本:获取CSDN文章的访问量
  4. 手机网页里的模态对话框
  5. python获取post请求中的所有参数_Django从POST reques获取请求参数
  6. Android使用Sugar ORM创建数据库报no such table:...的解决方法
  7. CentOS 配置防火墙操作实例(启、停、开、闭port)
  8. 机器视觉开源处理库汇总-介绍n款计算机视觉库/人脸识别开源库/软件 -几种图像处理类库的比较-视觉相关网站...
  9. 利用R语言绘制世界航班路线图
  10. linux 使用VI命令怎么删除输入内容,linux系统vi编辑器常用命令及使用方法。
  11. dcn网络与公网_DCN网络安全
  12. ISO15765协议
  13. 中国商业环境发展的五个阶段浅析
  14. 16路彩灯控制器 FPGA-Verilog
  15. 中国计算机发展史 博客,“博客”(Blog)在中国的发展历程
  16. 华为云有没有实力挑战阿里云?
  17. 软件工程——软件开发阶段(概要设计、详细设计)
  18. 日“隼鸟二号”首次降落“龙宫”取样
  19. 【纪中受难记】——Day15:今晚吃烧烤(最后吃了火锅)
  20. HTML实例1 _网页文章

热门文章

  1. linq和lambda_最小起订量:应用于模拟对象的Linq,Lambda和谓词
  2. AndroidStudio调用系统相册选择图片并显示、将图片保存到私有空间
  3. Fidder快速上手使用
  4. fiddler mac
  5. ps磁性套索工具如何抠图
  6. Mac新手入门以及常用软件推荐
  7. 【JavaScript】Interview必背(详细版)
  8. Augustus操作指南
  9. 什么是节流(throttling)和防抖(debouncing)?
  10. VScode调用KEIL-MDK