测试面试总结

面试问题总结:
1.SQL随机取50条数据 select top 50 * from tablename order by newid()
2.压测的线上监控通过medusa(云平台)上可看,重大项目的压测监控SRE会出看板
3.Redis是内存数据库,通过在内存中读写数据,大大提高了读写速度,Redis是实现网站高并发不可或缺的一部分。Redis是高效的key-value数据库,存在有效时间的设置,可持久化;Redis是单进程单线程模型,拥有丰富的数据类型,支持高并发读写
Redis的5种对象类型:字符串、哈希、列表、集合、有序集合,单个value的最大限制是1GB
平时工作中,在一些接口测试用例里, 测试应用调用第三方服务回调测试应用把一些数据信息存到了Redis里,这个时候需要去Redis拿这些信息,比如线上的扫码签到。
4.接口测试的标准测试流程
1)测试接口文档
2)根据接口文档编写测试用例(按功能测试规则来编写,使用等价类、边界值等方法)
3)执行测试,查看不同的参数请求,接口返回的数据是否达到预期
接口测试点:
1、功能测试:
业务流程测试{正常场景
异常场景}
特殊字符
参数类型
参数有、无或null
所有必选参数
组合可选参数
边界值测试
等等
2、性能测试:
响应时间(RT)
吞吐量
并发数
等等
3、安全测试:
敏感信息是否加密
必要参数是否后端校验
接口是否防被恶意请求
等等

5.Kafka是一个分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。
Kafka对外使用topic(主题)概念,生产者往topic里写消息,消费者从topic里读消息。为了做到水平扩展,一个topic实际由多个partition(消息分区)组成,遇到瓶颈时,可以通过增加partition的数量来进行横向扩展,单个partition内是保证信息有序的。
消息队列(message queue)提供传送服务。消息传送依赖于大量支持组件,这些组件负责处理连接服务、消息的路由和传送、持久性、安全性以及日志记录。消息服务器可以使用一个或多个代理实例。
消息队列分类:点对点和发布订阅两种:
1.点对点:
消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。
消息被消费后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
2.发布/订阅:
消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点不同,发布到topic的消息会被所有订阅者消费。
Redis是一个key-value数据库,但也支持消息队列功能,数据量较小,数据超过10k就慢的无法忍受。
Kafka的基础概念:
Topic(主题):一组消息抽象归纳为一个topic,对消息进行逻辑分类
Message(消息):kafka通信的最小单位,包括key、value、offset(偏移量)、timestamp组成
Partition(分区):分区是有序的、只可追加不可修改的顺序记录集,一个topic下包含多个partition,主要是对消息再分组,提高处理的并行度
Broker(代理):kafka集群的服务实例,每个broker都有一个唯一标识broke.id
Producer(生产者):发送消息到broker的客户端,每个客户端都有一个唯一标识:client.id
Consumer(消费者):从kafka拉取(pull)消息进行消费的客户端,每个客户端都有一个唯一标识:client.id
Consumer Group(消费组):kafka允许多个Consumer Group消费同一个Topic,不同消费组之间消息偏移量独立,互不影响
Replica(副本):Partition的备份,一个Partion可以有一个或多个Replica

软件测试方法:
黑盒测试方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等
等价类划分法:有效等价类、无效等价类,划分互不相交的子集,子集的并是整个集合

白盒测试方法主要有代码检查法、静态结构分析法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

