秋招面试之测试开发绿盟

绿盟面经 准备


Linux相关问题 #Linux

文件与目录命令
  1. cd 进入目录
  2. pwd 显示工作路径
  3. ls 查看目录中的文件 -a是隐藏文件 -l 是详细信息
  4. mkdir 创建新文件夹
  5. rmdir 删除文件夹
  6. cp 复制文件
  7. touch、vim 新建文件
  8. ln 创建链接
文件搜索
  1. find 搜索文件

     find   路径   文件名
    
磁盘空间
  1. df -hl:查看磁盘剩余空间
  2. df -h:查看每个根路径的分区大小
打包和压缩文件
  1. gzip 压缩

  2. tar 打包

查看文件内容
  1. cat
  2. less
  3. more
  4. head 查看前几行
  5. tail 查看后几行
查找文本
  1. grep 查找字符串
网络
  1. ifconfig 显示以太网卡的配置
进程
  1. ps -aux 查看所有进程,包括后台进程,只显示自己的进程号(PID)
  2. ps -ef  查询系统中所有运行的进程,包括后台进程,而且可以显示每个进程的父进程号(PPID)
  3. kill 进程号       注:一些守护进程是无法杀死的
  4. kill -9 进程号  解释:强制杀死进程

tcp连接可以发送多少个http连接 #tcp可以发送多少个http连接

如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的

  • HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。如果想要维持连接,需要设置Connection:keeplive的请求头。

  • HTTP/1.1 就把 Connection 头写进标准,并且默认开启持久连接

    除非请求中写明 Connection: close,那么浏览器和服务器之间是会维持一段时间的 TCP 连接,不会一个请求结束就断掉。

    因此如今的tcp可以发次多个http请求

    目前的HTTP2可以并行发送TCP连接,一次发送多个。

    Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。

http1.0,1.1,2.0的区别

同上

ISO七层模型,ARP在哪一层,应用层、网络层有啥协议,三次握手,四次挥手具体流程 #ISO模型

  • 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  • ARP在网络层

  • 应用层有HTTP、DNS、HTTPS

  • 网络层有TCP、UDP

  • 三次握手、四次挥手()

数据结构有哪些线性结构,哪些非线性结构,单链表反转

  • 数组(Array)、栈( Stack)、队列(Queue)、链表( Linked List)等数据的逻辑结构都属于线性表。

  • 树( Tree)、图(Graph)、堆(Heap)、散列表(Hash)等数据的逻辑结构都属于非线性结构。

  //单链表翻转  递归
  LinkedNode root;
  psv reverse(LinkedNode head){
      if(head==null){
      return head;
      }
  
      LinkedNode new_one =reverse(head.next);
      head.next.next=head;
      head.next=null;
  
      return new_one;
  
  }

平常用JAVA还是python,python self原理,怎么生成随机数,常用循环,键盘输入

  • 用java比较多,python self ,表示当前类的对象(实例),可以调用当前类中的属性和方法。

  • 随机数用Random,如:

  Random r = new Random();
  int i1 = r.nextInt(10);    #生成[0,10]区间的整数

常用数据库,创建表,修改表,删除表 #数据库基础

  • 常用数据库是mysql

  • 创建表 create table “tablename”{ 列名、数据形式、要求(例如是否可以为空,是否是主键等)}

  • 修改数据用 update

  • 修改表用
    add
    alert
    drop

  1. 增加列  
    alter table 表名 add 列名 类型(长度)约束;

  2. 修改现有列类型、长度和约束  
    alter table 表名 modify 列名 类型(长度) 约束;

  3. 修改现有列名称 
    alter table表名 change 旧列名 新列名 类型(长度)约束;

  • 删除表
    drop table 表名

常用测试方法,测试过程,因果图法过程,测试用例要素,设计登录(用户名、密码)测试用例

测试过程 #测试流程
  • 需求分析

  • 设计测试用例

  • 建自动化测试环境【可选】

  • 设计自动化测试项目的架构【可选】

  • 编写代码

  • 执行测试用例

  • 生成测试报告并分析结果

