软件测试常见面试题汇总

1、专业不对口,你为什么选择软件测试
首先,面试官是为你对于“软件测试行业”的认知,其次是考核你对于未来职业发展方向的看法,如果你回答只是简单的这个行业简单、容易、工资高,这显然不是面试官想要得到的。你应该从一下几点回答:(仅供参考) 
1、自身兴趣,喜欢软件测试工作,喜欢找BUG。  
2、 行业发展,测试行业属于朝阳行业,可持续发展。  
3 、缺口大,目前行业内人较少,按照黄金比例国内严重不足。  
4 、未来发展,随着国内对于软件质量越来越重视,发展将非常广阔。  
5、 职业寿命长,积累行业经验。  
6 、薪酬,目前测试薪酬已经可以跟开发持平了。
2、正交实验法
正交试验设计(Orthogonal experimental design)是研究多因素多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是分式析因设计的主要方法。是一种高效率、快速、经济的实验设计方法。
01、用正交表设计测试用例的步骤
(1) 有哪些因素(变量)
(2) 每个因素有哪几个水平(变量的取值)
(3) 选择一个合适的正交表(或用工具生成)
(4) 把变量的值映射到表中
(5) 把每一行的各因素水平的组合做为一个测试用例
(6) 加上你认为可疑且没有在表中出现的组合
02、如何选择正交表
考虑因素(变量)的个数
考虑因素水平(变量的取值)的个数
考虑正交表的行数
取行数最少的一个
3、软件的生命周期
立项,需求分析,设计、编码、测试,发布,运行维护,淘汰
4、Python的数据类型有什么,分别有什么特点
不可变数据:Number(数字)、String(字符串)、Tuple(元组)
可变数据:List(列表)、Dict(字典,键值对存储,键不能重复)、Set(集合,不重复)
5、软件测试的类型
按照开发阶段划分:
单元测试:模块测试,对软件的最小单位程序模块进行正确性检验
集成测试:组装测试,检验程序单元或部件的接口关系
确认测试:有效性测试,模拟环境下,验证软件是否和预期一致
系统测试:真实环境下运行系统,检验软件能否和系统(硬件,外设,网络,支持平台等)正确
配置链接,是否满足用户需求
验收测试:依照验收文档对整个系统进行测试评审,决定是否接收或拒收
按照测试技术划分:
黑盒测试:通过软件的外部表现来发现其缺陷和错误,不考虑内部结构和处理过程,通过测试来
检测每个功能是否能正常使用
作用:发现功能不正确或者遗漏
界面错误
输入和输出错误
数据库访问错误
性能错误
初始化和终止错误
白盒测试:对程序的内部结构的分析检测,结构测试
灰盒测试:关注输出对输入的正确性,同时也关注内部表现
按照代码运行划分:
静态测试:不实际运行被测对象,静态的检查程序代码界面和文档中可能存在的错误
代码测试
界面测试
文档测试
动态测试:运行被测对象,输入数据,检查实际输出结果和预期结果是否一致
按照软件特性分类:
功能测试:黑盒测试的一方面,检查软件功能是否符合需求
逻辑功能测试
界面测试
易用性测试
安装/卸载测试
兼容性测试
性能测试:功能的另一个指标,在特定时间空间条件下,是否使用正常
安全性测试:系统的保护机制是否在实际应用中对系统进行保护
其他分类:
回归测试:对软件的新版本测试时,重复执行之前版本的所有测试用例,验证之前bug被修复,
并且修复这些bug后没有引发新的bug
冒烟测试:对一个新版本进行系统的大规模测试之前,快速验证软件的基本功能是否实现,也成
可测性测试
随机测试:基于经验和直觉,发现一些边缘性错误
monkey测试:随便乱点,不带主观意识和想法,让一些意想不到的操作造成错误的结果。
6、HTTP和HTTPS的区别
1)HTTPS协议需要到ca申请证书,一般免费证书很少,需要缴费
2)HTTPS 具有安全性的ssl加密传输协议
3)连接方式不同,http端口号80,HTTPS端口号是443
4) HTTPS协议是由ssl+http协议够贱的接近性加密传输,身份认证的网络协议,比http协议安全
7、什么是软件测试,测试的定义
是指对软件开发过程中产生的所有产品,包括程序以及相关文档进行测试,通过检查和提供客观证据来证实指定的需求是否满足,以及特定的目的功能或应用是否已经实现
8、与界面处测试相比,接口测试有什么区别
接口测试没有具体的页面
他是通过接口规范文档上的调用地址,请求参数,拼接请求信息
然后发送请求,检查返回结果
只需测入参和出参就行
9、作为一个好的测试人员应该具备哪些素质
善于说服,不放过蛛丝马迹,具有创造性,追求完美,具有洞察力,幽默,善于学习
10、如果今天你被公司录取,你有什么规划