日常测试标准流程整理:
1.每周三固定时间需求评审,提前确定评审的需求,临时插入需求发邮件走审批;周三评审完后进行QA组预排期
2.周五进行排期会,确定开发时间、提测时间、测试时间、上线时间,确定测试账号
3.技术评审要QA参与,主要产出设计文档、接口文档
4.用例评审,提测(联调)前两天,提前一天发出会邀
5.提测邮件或jira提测,提测邮件中突出重大修改影响点(出现线上事故后我的反思成果)
6.产品收到提测邮件后在测试环境进行验收,上pre前回复验收邮件
7.QA每天发送日报,同步测试进度,阻塞问题重点标注
8.测试环境测试完成发送测试报告,线上回归完成发送线上验证报告
9.项目上线后进行复盘会,对项目的问题进行总结和改进,平时个人也要注意进行复盘,磨刀不误砍柴工!
10.在哪方延期,哪方发延期邮件,延期邮件内容:具体延期项目,原定上线时间、现定上线时间,延期的具体原因
11.每个项目都主动建微信群(拉产品、开发、测试):每天早上发一下测试计划,晚上下班前发一下测试进度,包括遗留问题、待确认问题、堵塞点(问题描述 解决人 时长)、下期优化点
12.提测后进行冒烟测试,由开发给产品、测试进行演示,冒烟不通过进行打回(提测邮件不完备进行打回),邮件或项目群同步冒烟测试结果
13.重点项目每天组织站会,早上或者晚上
14.使用xmind编写用例,测试前需能画出上下游交互图和本次修改的业务流程图
15.充分理解业务逻辑,提前介入测试,准备测试数据
16.测试bug及时在jira上记录,上线完成关闭jira链接,补充总结文档,及时关注运营群中的反馈
17.最高优需求,项目进度每半天汇总一次,有需要支持的或项目风险及时同步

业务相关:
1.同步入线:线索传入后,创建电销任务,调用工单创建接口等操作都是同步方式,实时下放工单
异步入线:线索传入后,创建电销任务,发送kafka消息,工单创建等后续步骤通过消费kafka实现,工单下放有一定的延时

测试加分项:
一、压测
1.QPS:峰值时间每秒请求数
2.响应时间(RT):系统对请求作出响应的时间
3.吞吐量:系统在单位时间内处理请求的数量
4.并发用户数:系统可以同时承载的正常使用系统功能的用户数量
5.Partion:有序的队列
6.Topic:消息服务的主题
7.TP99:满足99%的网络请求的最低耗时
8.TP95:满足95%的网络请求的最低耗时
9.MEM(memory):内存达到多少,达到100%前端收不到请求,但基本不会出现该情况,内存达到50—70%使用率已经很高了,这时测试会与开发沟通,决定是进行优化还是加机器。
压测不符合预期,调压或增加机器后继续压测
10.预热是为了该缓存的数据提前缓存好,达到活动缓存态的状态。
混合压测,全链路压测

二、接口测试
1.接口不通情况:sso问题、没有权限、新加字段
2.接口测试需要开发提供接口文档
3.接口的地址,接口参数及各个参数的说明,接口返回值以及各个返回值的说明
4.“GET”方式只用来获取数据,成功了返回http状态码200;
“POST”方式只用来创建数据,成功了返回http状态码201;
“PUT”方式只用来修改数据,成功了返回http状态码203;
“DELETE”方式只用来删除数据,成功了返回http状态码204;
请求发送失败时,返回http状态码400
5.工作接口测试流程:
<1>拿到接口的URL地址
<2>查看接口是用什么什么方式发送
<3>添加请求头,请求体
<4>发送查看返回结果,检验返回结果是否正确
6.接口测试的重点是检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
7.http://127.0.0.1:8080/light?opt=open&use=yy&pwd=123456
请求协议 请求IP 端口 接口地址 接口参数 参数值
3个参数
“opt”:”open”
“use”:“yy”
“pwd”:”123456”
8.接口测试是一种及早介入测试的方式
9.常见的http状态码:
1)200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是OK的,服务器也返回了
2)300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了
3)400 4开头的代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4)500 5开头的代表服务器有异常:500代表服务器内部异常;502代表和服务器通信失败,连接超时,服务器当前链接过多,无法给予正常响应;504代表服务器端超时 没返回结果
10.接口一般分为两种:1.程序对内的接口 2.系统对外的接口
11.Cookie与session的区别:
1)、cookie数据存放在客户的浏览器上,session数据存放在服务器上
2)、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
3)、session会在一定时间保存在服务器上。当访问增多,会比较占用你的服务器性能,考虑到减轻服务器性能方面,应当使用cookie
4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
5)将登陆信息等重要信息放在session中;其他信息如果需要保留,可以放在cookie中
12.详细接口测试流程:
1)测试接口文档
2)根据接口文档编写测试用例(按功能测试规则来编写,使用等价类、边界值等方法)
3)执行测试,查看不同的参数请求,接口返回的数据是否达到预期
接口测试点:
1、功能测试:
业务流程测试{正常场景
异常场景}
特殊字符
参数类型
参数有、无或null
所有必选参数
组合可选参数
边界值测试
等等
2.性能测试:
响应时间(RT)
吞吐量
并发数
等等
3.安全测试:
敏感信息是否加密
必要参数是否后端校验
接口是否防被恶意请求
等等