常用测试方法 #测试方法
  • 边界值法:选取选定值左右的值进行测试

  • 等价划分类:将效果相同的测试用例归为一类,选取一个有代表性的进行测试

  • 因果图法:输入条件之间的相互组合,可能会产生一些新的情况,在测试时使用混合的测试用例,返回结果时用不同的结果代表哪个部分出现错误。因果图方法最终生成的就是判定表。

  • 错误推测:选取错误的用例进行测试,观察测试结果

  • 判定表法:通过选出有代表性的测试实例,达到以少数代替全面的效果。

  • 正交试验设计:有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。

  • 按阶段分为: #测试阶段
    1、单元测试(Unit Testing)
    单元测试是最微小规模的测试,测试的是某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。
    2、集成测试(Integration Testing)
    集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。
    3、系统测试(System Testing)
    系统测试是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试
    4、验收测试(Accept Testing)
    验收测试是基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。一般从功能、用户界面、性能、业务关联性进行测试。
    5、回归测试(Regression testing)
    回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。

  • 利用因果图导出测试用例需要经过一下几个步骤:
    1.找出所有的原因,原因即输入条件或输入条件的等价类。
    2.找出所有的结果,结果即输出条件。
    3.明确所有输入条件之间的制约关系以及组合关系。
    哪些条件不能组合到一起,哪些条件可以组合到一起
    4.明确所有输出条件之间的制约关系以及组合关系。
    哪些输出结果不能同时输出,哪些输出结果可以同时输出
    5.找出什么样的输入条件组合会产生哪种输出结果。
    6.把因果图转换成判定表/决策表。
    7.为判定表/决策表中的每一列表示的情况设计测试用例。

  • 测试用例的8大要素有:

    用例编号,所属模块,测试标题,重要级别,前置条件,测试输入,操作步骤,预期结果。

测试登录用户密码的测试用例
  • 冒烟:输入正确的用户密码

  • 不输入用户名

  • 不输入密码

  • 输错用户名(规范)

  • 输错密码(规范)

  • 同时输错用户名和密码

  • 输入不规范的用户名

  • 输入不规范的密码

  • 同时输入 不规范的密码和用户名

  • 输入sql注入的密码

为什么做测开,作为测开自身有何优势

  • 测试开发需要的人

    我认为做好一名测试开发的人员,应该具有的特性是责任心、耐心和细心,同时还要有很好的沟通能力。因为测试开发整体偏测试方向,主要工作是检测产品是否存在问题,并且找出问题所在。要对产品的质量和开发人员的心血负起责任,认真做好本职工作。其次要有耐心,因为不同的产品可能存在相同的测试内容,需要将同样的内容做好几次,这就会比较需要有耐心的人,保证每一次都是认真完成的。最后是细心,要在工作的时候考虑的周全一些,不要发生漏测的情况,不能放过任何一点问题,要尽量做到方方面面都能检测到。在最终完成测试之后,需要和开发人员进行沟通,跟他们一起去看出现的问题,沟通能力很重要,要能有效且友善的沟通,最好不要出现同事之间的矛盾。我在学校担任过很多次的项目策划,有大型校级的科技比赛,有院级的演奏会,也有班级内的分享会,可以说经历过很多活动的策划,期间也遇到过很多问题,但是每一次我都能够做到从头到尾认真负责,办的活动最终都是圆满完成的,其中也有过一些瑕疵,但是我每次都会认真记录下来,以免下次在犯。所以我认为我是一个负责人的人,同时也能做到有耐心,因为每次都会带不同的学弟学妹去办活动,不仅要自己去完成这个活动也需要教会他们去怎么做,非常的锻炼了我的耐心、同时也会锻炼我的细心,我会一个一个去检查准备工作,防止出现意外情况。所以这方面来讲,我认为我有能力担任这个职位。

  • 测试开发的前景

    然后是这个岗位的发展前景。测试开发这个岗位可以分为测试和开发两个重点,在互联网快速发展的这个时候,更多的生活需求都是由互联网来完成的,如果公司的某个相关产品因为测试不当而产生的bug,会造成很大的经济损失,而且我认为这个损失在未来会越来越大,所以测试人员的重要性就体现在这里。在说开发的话,这里的开发主要是开发一些自动化测试的平台,工具等,能够使得测试的工作完成起来更加快捷高效,可以弥补人力的不足。所以我认为这个岗位的前景会很好,所以我选择了这个岗位。