11、Linux中压缩和解压
bzip2 压缩文件,自动生成后缀名为.bz2 的压缩文件,原文件消失
bunzip2 压缩文件名1 2 3 解压,可多个
gzip 压缩文件,自动生成后缀名为.gz 的压缩文件,原文件消失
gunzip 压缩文件名1 2 3 解压,可多个
tar 压缩或解压文件或目录,不会对源文件有任何影响
12、什么是功能测试、性能测试、兼容性测试
功能测试:黑盒测试的一方面,检查软件功能是否符合需求
性能测试:功能的另一个指标,在特定时间空间条件下,是否使用正常
兼容性测试是指检查软件之间能否正确地进行交互和共享信息
13、假如有一个网站,你会怎么测试,说一下测试思路
① 首先,查找需求说明、网站设计 m 等相关文档,分析测试需求。 制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:
功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试
② 设计测试用例:
功能性测试可以包括,但不限于以下几个方面:
链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。
③ 提交功能的测试。
多媒体元素是否可以正确加载和显示。
多语言支持是否能够正确显示选择的语言等。
④ 界面测试可以包括但不限于以下几个方面:
页面是否风格统一,美观;页面布局是否合理,重点内容和热点内容是否突出;控件是否正常使用;对于必须但为安装的空间,是否提供自动下载并安装的功能;文字检查
⑤ 性能测试一般从以下两个方面考虑:
压力测试;负载测试;强度测试
数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
⑥ 安全性测试:
1 基本的登录功能的检查 2 是否存在溢出错误,导致系统崩溃或者权限泄露 3 相关开发语言的常见安全性问题检查,例如 SQL 注入等。4 如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持
⑦ 兼容性测试,根据需求说明的内容,确定支持的平台组合:浏览器的兼容性;操作系统的兼容性;软件平台的兼容性;数据库的兼容性
开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。定期评审,对测试进行评估和总结,调整测试的内容。
14、测试用例的定义,测试用例的作用
测试用例:设计一个情况,用来检验程序在某种情况下是否能达到和预期结果一致的运行结果
测试用例的作用:
指导测试实施
规划测试数据
是编写测试脚本的设计规格说明书
作为测试结果的度量标准
作为分析缺陷的标准
15、软件测试的对象是什么?
程序,数据,和文档
16、白盒测试都有哪些方法?
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试
语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
17、你对软件测试工作的认识?
测试工作的定义和目的
软件测试的定义:是指对软件开发过程中产生的所有产品,包括程序以及相关文档进行测试,通过检查和提供客观证据来证实指定的需求是否满足,以及特定的目的功能或应用是否已经实现
软件测试的目的:
1)以最少的人力物力找出软件中潜在错误和缺陷,保证软件质量,避免商业风险
2)记录测试过程中的文档和数据,为后续项目开发和测试过程提供输入,避免同样错误的发生
3)高效的测试管理手段,会提高软件测试的的效率和软件产品的质量
18、没有产品说明书和需求文档的情况下能够进行黑盒测试吗?
实际上没有任何文档的时候,测试人员是能够进行黑盒测试的,这种测试方式我们可以称之为探索测试,具体做法就是测试工程师根据自己的专业技能、领域知识等不断的深入了解测试对象、理解软件功能,进而发现缺陷。
在这种做法基本上把软件当成了产品说明书,测试过程中要和开发人员不断的进行交流。尤其在作项目的时候,进度压力比较大,可以作为加急测试方案。最大的风险是不知道有些特性是否被遗漏。
19、测试用例在软件测试中的作用?(重复)
指导测试实施
规划测试数据
是编写测试脚本的设计规格说明书
作为测试结果的度量标准
作为分析缺陷的标准
20、如果有一个门,怎么测试,说一下思路?
外形,颜色,质地,安全性,承重能力,质量等等,考虑多个方面
21、简单说一下数据库的增删改查
新建数据库 : create database 库名;
删除数据库:drop database 库名;
创建表:create table 表名
修改表:alter table 表名
添加数据:insert into 表名(属性名1,属性名2,属性名3) values (值1,值2,值3)
删除:delete from 表 where
查看 select * from 表
22、说一下自动化测试的特点
可重复性:
可程序化:可以进行编程,对格式进行规范和标准
可靠:没有情绪化,稳定
提高测试的精确度
提升测试资源的利用率:人力资源,时间资源,
23、说一下软件开发模型和软件测试的模型
软件开发模型:
瀑布模型,按阶段划分,只关注后续阶段
快速原型模型,
增量模型:把待开发软件系统模块化,增量组件,分批次进行分析设计等
迭代模型:强调开发的深入
螺旋模型:风险分析
软件测试模型:
v模型:编码完成之后进行测试
w模型:测试和开发并行
H模型:将测试活动独立出来,只要某个测试达到准备就绪点,就可以开展测试
X模型:针对程序片段进行分离的编码和测试,之后通过频繁的交接,集成合称为可执行程序
24、在接口测试中get请求和post请求有什么区别
GET请求指定的页面信息, 并返回实体主体。
post:向指定资源提交数据进行处理请求, 数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
25、边界值的上点、内点和离点(10,20】 左开右闭
上点:10,20
内点:15
离点:11,21
26、selenium元素定位方式
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name() #不能保证唯一,基本不用
find_element_by_link_text()
find_element_by_paryial_link_text() #部分链接文本
find_element_by_xpath()#当所有的都找不到是,xpath可以找到,最精确
find_element_by_css_selector() #
27、MongoDB和MySQL数据库的区别
28、说一下如何设计出高效的测试用例

有效性:测试用例是测试人员测试过程中的重要参考依据。
可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的标准。
29、简述软件测试周期
软件测试生命周期:
获取测试需求——>编写测试计划——>制定测试方案——>开发和设计测试用例——>执行测试
——>提交缺陷报告——>测试的分析与评审——>提交测试总结——>准备下一版本的测试
30、说一下性能测试包含什么内容
一般性能测试:验证软件在正常情况和系统条件下能否满足性能指标。
负载测试:验证系统在一定压力下延长系统运行时间,直到系统性能出现"拐点"
压力测试: 验证系统在已经处于 极限负载下或者某指标已经处于饱和状态下系统性能的表现。
稳定性测试:验证系统在连续运行的情况下下,查看系统的各项性能指标。- - MTBF (错误发生的平均时间间隔)
大数据量测试:验证系统在使用大批量数据对系统产生压力或影响的情况下系统各种指标是否正常。
配置测试:验证系统在不同的软件和硬件配置的情况下,找出系统各项资源的最优分配
31、在禅道中怎么提交bug?
32、说一下http常见的响应状态码?

100 继续。客户端应继续其请求
200 请求成功
301 资源永久被转移到其他url
404 请求的资源或网页等不存在
500 内部服务器错误
33、说一下软件开发模型?
软件开发模型:
瀑布模型,按阶段划分,只关注后续阶段
快速原型模型,
增量模型:把待开发软件系统模块化,增量组件,分批次进行分析设计等
迭代模型:强调开发的深入
螺旋模型:风险分析
34、说一下web端元素定位失败的原因?
1.动态id定位不到元素
解决办法:使用xpath的相对路径方法查找到该元素。
2.iframe原因定位不到元素
原因:一个网页嵌套了多个iframe/frame,直接定位是不行的。
解决办法:要先进入对应的iframe/frame。
3.点击速度过快 页面没有加载出来就需要点击页面上的元素。
4、通过class定位不到元素
原因是该iframe中有多个相同的class
5、目标元素是否直接可见/是否需要鼠标动作才能显现出来
6、页面操作过程中的窗口弹框alert也会影响页面定位和操作,需要先处理alert
7、页面部分超链接点击后会在新窗口中打开,目标元素在新窗口中时,需要进行窗口切换
35、说一下测试和调试的区别?
两者在主体、目标、方法和思路上有所不同
1、测试的对象包括软件开发中的文档数据以及代码,调试的对象一般来说只是代码
2、测试可以计划,预先制定测试用例和过程,工作进度可以度量,而调试的过程以及持续时间
难以度量
3、测试从已知条件开始,使用预先定义的过程,会有预期的结果,调试是从位置的条件开始,结束的过程一般不可预计
36、简单说一下缺陷的生命周期?
缺陷的生命周期
发现缺陷,提交缺陷,确认缺陷,分配缺陷,修复缺陷,验证缺陷(验证不成功则重新提交),关闭缺陷
37、针对表单的测试,主要的测试内容?
表单一般指在界面进行数据提交操作的,包括新增和修改数据。例如注册
它涉及到的测试包括以下方面,每个点的验证都要考虑有效及无效输入的情况:
1)输入框测试 ——长度、数据类型、必填、重复、空格、sql注入以及一些业务相关约束;
2)下拉框测试 ——默认值、数据完整性/正确性、第一个/最后一个/中间一个选取、手动输入值模糊匹配、联动选择;业务常见选取的操作;
3)图片、视频、excel、txt等文件上传测试 ——大小、尺寸、格式、数量、文件内容规则验证;
4)表单提交按钮测试 ——是否支持回车/单击、快速多次点击是否重复提交表单、网络中断(弱网)提交、提交之后是否有提示、提交后内容是否加密、提交是否做权限校验控制、多人针对表单同时操作的场景测试
38、是不是所有已经发现的缺陷都需要被修复?为什么?
从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的软件缺陷。测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复。发生这种现象的主要原因如下:
-没有足够的时间资源。在任何一个项目中,通常情况下开发人员和测试人员都是不够用的,而且在项目中没有预算足够的回归测试时间,再加上修改缺陷可能引入新的缺陷,因此在交付期限的强大压力下,必须放弃某些缺陷的修改。
-有些缺陷只是特殊情况下出现,这种缺陷处于商业利益考虑,可以在以后升级中进行修复。
-不是缺陷的缺陷。我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理。
最后要说的是,缺陷是否修改要由软件测试人员、项目经理、程序员共同讨论来决定是否修复,不同角色的人员从不同的角度来思考,以做出正确的决定。
39、cookies和session的区别?
cookie数据保存在客户端,session数据保存在服务端。
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
40、说一下软件测试的原则?
1、不能执行穷尽测试
2、测试的标准建立在用户需求之上
3、基于质量第一的思想展开测试
4、测试要尽早介入
5、测试计划时做好测试的前提
6、测试用例式设计出来的
7、缺陷存在群集现象,一段程序中发现的错误数越多,存在的错误概率越大
8、测试中的杀虫剂现象,测试人员对同一测试对象进行的测试次数越多,发现的缺陷就会越来
越少的现象。测试人员对测试软件过于熟悉,形成思维定势
9、重视测试过程中的文档,妥善保存
10、重视回归测试
11、不可忽视测试用例,排除随机性
41、什么是回归测试,回归测试的重点是什么?
回归测试:对软件的新版本测试时,重复执行之前版本的所有测试用例,验证之前bug被修复,
并且修复这些bug后没有引发新的bug
重点:验证缺陷得到了正确的修复,同时对系统的变更,没有影响以前的功能
42、简述一下用postman发送一个有参数的post请求的步骤?
43、数据库几大范式内容,及其之间有何联系?

