白盒测试和黑盒测试区别?
白盒测试 | 黑盒测试 | |
测试对象 | 通过程序的源代码进行测试而不是用户界面 | 通过使用整个软件或某种软件功能来严格的测试 |
特点 | 测试程序接口与结构 | 测试功能 |
依据 | 软件程序 | 需求规格说明书 |
侧重点 | 关注背部代码结构 | 关注功能逻辑实现 |
Alpha测试、beta测试和验收测试区别?
区别 | Alpha测试 | Beta测试 | 验收测试 |
定义 | 由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。 | 由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,这是在开发者无法控制的环境下进行的测试。由用户记录下遇到的所有问题,定期向开发者报告。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试 | 是以用户为主的测试,软件开发和QA人员也应该参加,测试一般在用户所在地进行,由用户验证软件产品是否满足了所有的需求的一系列的验收测试工作。仅限于做项目的公司,部门内部测试稳定后,根据合同中需求由发包商进行验收测试。验收测试的目的是为了以发现”未实现的需求”为目的,以评估”适合使用”为目标,该类测试的不是以发现缺陷为主要目的。 |
测试场所 | Alpha测试是指把用户请到开发方的场所来测试, | beta测试是指在一个或多个用户的场所进行的测试。 | 验收测试的常用策略有三种,它们分别是: 正式验收 , 非正式验收或 Alpha 测试 , Beta 测试 |
我们怎样判断问题是不是一个软件缺陷?
(1)软件未达到产品说明书标明的功能 #少写或没写
(2)软件出现了产品说明书指明不会出现的错误 #写错了
(3)软件功能超出产品说明书指明范围 #写多了
(4)软件未达到产品说明书虽未指出但应达到的目标 #隐性需求
(5)软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。 #用户体验感不好。
三种查看server.log文件内容:
cat/less/more/head/vi/tail server.log
linux上怎么动态监控一个文件的内容变化
tail -f –n 100 文件名 100表示显示100行,比如看server.log,则为tail -f -n 200 server.log
linux上怎么查看所有的进程信息?
ps –ef / ps aux
linux上怎么查看CPU,内存,磁盘,网络的使用情况?
top , free ,du/df ,ping ,netstat
(top 命令提供了实时的对系统处理器的状态监视,类似于任务管理器;free打印出的内存信息主要分为两种,一种是安装的内存,一种是用磁盘虚拟的内存,就是这里的Swap。)
du -h --max-depth=1 查看一层目录的大小
linux上怎么查看磁盘空间?
df 显示磁盘的空间使用情况(还剩多少空间)
du 显示指定目录下所有文件以及子目录所占用的磁盘空间大小(占用的磁盘空间)
linux怎么查看端口是否在监听?
netstat –an|grep 444 (查看端口444是否被占用)
netstat –lnp (显示当前系统启用的端口)
netstat -tulnp (显示监听的tcp/udp 端口和进程)
查看linux系统发行版本:cat /etc/issue
查看当前操作系统版本信息:cat /proc/version
查看本地主机所有网卡(接口)信息:ip addr
查看内存:free(内存总共多少,使用多少,剩余多少);top(动态显示,类似于任务管理器,可以查看进程信息)
查看cpu相关信息,包括型号、主频、内核信息等:cat /proc/cpuinfo
查看端口号是否被其他进程占用:netstat -anp|grep 8080(Linux中);netstat -ano|grep 8080(windows命令,但linux上也能用,但只能查端口号,不能是进程名) 比如:3可以是netstat -anp|grep Java;但不可以netstat -ano|grep java
查看进程(如查看进程名为python的进程):ps -ef|grep python
查看网络状态:ifconfig
修改网卡信息(配置条件):vi /etc/sysconfig/network-scripts/ifcfg-eth0
检查网卡是否获取到ip:ip a
重启网卡:systemctl restart network
测试网卡是否联网:ping www.baidu.com
mysql中的事务及四个特性:原子性、一致性、隔离性、持久性
事务:一个最小的不可能细分的工作单位。
原子性:指事务是一个完整的操作,各元素不可分割,事务中的操作要么都发生,要么都不发生。举例:A给B转账100的时候只执行了扣款语句,就提交了,如果遇到停电;要么A转账给B成功要么A扣款失败,B没有收到钱。
一致性:指在事务开始之前和结束之后,数据库的完整性约束没有被破坏。举例:不管事务成功或者失败,应该保证事务结束后表中A和B的存款总额和事务执行前一致。
隔离性:指在并发环境中,当不同的事务同时操作相同的数据时,每个事务都有各自的完整数据空间。(比如:张三给李四转300元;王五给李四转300元)
持久性:在事务完成以后,该事务所对数据库所作的更改便持久地保存在数据库中。
查看文件的方法:
cat tail head less more
less和more的区别:less和more都可以按空格键,一页页地显示;less可以按键盘上下方向键显示上下内容,more不能,但more可以通过ctrl+B返回上一页。less不必读整个文件,加载速度会比more更快。
主外键的关系:
主键:用来保证数据完整性,主键表示唯一标识一条记录,不能有重复的,不允许为空。
外键:用于与另一张表的关联,用来和其他表建立联系。
主键与外键的相对,作用就是通过主外键之间的关系,使对表中的数据更好地关系。
get和post的区别?
get:获取服务端资源;参数一般跟在url后面,用?与utl隔开。明文显示,数据一般不超过20kb,数据包产生1个数据包,将header和data一起发送。
post:向服务端提交资源。参数在报文主体部分(body),不会明文显示,数据一般没有限制;数据包产生2个,先发送header服务器响应100,再发送data。
http状态码:
100:服务器收到一部分并且未拒绝,等待后续请求
200:服务器成功处理了客户的请求,不代表业务成功
301:永久重定向(请求资源永久迁移到别的地址)
302:暂时重定向
400:请求错误
401:未授权或者认证失败
403:没有权限,服务端拒绝
404:请求资源未找到
500:服务器内部错误
cookie、session和token的区别(解决的是http无状态,无连接的问题,session是解决cookie的安全问题,token是解决session的性能)
cookie:保存在客户端,存储一般不超过4kb,单站点不超过20个cookie,储存方式为Unicode编码式二进制数据,支持跨域。
session:保存在服务端,存储没有限制,安全性优于cookie,支持跨域
token:服务端生成token发送给客户端,访问服务端时,服务端再验证是不是之前发送的token。
tcp和udp的区别:
tcp:支持面向连接,一对一通信,可靠通信,适用于打电话。
udp:无连接,一对多通信,不可靠通信,适用于发短信
讲述tcp的建立和断开连接?(3次握手,4次挥手----为了在客户端和服务端建立一个安全可靠的连接)、
3次握手:
客户端:你在线吗?
服务端:我在,你在线吗?
客户端:我在。
4次挥手:
客户端:我这里传完资源了,要下线了。
服务端:知道了,我还有点数据,你等下。
服务端:我数据发完了,你可以下线了
客户端:好的。
第三方接口宕机,但产品急于上线,要完成测试工作,你怎么做?
(1)找开发人员写一个测试桩,先代替该接口,以便完成其他功能的验证
(2)找产品或者对外联系人员与第三方进行交涉,让他们尽可能提供mock接口
(3)上线之后,立即验证该功能是否可用,如果不可用,则不能对外开放使用服务。
之前每天的工作安排:
1.跟踪缺陷进度
2.完成每天的工作安排,写用例或者执行用例
3.完成工作日报
如果在测试工作中,领导又给你安排工作,如何安排?
1.先告诉领导自己手里的工作安排
2.然后根据领导意见来决定优先顺序
3.时间比较紧的话,不排除用加班的方式来解决。
软件系统中用户文档的测试点有哪些?
读者群,术语,正确性,一致性,完整性,易用性,图例与界面截图,样例与示例,语言,印刷与包装。
如何提交缺陷,缺陷报告包含哪些内容?
bug类型:做错了,做多了,没实现,隐藏功能漏做。
缺陷内容:标题,发现人,指派对象,所属版本,所属模块,缺陷状态,严重等级,优先级
详细描述:前置条件,步骤,期望结果,实际结果,OS版本
缺陷的跟踪管理流程(生命周期)?
测试人员填写测试报告,先提交给测试经理,测试经理确定是bug后,上传到bug管理工具,此时bug的状态是new;开发进行修改后,会修改bug的状态,此时bug的状态是resolved;我们再进行复现验证,如果修改成功,就将状态改为closed;如果没有修改成功,则将bug状态改为active;如果后面再进行验证,发现之前已关闭的bug复现了,我们会再次将bug reopen。
项目还有很多的bug,但马上要上线了怎么办?
先根据缺陷优先级,先修复级别高的bug
与客户(领导)提前做好沟通,做好会有延期交付的应对
协调增加资源,或者加班
与客户(领导)协商非必要的bug放到上线后逐步恢复。
如何定位缺陷是前端还是后端?
查看后端服务log日志有无错误日志信息
通过抓包工具查看http请求参数和响应结果:传参内容不正确,前端bug;响应内容不正确,为后端bug
界面相关,排版错乱,文案错误等问题,大都属于前端bug
不能复现的bug如何处理?
使用相同的环境,设备,测试步骤,方法,使用相同的输入数据,看能否重现;
及时截图或者录制视频,准确记好操作步骤。
让开发帮忙定个位,确认一下bug的严重程度,确定好问题再提交bug。
如果无法定位,又无法复现,找领导反馈问题。
如果偶发性不强,可以先上线,后续解决。
bug严重级别划分?致命,严重,一般,轻微
用例执行优先等级:p0,p1,p2,p3
上线后发现了bug怎么解决:
先看bug级别是不是很严重,比较严重的话,可以做一个修补的补丁包,也可以回滚版本使用,等问题修复好后再上线。
SQL语法:
DQL:select
DCL:grant revoke
DDL:alter,drop,create,truncate,rename
DML:insert into,update…set,delete,
如何建立表连接,有哪些方式,有什么区别?
前提条件是,两个表有主外键关联的,有共同的字段,才会用到左连接和右连接。
join……on字段:内连接,将一个表中的行与其他表中行进行匹配,并允许两个表中查询包含列的行。(与inner join一样,只返回两表相连相等的行)
left join……on:左连接,以左表为准,右表匹配的数据就展示出来,如果左表有的,右表没有,则右表以null填充(返回包括左表的所有记录和右表中连接字段相等的记录)
right join……on:右连接,以右表为准,左表匹配的数据就展示出来;如果右表有的,左表没有,则左表以null填充(返回包括右表的所有记录和左表中连接字段相等的记录)
左连接,右连接,内连接,全连接的区别及使用_卧槽甜的博客-CSDN博客_左连接
存储过程和函数有什么区别?
声明上,存储过程是procedure,函数是function
存储过程不需要返回类型,函数必须要返回类型(char,varchar,int……)
SQL语句中不可调用存储过程,可以调用函数
存储过程,用户在数据库中完成特定操作或任务(如插入,删除等),函数用于返回特定的数据。
描述进程和线程有什么区别?
程序运行后产生一个进程或者多个进程,一般是一个进程有多个线程
进程相当于是个容器,里面有多个线程。进程共享资源难,占内存多,进程之间不会受影响,进程在执行的过程中如果阻塞,例如等待输入,整个过程就会挂起。
多线程:进程内有多个线程,会存在共享资源,争抢资源的情况,占用内存少,但如果是一个线程挂掉,会影响进程;对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,一个进程中的多个线程之间可以并发执行,多个线程共享内存,从而极大地提高了程序的运行效率。
描述迭代器,生成器,装饰器的用途。
装饰器,本质是一个python函数,它可以让其他函数在不需要做人和代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象
迭代器:可以直接作用于for循环的对象,统称为可迭代对象,可以被next()函数调用同时不断返回下一个值的对象成为迭代器。所有的可迭代对象均可以通过内置函数iter()来转变iterator
生成器:就是一个能返回迭代器的函数。调用这个函数就得到一个迭代器,生成器中的yield相当于一个断点,执行到此返回下一个值后暂停,从而实现next取值。
tcp/ip 7层传输模型:
应用层---表示层---会话层,---传输层,----网络层,-----数据链路层----物理层
tcp/ip 4层传输模型:
应用层----传输层---网络层(Internet)---网络访问层
http是一个B/S架构,http协议永远都是客户端发起请求,服务器回送响应。 http的端口是80,https端口号是443 (socket协议,C/S架构,服务器和客户端都能发送请求)
http请求过程(即一个事务的流程):
浏览器中输入目标url地址
dns域名解析,域名与ip映射
建立tcp
发送请求
web服务器接收请求(web服务器主要功能:存储、处理、传送web页面到客户端)
应用服务器处理业务逻辑
关闭tcp连接
浏览器渲染页面
http特性:无连接性(请求头里,加keep-alive),无状态性(cookie,session,token)
http和https的区别:
https协议需要到CA申请证书,一般需要一定费用;
http端口号80,https端口号443
http是超文本传输协议(可传输文本、视频、图片等……),信息是明文传输;https则是具有安全性的ssl加密传输协议
http的连接很简单,是无状态的;https协议是ssl+HTTP协议构建的可进行加密传输,身份认证的网络协议,比http协议安全。
软件测试的目的:
验证软件需求和功能是否得到完整实现
验证软件是否可以发布
尽可能多地发现软件中的bug
尽可能早地发现软件中的bug
对软件质量做出合理评估
预防下个版本中可能出现的问题
预防用户使用,可能出现的问题
发现开发过程中出现的问题和风险
软件测试流程:需求评审(需求是否合理,解疑答惑)---测试计划(人员和模块、时间的安排)---开发编写代码,测试编写测试用例----主要功能开发得差不多,进行用例评审(开发、产品、测试),对用例进行修改和添加----开发提测,进行冒烟测试---冒烟测试通过,全面开展测试----提交bug,追踪bug----新版本发布
测试计划的内容:版本号,项目概述,组织形式,人力分布,测试进度,测试范围,测试通过/失败的标准(用例执行覆盖100%,通过率95%以上,缺陷修复率80%及以上,且无致命和严重的bug未修复),测试挂起和恢复的条件,测试交付物清单等。
测试交付物:测试报告,测试用例,产品,用户文档。
对某个事物进行测试时,从哪些角度分析:
功能测试:主要功能是否齐全
安全性:是否有毒,是否有防护,是否划伤人
可靠性(压力):能承受的最大容量,是否稳固、牢固;以及承受崩溃的能力,承受压力后能否继续正常工作。
兼容性
界面测试:外观好看
可用性:是否方便、好用、体验感好。
测试人员的素质:
沟通能力和表达能力;
好奇心与怀疑精神;
责任感和抗压力;
自信心,坚持自己的观点;
耐心与细心;
逆向思维的能力;
善于学习和总结;
团队的协作精神;
文档编写能力
软件测试的分类:
按照是否执行被测试软件来分:静态测试,动态测试
按照测试技术分为黑盒测试和白盒测试
测试手段:手工测试,自动化测试
过程阶段:单元测试,集成测试,系统测试和验收测试
软件生命周期:计划---需求分析---设计--编码---测试---运维
软件系统的用户文档包括哪些?
用户手册;安装和设置指导;联机帮助;指南、向导;样例、示例和样板;授权/注册登记表;最终用户许可协议。
没有产品说明书和需求文档的情况下能够进行黑盒测试吗?
这种被称为探索测试,具体就是测试工程师根据自己的专业技能、领域知识等不断地深入了解测试对象,理解软件功能,进而发现缺陷。
公司在什么阶段开展接口测试?
一般功能或者接口有变动的时候,我们会做接口测试;第一轮提测前完成接口测试。
当开发人员说不是bug时,该如何应对?
(1)首先明确开发说不是bug的理由
(2)如果是需求变更,找产品经理确认是否需求变更。
(3)如果开发说测试环境问题,让他说明测试环境问题是什么,按照他说的验证一遍,如果确实如他所说,关闭bug,但是不是他说的那样,继续激活bug给开发解决,确保产品质量。
(4)如果开发说用户不存在这种使用场景,但是我们不认可他说的;则把这个bug知会到测试经理,让测试经理去判定。