如果跟项目组其他人发生分歧如何处理

  • 首先是会去请教对方的观点以及理由,再去向他表明我的观点和理由,然后去比较一下这两中观点的优缺点,如果对方的观点更可取,我就放弃我的观点。如果我还是认为我的观点更可取,我会尽力去说服对方。如果最后还是无法做到一致,我会向上级提出问题,让上级领导去做决定。

测试的方法知道哪些?测试的流程是什么?

测试方法: #测试方法
  • 等价类划分法

  • 边界值法

  • 错误推测

  • 因果图法

  • 判定表法

  • 正交试验法

测试的流程 #测试流程
  • 分析需求

  • 设计测试用例

  • 评审测试用例

  • 执行测试

  • 提交BUG并更进

  • 回归测试

  • 提交测试报告

数据结构了解哪些?百万级数据的表项怎么设计数据结构

  • 数据结构:链表、数组、Map、二叉树会一点点、队列

TCP和udp的区别,TCP三次握手和四次挥手 #tcp和udp

  • TCP是面向连接的,一对一连接、可以保证数据包的安全可靠传输、可以对数据包排序,有超时重传、流量控制等,对网络的要求高,传输速度会比较慢。

  • UDP是无连接的,可以一对一,也可以一对多,不保证数据的安全有序,传输速度快,对网络的要求不高。

  • TCP的三次握手

    • 第一次是客户端向服务端发送请求连接的数据

    • 第二次是服务端向客户端发送响应数据包,表示自己收到了请求

    • 第三次是客户端向服务端发送确认数据,建立连接

  • TCP的四次挥手

    • 第一次是客户端向服务端发送请求数据

    • 第二次是服务端向客户端发送响应数据,表示自己收到了请求

    • 第三次是等服务器发送完之前没有发送完的数据包,然后向客户端发送响应数据,表示自己已经准备好断开了

    • 第四次是客户端向服务器发送确认断开的数据包,服务器当即断开,然后等待2MSL时间后确认服务器已经收到了上次的确认信号后就断开连接

进程和线程的区别,进程间通信方式(考虑信号量) #进程与线程

进程和线程的区别
  • 进程是由一个或多个线程构成的,这些线程会共享进程的资源

  • 每个线程有自己的私有空间存放私有变量

  • 进程是资源分配的基本单位

  • 线程的调度的基本单位

进程间的通信方式 #进程通信
  • 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

  • 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

  • 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

  • 共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

  • 信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

  • 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

  • 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

操作系统用过哪些?

  • Windows,Linux

常见的通信协议有哪些?

  • HTTP、UDP、TCP、HTTPS、DNS、RSP

熟悉的测试方法和工具

  • 功能测试:黑盒类测试,使软件适合应用程序的功能需求。我用的就是python selenium 写业务

  • 性能测试:就是测试软件在一些高并发或网络状况差的情况下去测试。locust、jmater(还没用过)

  • 接口测试:测试后台给前台发送的信息是否正确。requests、postman、fiddler

因果图原理,如何进行测试

  • 1.找出所有的原因,原因即输入条件或输入条件的等价类。
    2.找出所有的结果,结果即输出条件。
    3.明确所有输入条件之间的制约关系以及组合关系。哪些条件不能组合到一起,哪些条件可以组合到一起
    4.明确所有输出条件之间的制约关系以及组合关系。哪些输出结果不能同时输出,哪些输出结果可以同时输出
    5.找出什么样的输入条件组合会产生哪种输出结果。
    6.把因果图转换成判定表/决策表。
    7.为判定表/决策表中的每一列表示的情况设计测试用例。

TCP可靠性保障

  • 确认应答、超时重传、最大消息长度、滑动窗口、拥塞窗口等方法实现了可靠性传输。