范式分类(NF)
第一范式(1NF):关系中的所有属性值均为简单属性,每个属性都不可再分
第二范式(2NF):先满足第一范式,且每一个非主键字段完全依赖于主键
第三范式(3NF):先满足第二范式,且非主键之间不能存在依赖关系
一个基本的关系型数据库至少要满足第一范式,一个完整的的关系型数据库至少要满足
第三范式
44、说一下缺陷的优先级怎么划分?
缺陷的优先级(p)
立即修复,高优先级,正常排队,低优先级
45、说几个HTML常用标签?
p,h,font,br,hr,div,img,a,span,form,
46、主键有什么特点,自增怎么实现?
唯一不重复不为空
创建时 primary keycreate table 表名(
属性名1 数据类型 primary key,
属性名2 数据类型
);
修改添加
alter table 表名 add constraint 主键约束名 primary key(属性名);
47、shell里面的vi编辑器有几种模式
三种,命令模式,编辑模式,末行模式
48、如果没有接口文档,怎么做接口测试
询问开发人员
测试人员自己抓包获取数据和信息
49、在MySQL中查询某个表的所有信息
select * from 表名
50、虚拟机上搭建linux的步骤
1.在windows系统下先安装好虚拟机软件,然后下载一个linux系统的镜像文件,常用的linux系统centos
2.打开vm,选择自定义安装。
3.这里选择安装来源,ios镜像。这里选第三项稍后安装。
4.这里选择客户机操作系统类型,版本可以根据自己下载的iso而定。
5、选择的是虚拟机系统的安装位置
6、这里制定磁盘大小,由于我们建的虚拟机系统,所以所谓的磁盘大小其实只是一个文件与我们的真是硬盘无多大关联,推荐值以上可以随意安排。剩下的基本都是默认下一步下一步即可。
7、虚拟机各项参数选择完成后,要对系统里设置进行编辑,之前没有指定操作系统,所以这里要选用ISO映像文件了。如果此处也不指定,在启动操作系统安装时会提示你加入系统文件的。
8、启动该虚拟机了,进入到centos的安装界面
9、安装基本下一步就行,安装完成
51、说一下selenium在Python中的配置
1、安装和配置Python环境(配置环境变量和验证)
2、安装Selenium
命令行,以管理员身份运行
使用命令pip install Selenium 或者 easy_install Selenium
3、设置浏览器驱动
两种方式:
1、专门设置一个驱动程序所在的目录,然后将该目录设置到path变量中,把文件
geckodriver.exe放到文件夹中
2、直接将geckodriver.exe 放在Python的安装目录下即可
52、数据库中DML和DDL的区别
DDL数据定义语言实现对数据库的创建修改和删除操作
DML数据操作语言实现对数据库中数据的增删改查操作
53、TCP和UDP的区别
TCP协议:传输控制协议,面向连接,可靠(三次握手),速度慢,效率低, 例如打电话,保证连接之后再接收
UDP协议:用户数据报协议,(QQ,WX)无连接,不可靠,速度快 发送少量数据 例如对讲机,不在就收不到
54、测试用例和测试脚本之间的关系
测试用例是编写测试脚本的设计规格说明书
测试用例为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
测试脚本是为了进行自动化测试而编写的脚本。
测试脚本的编写必须对应相应的测试用例
55、接口测试的主要测试点
检查数据的交换
传递和控制管理过程
系统间的相互逻辑依赖关系
56、简单说一下Python中列表、元祖、字典、集合各自的特点
列表(list)一组元素,类似数组 list1 = [1,23,55 ]
元祖 类似于枚举tuple,值不能被更改 tuple1 = (1,2,3)
字典 类似于map,存储key_value对应值的一种类型,以键值对形式存在的东西都是用这个来存
储,dict,例如:stu_score = {”qq“:88,”ww“:99},字典的key–value中的key值是不能重
复的
集合 set是一组不能重复的值组成的,set1 = {1,2,3}
57、网页的性能测试主要包含哪些方面的测试?
网站压力测试、稳定性测试、并发测试等
58、数据库中的事务是什么,有什么特征?
事务是数据库操作最小单元,把多件事当一件事来处理,是一组不可在分割的操作集合。作为单个逻辑工作单元执行一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。
特性ACID(原子性、一致性、隔离性、持久性)
原子性:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,,因此事务操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有一点影响。
一致性:一致性是指事务必须使数据库从一个一致性状态转换到另一个一致性状态,就是说事务执行前后都必须处在一致性状态。
隔离性:隔离性使当多个用户访问数据库时,比如操作同一张表,数据库开启的每一个事务,不能被其它事务干扰,多个并发事务之间相互隔离。
持久性:持久性是指一个事务一旦提交,对数据库中数据的改变是永久的,即使是数据库系统遇到故障也不会丢失提交的事务操作。
59、工作中主要的职责是什么?主要负责什么模块?
60、软件评审主要有什么人员参加?目的是什么?