三、自动化测试
1.httprunner使用脚本样本录制,简化脚本编写;执行方式采用CLI(命令行)调用,执行方式自由
2.用例结构:
一条用例主要包括两部分:
config:全局配置,作用域为整个用例(本个json文件)
test:执行步骤(即单个请求及相应的变量导出和断言等)
test内既可以是一个单次的接口请求,也可以引用另一个case(json文件)
config模块字段:
name:用例名
base_url:公共域名,当用例中存在多个接口请求走同一个host,我们可以将host抽离出来作为公共的base_url,在test的URL只填写path
variables:公共变量,可在多个test中重复引用
Parameters:全局参数,用以实现数据驱动
request:请求的公共参数,主要包括base_url(也可在request外部单独定义)和header
output:用例输出,以表格的形式打印在控制台(造数时常用)
hooks:setup_hooks:整个用例执行前;teardown_hooks:整个用例执行后
test模块字段:
name:步骤名
request:请求信息,主要包括url,method,headers,params,json
validate:断言(校验),对相应参数进行校验
Extract:输出,将响应的结果输出到变量池,供其他步骤调用或输出到报告
hooks:setup_hooks:本步骤执行前,teardown_hooks:本步骤执行后触发
hook有两个层级,一个是用例级,一个是步骤级
testcase:调用其他case的路径
Variables:调用其他case时,向调用case内部传递的变量
参数传递:
用例中使用extract向用例池中输出参数;使用 $(变量名)来获取参数

辅助函数(debugtalk.py):
以开发者模式运行脚本,默认在工程内用例路径加载其辅助文件;使用${函数名()}来调用辅助函数
Extract是输出到变量池,output是输出到控制台
接口自动化的发送请求用断言来判断

四、Linux常用命令
文件和目录:
cd/home 进入‘/hone’目录
cd… 返回上一级目录
cd…/… 返回上两级目录
cd 进入个人的主目录
cd- 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls-a 显示隐藏文件
find/ -name file1 从‘/’进入根文件系统搜索文件和目录

Linux服务器下查日志,cd xxx 去日志所在的路径,用tail查看最后X行的日志,使用cat命令查看全部日志
tail -n 100 catalina.out 查看最后100行日志的命令

五、数据库
1.数据库分区
作用:物理结构设计,将表的数据均衡分摊到不同的硬盘中,不需要全表扫描,提高了数据检索效率;数据管理比较方便,比如要清理某年的数据,直接删除该日期的分区数据即可;相对于单个文件系统或硬盘,分区可以存储更多的数据;降低数据库的频繁IO压力值

六、常用算法
1、冒泡排序
冒泡排序是一种简单的排序算法。他重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误,就把他们交换过来。遍历数列的工作重复地进行直到没有再次需要交换,也就是说该序列已经排序完成。
冒泡排序算法的运作如下:
a、比较相邻的元素,如果第一个比第二个大,就交换他们两个
b、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数
c、针对所有的元素重复以上的步骤,除了最后一个
d、持续每次对越来越少的元素重复以上的步骤,直到没有任何一对数字需要比较

Python代码实现:

def bubble_sort(alist):
    '''冒泡排序'''

    n=len(alist)
    for j in range(n-1):
        count=0
        for i in range(0,n-1-j):
            if alist[i]>alist[i+1]:
                alist[i],alist[i+1]=alist[i+1],alist[i]
                count+=1

        if 0==count:
            break