HTTPS中的SSL协议原理

  • 第一步客户端服务器发送连接请求,带上客户端支持的加密算法

  • 第二步服务端接收Cipher后,和自己支持的加密算法进行比对,如果不符合,则断开连接。否则,服务端会把符合的算法和证书发给客户端,包括证书时间、证书日期、证书颁发的机构

  • 第三步客户端验证服务器发来的证书,包括证书的时间、机构等。验证通过后,客户端会生成一段随机序列,用服务器的公钥进行加密。服务器可以用自己的私钥进行解密,这时用的是非对称加密方式。同时客户端生成握手信息,用约定好的哈希算法生成信息的哈希值,然后用之前的随机序列进行加密,然后发给服务器。

  • 第四步服务器接受到信息之后,用随机序列进行解密(对称加密),然后把信息与信息的哈希值进行比较,来确认信息是不是被篡改过,如果没有就生成握手信息,和信息的哈希值,用随机序列进行加密,然后发送给客户端

  • 第五步是客户端接收到信息后,用随机序列进行解密,然后比较信息和哈希值是否一致,如果一致则完成握手建立连接

  • 之后的所有信息传递都使用最之前生成的随机序列。

为什么要进行赋权操作

Linux?

SQL注入原理

  • Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

对绿盟的了解

  • 绿盟是一家主要专注于网络安全的公司,在国内属于网络安全领域的佼佼者,在全球都有很多分支机构。听说公司氛围很好。

测试主要分为哪些

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGJmnzdA-1666852950219)(C:\Users\lenovo\AppData\Roaming\marktext\images\2022-08-13-22-18-34-image.png)]

谈一下黑盒测试

  • 在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构主要针对软件界面和软件功能进行测试。

  • 又叫做功能测试、主要使用等价类

  • 白盒测试:"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

  • 白盒测试的方法总体上分为静态分析方法和动态分析方法两大类。

  • 白盒测试的测试方法中运用最为广泛的是基本路径测试法。

黑盒测试和白盒测试分别属于静态测试还是动态测试

  • 黑盒测试有可能是动态测试(运行程序,只看输入和输出),也有可能是静态测试(不运行程序,只是查看界面)

  • 白盒测试有可能是动态测试(运行程序,并分析代码结构),也有可能是静态测试(不运行程序,只是静态查看代码)

黑盒测试有哪些具体的方法 #黑盒测试

  • 等价类划分

  • 边界值

  • 错误推测

  • 因果图

  • 判定表

  • 正交试验法

说一下对正交表测试的理解

设计测试用例:QQ登录密码输入框(至少8位,包含数字和字母)

python怎么调库,库与库之间调用有级别或者调用规则吗

import xxx 和from xx import xx

python怎么读文件、改文件内容、保存文件到本地

with open("./test_file.txt") as file_object:
    content = file_object.read()
    print(content)

逐行读取:

file_name = "test.txt"

with open(file_name) as file_object:
    for line in file_object:
        print(line)        # 此时行与行之间会有空行,因为打印了换行符
        print(line.rstrip())    # 此时没有空行

写入:

filename = "./new_file.txt"