参加人员:客户、项目经理、开发人员、测试人员。
目的:查看软件在未正式投入运行前是否还存在问题。对于不同软硬件平台能否正常运行,是否存在着与客户理解不一致的地方,同时可以对一些可以改进的地方再进行修改。
61、说一下linux常用命令?
62、怎样提高数据库查询效率?

建立索引
使用存储过程
优化SQL语句,减少或避免多表连结
63、什么是正向用例,什么是反向用例,为什么要正向要写前面?
64、缺陷的属性?

缺陷的属性:
缺陷类型
缺陷严重程度
缺陷优先级
缺陷状态
缺陷起源
缺陷来源
缺陷根源
65、冒烟测试的概念?
对一个新版本进行系统的大规模测试之前,快速验证软件的基本功能是否实现,也成可测性测试
66、测试结束的标准是什么?
1.基于“测试阶段”的原则:每个软件的测试一般都要经过单元测试、集成测试、系统测试这几个阶段,
2.基于“测试用例”的原则:在功能测试用例通过率达到100%,非功能性测试用例达到95%以上,允许正常结束测试。但是使用该原则作为测试结束点时,把握好测试用例的质量,非常关键。
 3.基于“缺陷收敛趋势”的原则:软件测试的生命周期中随着测试时间的推移,测试发现的缺陷图线,首先成逐渐上升趋势,然后测试到一定阶段,缺陷又成下降趋势,直到发现的缺陷几乎为零或者很难发现缺陷为止。