if __name__=="__main__":
    li=[54,23,32,66,88,99,18,20]
    print(li)
    bubble_sort(li)
    print(li)

2、快速排序

七、杂七杂八
1、etcd:目标是构建一个高可用的分布式键值数据库,解决在同一个分布式集群中的线程或服务如何才能找到对方并建立连接。
2、TCP、UDP都是数据传输协议,TCP是面向连接的,能够保证数据的完整性,传输的速度慢;UDP是面向无连接的,传输速度快,容易丢包(不可靠)、不稳定
3、TCP/IP协议(又名:网络通讯协议)即传输控制协议/互联网协议,是一个网络通讯模型,以及一整个网络传输协议家族。ICMP用来传送IP的控制信息,ping是最常用的基于ICMP的服务,IP数据报是无连接服务。
4、http协议(超文本传输协议),是用于从WWW服务器传输超文本到本地浏览器的协议。它可以使浏览器更加高效,使网络传输减少。它不仅能保证计算机正确快速的传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容优先显示(如文本先于图形)等。
6.Hash是把任意长度的输入,通过散列算法,变换成固定长度的输出
7.进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每个进程都有一个自己的地址空间,至少有5种基本状态,他们是:初始态、执行态、等待状态、就绪状态、终止状态。
线程是CPU调度和分配的基本单位,它可与同一进程的其他线程共享进程所拥有的全部资源。
线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程且至少有一个线程。
进程和线程的区别:
根本区别:进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位
开销方面:每个进程都有独立的代码和数据空间,进程之间切换开销大;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销少
所处环境:在操作系统中可以运行多个进程(程序);而在同一个进程中有多个线程同时执行(通过CPU调度在一个时间片内只有一个线程执行)
内存分配:系统为每个进程分配不同的内存空间;而对于线程而言,除了CPU外,系统不会为线程分配内存(线程使用的资源来自其所属的进程资源),线程组之间只能共享资源
8.Charles模拟弱网测试,适用于PC端和移动端(iOS、Android),打开Proxy–throttle settings,然后根据要求进行相关参数的填写
9.CDN是内容分发网络,是构建在现有网络基础上的智能虚拟网络,通过中心平台的负载均衡、内容分发、调度等模块,使用户就近获取所需内容名,降低网络拥塞,提高访问的响应速度,CDN的关键技术是内容存储与分发技术。
CDN网络的功能实体包括内容缓存设备、内容交换机、内容路由器、CDN内容管理系统等组成。CDN将各种缓存服务器分布到用户访问相对集中的地区或网络中,达到网络加速的作用。
前端上线后资源要部署CDN,相当于全国各地都有服务器,可以就近访问,页面跳转打开路由页的js、css资源
9.Android四层架构:由高层到底层分别是应用层、应用框架层(application framework)、系统运行库层(librarys)、内核层(Linux)。在application framework下,由C/C++的程序库组成,通过JNI完成Java到C的调用。
1)应用层:所用安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者应用市场下载的应用,还包括你自己开发的程序。应用层由Java编写,每一个应用程序由一个以上的活动组成。
2)应用框架层(application framework):这一层主要提供构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以使用这些API来构建自己的应用程序。
丰富而扩展的视图(view)来构建应用程序
内容提供器(content provider)用来访问或共享应用程序间的数据
资源提供器(resource manager)提供非代码资源的访问,如:本地字符串、图形、布局文件等
通知管理器(notification manager)让应用程序可以在状态栏中显示自定义的提示信息
活动管理器(activity manager)用来管理应用程序的生命周期
3)系统运行库(librarys):这一层通过一些C/C++库来为Android系统提供主要的特性支持。如SQLite库提供了数据的支持,OpenGL/ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等
4)内核层(Linux):Android系统是基于Linux2.6内核的,这一层为Android设备的各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、WiFi驱动等。
10.Docker是一个开源的应用容器引擎,docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
Doceker的应用场景:
(1)web应用的自动打包和发布
(2)自动化测试和持续集成、发布
(3)在服务型环境中部署和调整数据库或其他的后台应用

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值