with open(filename, 'w') as file_object:
    file_object.write("this is a new file"





#w 写入模式
#a 追加模式
#r 读取模式
#r+ 读取和写入模式
#wb 字节写入模式
#w+ 文本写入模式
#rb 以二进制方式读取文件。该文件必须已存在。
#如果open的文件名不存在,那就创建;
#如果是(‘w’)写入,如果之前已经存在该文件,则会清空;

数据库,学生表4列(学号、姓名、学科、分数),写代码查出每个学生成绩并按分数从高到低排序

select score from table order by socre desc

怎么删除张三同学的所有信息(姓名唯一和姓名不唯一时)

delete from table_name where name=“张三”
如果姓名不唯一考虑and +别的条件

计算机网络学的是5层还是7层架构,简单说一下

主要是七层:

物理层:主要表示物理设备
数据链路层:管理节点之间的通信,组帧、差错控制等
网络层:数据路由,决定数据在网络的路径
传输层:管理端到端的通信连接
会话层:管理建立、维护、重连通信会话
表示层:主要是数据处理(编码解码、加密解密等)
应用层:为计算机用户提供接口和服务

网络层有哪些协议

  1. IP
  2. ARP

ARP是怎么工作的 #ARP

地址解析协议
依靠ARP列表,知道IP的情况下,查找目标主机的Mac地址
1.在本地查找——>2.发送广播——>3.目标主机向源主机发送自己的IP和Mac,其余主机丢弃源主机发送的数据包——>4.源主机收到目标主机的包

对HTTP了解吗,http英文全称,属于哪一层,head包含哪些内容

HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

属于应用层
![[attachment/Pasted image 20221027115152.png]]
#http报文格式
HTTP协议的方法有:

  • GET: 请求获取Request-URI所标识的资源_
  • POST: 在Request-URI所标识的资源后增加新的数据
  • _HEAD: 请求获取由Request-URI所标识的资源的响应消息报头
  • PUT: 请求服务器存储或修改一个资源,并用Request-URI作为其标识
  • DELETE: 请求服务器删除Request-URI所标识的资源
  • TRACE: 请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT: 保留将来使用
  • OPTIONS: 请求查询服务器的性能,或者查询与资源相关的选项和需求

![[attachment/Pasted image 20221027115606.png]]

http 响应状态码 #http响应状态码

![[attachment/Pasted image 20221027120648.png]]

![[attachment/Pasted image 20221027120920.png]]
![[attachment/Pasted image 20221027120942.png]]
![[attachment/Pasted image 20221027120955.png]]

linux用的什么版本

ubantu

liunx命令:修改用户名和密码、远程拷贝、创建文件、修改文件名、修改文件内容

远程拷贝:scp 本机目录 目标Ip地址:目录

scp /home/administrator/test/test.txt [email protected]:/root/

单个文件如上,整个目标则在scp后面 + -r

对于面向对象和面向过程的理解,有何区别

  • 面向对象是把问题抽象成一个个对象,给这些对象绑上属性和方法,即以功能而非步骤划分问题。优点:更易低耦合、易维护、易复用;缺点:因为需要实例化所以开销较大,性能比面向过程要低

  • 面向过程 是把问题拆分成一个个函数和数据,按照一定的顺序来执行这些方法。优点:性能较高;缺点:不易维护,不易复用

测试用例设计:淘宝登录界面

MAC协议、TCP协议属于哪一层

  1. mac:Media Access Control

媒体介入控制层,属于OSI模型中数据链路层下层子层。

  1. TCP:

传输层

HTTP报文格式,head头包含内容,以及HTTP响应号分别表达的意思 #http报文格式

HTTP 响应报文由状态行、响应头部、空行 和 响应包体 4 个部分组成

响应头部:

General(基本信息)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bppFYQRn-1666852950221)(C:\Users\lenovo\AppData\Roaming\marktext\images\2022-09-09-13-19-56-image.png)]

Response Headers(响应头):
  • Keep-Alive
Request Headers(请求头):
  • Accept:浏览器端可以接受的媒体类型,

  • Accept-Encoding:浏览器申明自己接收的编码方法

  • Accept-Language:浏览器申明自己接收的语言。

Query String Parameters(请求参数):
  • 参数

数据库建立索引的优缺点;

优点:
  1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
  2. 可以加快数据的检索速度,这是主要原因
  3. 可以加速表与表之间的连接,特别是在实现数据的参考完整性方面特别有意义
  4. 在使用分组和排序字句进行数据检索时,同样可以显著减少查询中分组和排序的时间
  5. 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
缺点:
  1. 穿件索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
  2. 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占物理空间。
  3. 对表的数据进行增删改的时候,索引也要动态的维护,降低了数据的维护速度。

对查出的数据按字段降序排序,写SQL语句;

select * from table order by xxx desc;

对网络安全的了解; #网络安全

  • XSS攻击:Cross Site Script 跨站脚本攻击,它指的是恶意攻击者往Web页面里插入恶意的html+javascript的脚本和代码,当用户浏览该页之时,嵌入其中Web里面的恶意脚本会被执行,从而达到恶意的特殊目的。

  • SQL注入攻击:通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,比如删库等。但是必须要知道数据库表结构才行。

  • CSRF: Cross Site Request Forgery,垮站点请求伪造:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

  • DDoS:distributed denial of service分布式拒绝服务攻击:简单来说就是黑客发送大量的请求,导致你的服务器线程资源全部打满,正常用户根本无法发送请求,你的网站就宕机了。DoS攻击是一对一的,就是黑客搞一台高性能服务器,拼命发送请求给你的一台服务器。

你可能感兴趣的:(秋招,面试,linux,网络)