4.基于“缺陷修复率”的原则:严重错误和主要错误的缺陷修复率必须达到100%,不允许存在功能性的错误;次要错误和一般错误的缺陷修复率必须达到85%以上,允许存在少量功能缺陷,后面版本解决;对于较小错误的缺陷修复率最好达到60%~70%以上。对于测试建议的问题,可以暂时不用修改。
5.基于“验收测试”的原则:通过用户的测试验收,就可以立即终止测试部门的测试;如果客户验收测试时,发现了部分缺陷,就可以针对性的修改缺陷后,验证通过后递交客户,相应测试也可以结束。
6.基于“覆盖率”的原则:
测试用例的“覆盖率”覆盖了客户提出全部的软件需求,包括行业隐性需求、功能需求和性能需求等等,只要测试用例执行的覆盖率达到100%,基本上测试就可以结束。
7.基于“项目计划”的原则:大多数情况下,每个项目从开始就要编写开发和测试的Schedule,相应的在测试计划中也会对应每个里程碑,对测试进度和测试结束点做一个限制,一般来说都要和项目组成员(开发,管理,测试,市场,销售人员)达成共识,团队集体同意后制定一个标准结束点。如果项目的某个环节延迟了,测试时间就相应缩短。大多数情况下是所有规定的测试内容和回归测试都已经运行完成,就可以作为一个结束点。
67、说一下软件测试按开发阶段分为哪几类
按照开发阶段划分:
单元测试:模块测试,对软件的最小单位程序模块进行正确性检验
集成测试:组装测试,检验程序单元或部件的接口关系
确认测试:有效性测试,模拟环境下,验证软件是否和预期一致
系统测试:真实环境下运行系统,检验软件能否和系统(硬件,外设,网络,支持平台等)正确
配置链接,是否满足用户需求
验收测试:依照验收文档对整个系统进行测试评审,决定是否接收或拒收
68、HTTP请求的基本格式
· 请求行
请求头部
空行
请求数据
69、接口测试的适用场景?
复杂的系统,功能多的系统
底层提供数据的系统
中心服务系统
为上层应用服务的系统
一般用于多系统间交互开发
适用于为其他系统提供系统服务的底层框架系统和中心服务系统
适用于一个上层系统中的服务层接口
平台越复杂,系统越庞大,接口测试效果越明显
70、union和union all的区别
1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认专规则的排序;
2、union all: 对两属个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;
71、手工测试和自动化测试的优缺点
(1)谁发现的缺陷多:手工测试,人是有智慧的,可以自觉的判断更多的问题和现象,找出更多的缺陷
(2)测试质量的高低?手工测试的质量更高,可以发现更多计划之外的缺陷
(3)与开发的关系?自动化测试需要编写程序的脚本,会有手工测试做不到的方面,也会有做不到手工测试的方面
(4)二者各自的局限性
手工测试:相比而言,工作效率低,容易情绪化,导致工作内容不稳定
自动化测试:不灵活,不能像人一样去思考
72、TCP的三次握手
第一次握手
客户主动(active open)去connect服务器,并且发送SYN 假设序列号为J,服务器是被动打开(passive open)
第二次握手
服务器在收到SYN后,它会发送一个SYN以及一个ACK(应答)给客户,ACK的序列号是 J+1表示是给SYN J的应答,新发送的SYN K 序列号是K
第三次握手
客户在收到新SYN K, ACK J+1 后,也回应ACK K+1 以表示收到了,然后两边就可以开始数据发送数据了
73、自动化测试的定义
使用工具,局部或者全部代替人工进行操作,按照软件测试的标准和规范,提升测试效率,会模拟所有的人工操作行为
74、之前在上家公司有用过哪些管理工具?
禅道和SVN
75、你认为在测试过程中哪一步最重要?
需求分析和用例设计
76、软件测试的目的
1)以最少的人力物力找出软件中潜在错误和缺陷,保证软件质量,避免商业风险
2)记录测试过程中的文档和数据,为后续项目开发和测试过程提供输入,避免同样错误的发生
3)高效的测试管理手段,会提高软件测试的的效率和软件产品的质量
77、如何使一个bug的修复成本最低
尽早发现
尽早参与项目,可以帮助我们熟悉项目,开展测试工作
在进行测试之前,对要测试的功能进行一个优先级的划分比如:半复用的项目,新研发的功能优先级应该排前面。全新的项目,应该根据的项目的2 8原则,80%缺陷隐藏在20%的代码里,所以我们应该着重去测试这20%的代码,而不是在其他功能上花费大量的时间去做测试。那么如何去确定20%的代码呢?确定功能是否常用的,复杂的,开发人员的技术水平,开发人员的业务成熟度,核心的功能等等。依据这些去调研,将功能的测试分优先级,才能帮助你更早去发现bug。
78、你认为最好测试工作的关键是什么
对需求的理解和分析
1.明确测试的目标,增强测试计划的实用性
2.坚持“5W”规则,明确内容与过程
利用“5W”规则创建软件测试计划,可以帮助测试团队
理解测试的目的(Why )
明确测试的范围和内容(What )
确定测试的开始和结束日期(When )
指出测试的方法和工具(How )
给出测试文档和软件的存放位置(Where )
3.采用评审和更新机制,保证测试计划满足实际需求
4.分别创建测试计划与测试详细规格、测试用例
79、你说一下Python的短路原则
对于and来说,只要第一个结果计算为假,那么另一个结果不会被计算,直接判断为假
对于or来说,只要第一个结果计算为真,那么另一个结果不会被计算,直接判断为真。
80、Python的特点
解释型语言
动态语言,变量可以更改,弱类型语言
交互式语言,可在终端直接书写代码
面向对象语言 封装,多态,继承
跨平台语言,运行在不同操作系统中
81、单元测试和集成测试由谁来做?
测试
82、接口测试的意义和作用?
接口测试主要测试系统各个组件之间接口,以及系统与外部系统之间的交互点
可以发现很多在页面上操作发现不了的bug
检查系统的异常处理能力
检查系统的安全性、稳定性
前端随便变,接口测好了,后端不用变
83、Python中list怎么去重?
循环或者转为set,然后再转为list
84、说一下常见的操作系统
DOS、UNIX、Linux、windows、Mac OS
iOS、Android
85、在selenium中,如果元素的属性是动态变化的,如何定位元素?
(1)根据固定的属性定位
(2)根据相对关系定位:其附近的父节点、子节点、兄弟节点定位
(3)根据DOM顺序index定位:该元素在主文档或某级父节点中的index,然后根据index可轻松定位
(4)根据部分元素属性定位:
xpath中提供了三个非常好的方法来为我们定位部分属性值:
driver.find_element_by_xpath
("//div[contains(@id, ‘btn-attention’)]")
driver.find_element_by_xpath
("//div[starts-with(@id, ‘btn-attention’)]")
driver.find_element_by_xpath
("//div[ends-with(@id, ‘btn-attention’)]")
86、说一下电脑由几大硬件组成,分别有什么功能?处理器算不算CPU
CPU(中央处理器):运算器和控制器组成
主机板(主板):连接各个功能部件
存储器:存储程序和数据的记忆单元集合,可读/写其中的数据
显卡(GPU):分为独立显卡和集成显卡,在计算机系统中将要显示的数据信息进行转换,转换完成后并提交给显示器,控制显示器能够显示正确数据信息。
总线:在各个部件之间传送信息
芯片组:在主板上起到了管理的作用,对主板上各种硬件和接口提供支持和管理操作
87、测试环境相关的软件类别,常见(常用的)测试环境的组合?
测试环境相关的软件类别

一、操作系统:Windows(Server)、Linux必须会安装
二、数据库系统:Mysql、MongoDB、SQL Server、Oracle…
三、服务器应用软件:IIS(Windows系统特有的)、Apache、Tomcat(Apache基金会)、Ngnix
四、开发语言环境:(Web环境)PHP语言环境(.php)、JAVA开发环境(.jsp)、.net开发环境
五、其他软件或者工具,视集体的项目而定

常见(常用的)测试环境的组合:
一、Linux系统+MySQL+Apache/Ngnix+PHP
二、Linux + MySQL/Oracle + Tomcat + Java
三、Windows +SQL Server + IIS + .Net
88、进行了完美的黑盒测试,还有必要进行白盒测试吗?
有必要,两个测试方法测试的内容不一样,黑盒测试主要关注被测软件的功能实现,而不是内部逻辑。白盒测试需要对系统内部的结构和工作原理有一个清楚的了解。举个例子:输入三条边的长度,判断三角形的类型。输入的数据是:1、1、√2,这是一个等腰直角三角形,根据代码,我们可以进行判断,但是输入值,不行,√2无法输入。
89、文档测试主要包含什么内容?
在国内软件开发管理中,文档管理几乎是最弱的一项,因而在测试工作中特别容易忽略文档测试也就不足为奇了。要想给用户提供完整的产品,文档测试是必不可少的。文档测试一般注重下面几个方面:
文档的完整性:主要是测试文档内容的全面性与完整性,从总体上把握文档的质量。例如用户手册应该包括软件的所有功能模块。
描述与软件实际情况的一致性:主要测试软件文档与软件实际的一致程度。例如用户手册基本完整后,我们还要注意用户手册与实际功能描述是否一致。因为文档往往跟不上软件版本的更新速度。
易理解性:主要是检查文档对关键、重要的操作有无图文说明,文字、图表是否易于理解。对于关键、重要的操作仅仅只有文字说明肯定是不够的,应该附有图表使说明更为直观和明了。
文档中提供操作的实例:这项检查内容主要针对用户手册。对主要功能和关键操作提供的应用实例是否丰富,提供的实例描述是否详细。只有简单的图文说明,而无实例的用户手册看起来就像是软件界面的简单拷贝,对于用户来说,实际上没有什么帮助。
印刷与包装质量:主要是检查软件文档的商品化程度。有些用户手册是简单打印、装订而成,过于粗糙,不易于用户保存。优秀的文档例如用户手册和技术白皮书,应提供商品化包装,并且印刷精美。
90、操作系统的功能?
处理机管理:cpu,内存,其他IO设备,对当前系统上正在运行的程序提供处理机的控制和管理
存储管理:方便用户使用和提高存储器的利用率(内存利用率最大化)
设备管理:完成用户提出的IO请求,为用户分配IO设备,并控制IO的执行。
文件管理:实现对目录的管理,文件读写管理和存取控制
91、接口测试的必备条件?
(1)接口说明
(2)接口地址
(3)接口请求方式
(4)接口的参数及说明
(5)接口的返回值和说明
92、面向对象的三大特征?
封装、继承、多态
93、对客户端怎么进行测试?
1、功能测试:对功能点一一进行测试,确保每个点都能正确实现,对流程进行测试,确保流程无误。
2、兼容性测试:对不同操作系统进行测试,且确保都能正常运行。
3、安全性测试:对程序和数据库进行安全性测试,以确保符合系统安全指标。
4、UI测试:程序的设计是否够美观、界面图片、按钮是否合适。
5、易用性测试:所开发的功能,是否让用户容易接受,是否符合大众的操作习惯。
6、性能测试:程序的性能是否满足用户需求,如程序响应速度以及多用户进行操作时,程序的功能及响应速度是否符合要求。
7、安装卸载更新测试:程序能否正常安装、卸载、更新。
94、Python中怎么生成1到10的随机数?
import random
random.randomint(1,10)
95、自动化测试实现的步骤?
自动测试决定
测试工具获取
自动化测试引入
测试计划、设计与开发(写脚本/用例)
测试执行与管理
测试评审和评估
96、break和continue的区别?
break:
(1)结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条zhi件测试。 (2)只能跳出一层循环,如果循环是嵌套循环,那么需要按照嵌套的层次,逐步使用break来跳出。
continue:
(1)终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。
(2)结束当前循环,进行下一次的循环判断。
(3)终止当前的循环过程,但并不跳出循环,而是继续往下判断循环条件执行语句,它只能结束循环中的一次过程,但不能终止循环继续进行。
97、对什么样的数据建立索引
优先考虑创建索引的列
有主键或者外键的列
频繁使用查找的列
表与表链接是频繁使用的列
分组或者排序时使用的列
98、怎么查看linux 端口号被占?用分页查看内容?
netstat -a 查看端口状态
cat filename.txt | more 通过管道命令和more实现
99、性能测试分类?
一般性能测试:验证软件在正常情况和系统条件下能否满足性能指标。
负载测试:验证系统在一定压力下延长系统运行时间,直到系统性能出现"拐点"
压力测试: 验证系统在已经处于 极限负载下或者某指标已经处于饱和状态下系统性能的表现。
稳定性测试:验证系统在连续运行的情况下下,查看系统的各项性能指标。- - MTBF (错误发生的平均时间间隔)
大数据量测试:验证系统在使用大批量数据对系统产生压力或影响的情况下系统各种指标是否正常。
配置测试:验证系统在不同的软件和硬件配置的情况下,找出系统各项资源的最优分配
100、针对微信朋友圈设计10个用例?
1、点赞功能
1、网速对点赞的影响
2、点赞的人个数显示是否正确
3、共同好友能否看到点赞状态
4、能否显示点赞得人的头像和昵称,若能显示是否正确
5、一行显示几个点赞的头像
6、能否正常的点赞和取消点赞
7、点赞显示能否按照时间的先后
8、消息列表中是否显示点赞人的昵称,头像和点赞时间。
9、不同手机操作系统显示界面
10、能否及时刷新
11、点赞后还能不能评论
12、点赞是否有上限
2、评论功能
1、网速对评论的影响
2、共同好友能否看得到评论,非共同好友能否看到评论状态
3、评论能否按时间先后顺序显示
4、评论能否显示评论人的昵称,若能显示是否正确
5、能否回复评论
6、是否可以既评论又点赞
7、评论和点赞后是怎样现实的,分两次显示,还是一次显示
8、评论是否有上限
9、能否及时刷新
10、未登录情况下能否看得到
11、不同手机如何显示
12、是否能将评论全部显示在朋友圈下面
13、好友能否看到发圈人的评论及回复
3、界面显示
1、是否是显示发朋友圈的人的昵称、头像、以及具体内容
2、是否按照发朋友圈的时间距离现在远近来排序
3、图片显示是否正确
4、是否显示自己的个人朋友圈背景
5、下拉是否有更新
101、Linux常见目录?
名称 作用
/boot 启动目录,内核的存放地
/etc 配置文件的存放地
/home 用户目录(家目录)
/lib 库文件
/bin 可执行文件和常用的Linux命令
/sbin 系统管理员的命令和工具
/tmp 临时文件的存放地
/mnt 挂载其它文件系统 (共享文件夹)
/usr 应用程序的安装和存放地
/root root用户的家目录
/dev 设备目录
102、产品的缺陷未修复完,是否可以上线?
错误。因为缺陷有严重程度、优先级的划分,测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复。比如说:没有足够的时间资源,在交付期限的强大压力下,必须放弃某些缺陷的修改;有些缺陷只是特殊情况下出现;不是缺陷的缺陷。我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理。
103、说一下unittest框架的优缺点
优点:
1. 能够组织多个用例去执行
2. 提供丰富的断言方法
3. 提供丰富的日志与测试结果
缺点:
1.必须在TestCase子类里面写
2.必须写test方法
3.难以拓展
104、缺陷的起源
缺陷的起源:需求、构架、设计、编码、测试、用户
缺陷的来源:
需求说明书
设计文档
系统集成接口
数据流(库)
程序代码
105、接口测试的工具
Fiddler:抓包工具
Postman:支持自动化测试
Jmeter:接口测试、性能测试
Loadrunner:接口的自动化测试、性能测试
Python + requests:
通过python语言编写脚本,实现接口自动化
单元测试工具:Unittest
自动化测试框架:python + requests + unittest + HtmlTestRunner
106、JMeter工具简介
Apache JMeter是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于接口、性能
测试。
它最初被设计用于Web/HTTP应用测试,但后来扩展到其它测试领域。
它可以用于HTTP和SQL数据库(使用JDBC) 压测,可以用来模拟对服务器或者网络系统加以重负
荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。
它也提供了-个可视化界面(GUI)用来定制数据显示,测试同步及测试的创建和执行。

你可能感兴趣的:(软件测试)