软件测试面试题(二)

请你说一下HTTP的报文段是什么样的?

1、请求方法 GET:请求获取Request——URL所标识的资源 POST:在Request——URL所标识的资源后附加资源 HEAD:请求获取由Request——URL所标识的资源的响应消息报头 PUT:请求服务器存储一个资源,由Request——URL作为其标识 DELETE:请求服务器删除由Request——URL所标识的资源 TRACE:请求服务器回送收到的请求信息(用于测试和诊断) CONNECT:保留 OPTIONS:请求查询服务器性能
2、URL URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源。URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化。
3、协议版本 格式为HTTP/主版本号.次版本号,常用为:HTTP/1.1 HTTP/1.0
4、请求头部 Host:接受请求的服务器地址,可以是IP或者是域名 User-Agent:发送请求的应用名称 Connection:指定与连接相关的属性,例如(Keep_Alive,长连接) Accept-Charset:通知服务器端可以发送的编码格式 Accept-Encoding:通知服务器端可以发送的数据压缩格式 Accept-Language:通知服务器端可以发送的语言
1、协议版本,同请求报文
2、状态码,100 ~ 199表示请求已收到继续处理,200~ 299表示成功,300~ 399表示资源重定向,400~ 499表示客户端请求出错,500~599表示服务器端出错 200:响应成功 302:跳转,重定向 400:客户端有语法错误 403:服务器拒绝提供服务 404:请求资源不存在 500:服务器内部错误
3、响应头部 Server:服务器应用软件的名称和版本 Content-Type:响应正文的类型 Content-Length:响应正文的长度 Content-Charset:响应正文所使用的编码 Content-Encoding:响应正文使用的数据压缩格式 Content-Language:响应正文使用的语言

详情请参考👉HTTP报文是什么样子的
详情请参考👉http报文

什么是 HTTP 协议?

全称:hypertext transfer protocol(超文本传输协议),是 TCP/IP 协议族的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

通俗的讲,当客户端或者浏览器连接上服务器之后,若想获得 web 服务器中的 web 资源,就必须与 服务端进行通信,通信的双方必须能够解析发送的消息,那么这个消息就要符合一定的通讯格式,HTTP 就是用于定义双方的通信格式。

HTTP的报文结构

http的请求报文和响应报文的格式基本一样,主要分为三部分:

起始行(start line): 描述请求或响应的状态
头部字段(header): 以 key:value 的形式展示
数据实体(entity/ body) :实际要传输的数据,可以是文本,也可以是图片、文件、视频等二进制数据
其中 “起始行” 和 “头部字段” 又一起被称为 “请求头” 或 “响应头” ,消息正文又被称为 “实体(entity)” 或者 与 “header” 相对应的 “body” 。 请求头和响应头与 “body” 中间有一个空行(CRLF)作为区分两者的边界,记住是第一个空行(CRLF),如果有多个空行,那么其他的空行则被归为“body”。
在这里插入图片描述

HTTP响应报文的状态码

在这里插入图片描述

请你说一说测试的常用方法

常用的黑盒测试方法有:等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法。

常用白盒测试方法: 静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。 动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。
白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

六种覆盖标准发现错误的能力呈由弱到强的变化:
1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。

请问你了解什么测试方法

等价类划分,边界值分析,错误推测,因果图法,逻辑覆盖法,程序插桩技术,基本路径法,符号测试,错误驱动测试

你在做项目中有做过压力测试吗,怎么做

1、首先对要测试的系统进行分析,明确需要对那一部分做压力测试,比如秒杀,支付
2、如何对这些测试点进行施压 第一种方式可以通过写脚本产生压力机器人对服务器进行发包收报操作 第二点借助一些压力测试工具比如Jmeter,LoadRunner
3、如何对这些测试点进行正确的施压 需要用压力测试工具或者其他方法录制脚本,模拟用户的操作
4、对测试点设计多大的压力比较合适? 需要明确压力测试限制的数量,即用户并发量
5、测试结束后如何通过这些数据来定位性能问题 通过测试可以得到吞吐量,平均响应时间等数据,这个数据的背后是整个后台处理逻辑综合作用的结果,这时候就可以先关注系统的CPU,内存,然后对比吞吐量,平均响应时间达到瓶颈时这些数据的情况,然后就能确认性能问题是系统的哪一块造成的

请你设计一个微信朋友圈点赞的测试用例

功能测试: 点赞某条朋友圈,验证是否成功
接口测试: 点赞朋友圈,验证朋友能否收到提示信息
性能测试:点赞朋友圈,是否在规定时间显示结果,是否在规定时间在朋友手机上进行提示 兼容性测试:在不同的终端比如ipad,手机上点赞朋友圈,验证是否成功

请你回答一下TCP三次握手,以及为什么不是两次

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
为什么不是两次: 在服务端对客户端的请求进行回应(第二次握手)后,就会理所当然的认为连接已建立,而如果客户端并没有收到服务端的回应呢?此时,客户端仍认为连接未建立,服务端会对已建立的连接保存必要的资源,如果大量的这种情况,服务端会崩溃。

请你说一下app性能测试的指标

1、内存:内存消耗测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性。当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格。 空闲状态指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲;中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。
内存测试中存在很多测试子项,清单如下: ●空闲状态下的应用内存消耗; ●中等规格状态下的应用内存消耗; ●满规格状态下的应用内存消耗; ●应用内存峰值; ●应用内存泄露; ●应用是否常驻内存; ●压力测试后的内存使用。
2、CPU: 使用Android提供的view plncopy在CODE上查看代码片派生到我的代码片 adbshell dumpsys CPUinfo |grep packagename >/address/CPU.txt来获取; 使用top命令view plncopy在CODE上查看代码片派生到我的代码片 adbshell top |grep packagename>/address/CPU.txt来获取。
3、流量: 网络流量测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。 流量测试包括以下测试项: 应用首次启动流量提示; 应用后台连续运行2小时的流量值; 应用高负荷运行的流量峰值。
4、电量: ●测试手机安装目标APK前后待机功耗无明显差异; ●常见使用场景中能够正常进入待机,待机电流在正常范围内; ●长时间连续使用应用无异常耗电现象。
5、启动速度: 第一类:首次启动–应用首次启动所花费的时间; 第二类:非首次启动–应用非首次启动所花费的时间; 第三类:应用界面切换–应用界面内切换所花费的时间。
6、滑动速度、界面切换速度
7、与服务器交互的网络速度

请你根据微信登录界面设计测试用例

一、功能测试
1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。
2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。
3.登录成功后能否能否跳转到正确的页面
4.检查能否选择不同登录方式进行登录,如使用手机号登录、使用微信号登录或扫码登录。
5.记住用户名的功能
6.登陆失败后,不能记录密码的功能
7.密码是否非明文显示显示,使用星号圆点等符号代替。
8.有验证码时,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色、刷新或换一个按钮是否好用
9.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确
10.输入密码的时候,大写键盘开启的时候要有提示信息。
11.什么都不输入,点击提交按钮,检查提示信息。
二、界面测试
1.布局是否合理,testbox和按钮是否整齐。
2.testbox和按钮的长度,高度是否复合要求。
3. 界面的设计风格是否与UI的设计风格统一。
4. 界面中的文字简洁易懂,没有错别字。
三、性能测试
1.打开登录页面,需要的时间是否在需求要求的时间内。
2.输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内。
3.模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转。
四、安全性测试
1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)。
2.用户名和密码是否通过加密的方式,发送给Web服务器。
3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript 验证。
4.用户名和密码的输入框,应该屏蔽SQL注入攻击。
5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)。
6.防止暴力破解,检测是否有错误登陆的次数限制。
7. 是否支持多用户在同一机器上登录。
8. 同一用户能否在多台机器上登录。
五、兼容性测试
1.不同移动平台或PC环境下下能否显示正常且功能正常
2.同种平台下不同微信版本下能否显示正常且功能正常。
3.不同的分辨率下显示是否正常。
六、本地化测试
1.不同语言环境下,页面的显示是否正确。

请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试

1、单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。
2、集成测试:通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。

  • 自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。
  • 自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。

3、系统测试:是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。
4、回归测试:回归测试是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。
5、验收测试:验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。验收测试包括Alpha测试和Beta测试。

  • Alpha测试:是由用户在开发者的场所来进行的,在一个受控的环境中进行。
  • Beta测试:由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者,开发者对系统进行最后的修改,并开始准备发布最终的软件。

你觉得自动化测试有什么意义,都需要做些什么

1、可以对程序的新版本自动执行回归测试
2、可以执行手工测试困难或者不可能实现的测试,如压力测试,并发测试,
3、能够更好的利用资源,节省时间和人力 执行自动化测试之前首先判断这个项目是不是和推广自动化测试,然后对项目做需求分析,指定测试计划,搭建自动化测试框架,设计测试用例,执行测试,评估。

请你说一下设计测试用例的方法

  • 黑盒测试:
    1.等价类划分 等价类划分是将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类,设计测试用例的时候要考虑这两种等价类。
    2.边界值分析法 边界值分析法是对等价类划分的一种补充,因为大多数错误都在输入输出的边界上。边界值分析就是假定大多数错误出现在输入条件的边界上,如果边界附件取值不会导致程序出错,那么其他取值出错的可能性也就很小。 边界值分析法是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法要和等价类划分法结合使用。
    3.正交试验法 正交是从大量的试验点中挑选出适量的、有代表性的点。正交试验设计是研究多因素多水平的一种设计方法,他是一种基于正交表的高效率、快速、经济的试验设计方法。
    4.状态迁移法 状态迁移法是对一个状态在给定的条件内能够产生需要的状态变化,有没有出现不可达的状态和非法的状态,状态迁移法是设计足够的用例达到对系统状态的覆盖、状态、条件组合、状态迁移路径的覆盖。
    5.流程分析法 流程分析法主要针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,这是从白盒测试中路径覆盖分析法借鉴过来的一种很重要的方法。
    6.输入域测试法 输入域测试法是针对输入会有各种各样的输入值的一个测试,他主要考虑 极端测试、中间范围测试,特殊值测试 。
    7.输出域分析法 输出域分析法是对输出域进行等价类和边界值分析,确定是要覆盖的输出域样点,反推得到应该输入的输入值,从而构造出测试用例,他的目的是为了达到输出域的等价类和边界值覆盖。
    8.判定表分析法 判定表是分析和表达多种输入条件下系统执行不同动作的工具,他可以把复杂的逻辑关系和多种条件组合的情况表达的即具体又明确;
    9.因果图法 因果图是用于描述系统输入输出之间的因果关系、约束关系。因果图的绘制过程是对被测系统的外部特征的建模过程,根据输入输出间的因果图可以得到判定表,从而规划出测试用例。
    10.错误猜测法 错误猜测法主要是针对系统对于错误操作时对于操作的处理法的猜测法,从而设计测试用例
    11.异常分析法 异常分析法是针对系统有可能存在的异常操作,软硬件缺陷引起的故障进行分析,分析发生错误时系统对于错误的处理能力和恢复能力依此设计测试用例。

  • 白盒测试: 白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序;穷举路径测试不可能检查出程序因为遗漏路径而出错;穷举路径测试发现不了一些与数据相关的错误。 白盒测试需要遵循的原则有:1. 保证一个模块中的所有独立路径至少被测试一次;2.所有逻辑值均需要测试真(true)和假(false);两种情况;3.检查程序的内部数据结构,保证其结构的有效性。4.在上下边界及可操作范围内运行所有循环。
    常用白盒测试方法:
    静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。
    动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。
    白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
    六种覆盖标准发现错误的能力呈由弱到强的变化: 1.语句覆盖每条语句至少执行一次。 2.判定覆盖每个判定的每个分支至少执行一次。 3.条件覆盖每个判定的每个条件应取到各种可能的值。 4.判定/条件覆盖同时满足判定覆盖条件覆盖。 5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 6.路径覆盖使程序中每一条可能的路径至少执行一次。

请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数量

性能测试常用指标:
从外部看,主要有
1、吞吐量:每秒钟系统能够处理的请求数,任务数
2、响应时间:服务处理一个请求或一个任务的耗时
3、错误率:一批请求中结果出错的请求所占比例
从服务器的角度看,性能测试关注CPU,内存,服务器负载,网络,磁盘IO
对登录功能做性能测试
单用户登陆的响应界面是否符合预期
单用户登陆时后台请求数量是否过多
高并发场景下用户登录的响应界面是否符合预期
高并发场景下服务端的监控指标是否符合预期
高集合点并发场景下是否存在资源死锁和不合理的资源等待
长时间大量用户连续登录和登出,服务器端是否存在内存泄漏
怎么测出可同时处理的最大请求数量?
可以采用性能测试工具(WeTest服务器性能),该工具是腾讯wetest团队出品,使用起来很简单方便,但测试功能相当强大,能提供10w+以上的并发量,定位性能拐点,测出服务器模型最大并发

如何测试登陆界面

一、功能测试
1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。
2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。
3.登录成功后能否能否跳转到正确的页面
4.用户名和密码,如果太短或者太长,应该怎么处理
5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况
6.记住用户名的功能
7.登陆失败后,不能记录密码的功能
8.用户名和密码前后有空格的处理
9.密码是否非明文显示显示,使用星号圆点等符号代替。
10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确
12.输入密码的时候,大写键盘开启的时候要有提示信息。
13.什么都不输入,点击提交按钮,检查提示信息。
二、界面测试
1.布局是否合理,testbox和按钮是否整齐。
2.testbox和按钮的长度,高度是否复合要求。
3.界面的设计风格是否与UI的设计风格统一。
4.界面中的文字简洁易懂,没有错别字。
三、性能测试
1.打开登录页面,需要的时间是否在需求要求的时间内。
2.输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内。
3.模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转。
四、安全性测试
1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)。
2.用户名和密码是否通过加密的方式,发送给Web服务器。
3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript 验证。
4.用户名和密码的输入框,应该屏蔽SQL注入攻击。
5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)。
6.防止暴力破解,检测是否有错误登陆的次数限制。
7. 是否支持多用户在同一机器上登录。
8. 同一用户能否在多台机器上登录。
五、可用性测试
1.是否可以全用键盘操作,是否有快捷键。
2.输入用户名,密码后按回车,是否可以登陆。
3.输入框能否可以以Tab键切换。
六、兼容性测试
1.不同浏览器下能否显示正常且功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)。
2.同种浏览器不同版本下能否显示正常且功能正常。
2.不同的平台是否能正常工作,比如Windows, Mac。
3.移动设备上是否正常工作,比如Iphone, Andriod。
4.不同的分辨率下显示是否正常。
七、本地化测试
1.不同语言环境下,页面的显示是否正确。

请你说一下死锁的原因,以及如何打破,如何查看死锁进程状态

1、死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
死锁的四个必要条件:
• 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
• 请求与保持条件(Hold and wt):已经得到资源的进程可以再次申请新的资源。
• 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
• 循环等待条件(Circular wt):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
java中产生死锁可能性的最根本原因是:
1)是多个线程涉及到多个锁,这些锁存在着交叉,所以可能会导致了一个锁依赖的闭环;2)默认的锁申请操作是阻塞的。 如,线程在获得一个锁L1的情况下再去申请另外一个锁L2,也就是锁L1想要包含了锁L2,在获得了锁L1,并且没有释放锁L1的情况下,又去申请获得锁L2,这个是产生死锁的最根本原因。
2、避免死锁:
• 方法一:破坏死锁的循环等待条件
• 方法二:破坏死锁的请求与保持条件,使用lock的特性,为获取锁操作设置超时时间。这样不会死锁(至少不会无尽的死锁)
• 方法三:设置一个条件遍历与一个锁关联。该方法只用一把锁,没有chopstick类,将竞争从对筷子的争夺转换成了对状态的判断。仅当左右邻座都没有进餐时才可以进餐。提升了并发度。
3、linux中查看死锁进程状态
使用pstack 和 gdb 工具对死锁程序进行分析 pstack 进程号 查看各个线程的堆栈信息 当进程吊死的时候,多次使用,死锁的线程将一直处于等锁的状态,确定某些线程一直没有变化,一直处于等锁的状态。那么这些线程很可能是死锁了。如果怀疑哪些线程发生死锁了,可以采用gdb 进一步attach线程并进行分析。 执行命令gdb attach 进程号,进入gdb调试终端 运行:(gdb) info thread

**请你说一下在浏览器中输入一个网址它的运行过程是怎样的?

1、查询DNS,获取域名对应的IP。
(1)检查浏览器缓存、检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。
(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。
(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时: 如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性。 如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性。
(4)如果本地DNS服务器也失效: 如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如http://baidu.com)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成。 如果采用转发模式(递归),则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成。
2、得到目标服务器的IP地址及端口号(http 80端口,https 443端口),会调用系统库函数socket,请求一个TCP流套接字。客户端向服务器发送HTTP请求报文:
(1)应用层:客户端发送HTTP请求报文。
(2)传输层:(加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务器建立起一个TCP连接。
(3)网络层:(加入IP头)路由寻址。
(4)数据链路层:(加入frame头)传输数据。
(5)物理层:物理传输bit。
3、服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。
4、关闭连接,TCP四次挥手。
5、客户端解析HTTP响应报文,浏览器开始显示HTML

ping

ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。

简单来说,ping可以向一个网络地址发送探测包,看该网络地址是否有响应并统计响应时间,以此测试网络。。

ICMP是Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ping命令发送数据使用的是ICMP协议。

ping会向目标ip发送一定长度的包,目标ip在规定的时间内返回同样长度的包给主机。例如,向百度发送ping的请求。

在这里插入图片描述
详情可查看👉ping返回的各种信息的含义
本文有参考👉ping的详解
常用的Ping 命令反馈的信息你知道是什么意思吗?
ping返回值的详细解
Replay form***...***:bytes=32time=238msTTL=128
1、bytes=32表示测试中发送的数据包大小是32个字节.
2、time=238ms表示与对方主机往返一次所用的时间time=238ms.
3、上面丢失度是0%,说明网址能正常访问打开,如果发现接收不了,数据全部丢失的话,那说明服务器空间上出了问题。
4、如果网络有问题,则返回如下所示的响应失败信息,或者直至Request timed out。表明网络连接故障。
5、TTL=128可以识别对方的操作系统。
TTL是生存时间,TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL时间越长,缓存时间越长,更新越不容易及时生效。
在这里插入图片描述
在这里插入图片描述
ping www.baidu.com后,会查询DNS,获取域名对应的IP。即这个回复的是百度的ip地址,可以通过这个ip地址访问百度
在这里插入图片描述

TCP与UDP的区别

在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Control Protocol、UDP(用户数据报协议,User Data Protocol)是传输层最重要的两种协议,为上层用户提供级别的通信可靠性。

  • TCP主要应用于文件传输精确性相对要求较高且不是很紧急的情景,比如电子邮件、远程登录等。TCP协议是一种可靠的、一对一的、面向有连接的通信协议。
  • UDP可以提高传输效率,所以UDP被广泛应用于数据量大且精确性要求不高的数据传输,比如我们平常在网站上观看视频或者听音乐的时候应用的基本上都是UDP传输协议。UDP传输协议是一种不可靠的、面向无连接、可以实现多对一、一对多和一对一连接的通信协议。
    在这里插入图片描述

OSI 的七层模型有哪些?

详情可参考👉OSI 的七层模型有哪些?
在这里插入图片描述

请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步

这些测试步骤分别在软件开发的不同阶段对软件进行测试,我认为对软件完整功能进行测试的系统测试很重要,因为此时单元测试和集成测试已完成,能够对软件所有功能进行功能测试,能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足了需求规格的定义,因此我认为系统测试很重要。

如果做一个杯子的检测,你如何测试

1.功能
(1)水倒水杯容量的一半
(2)水倒规定的安全线
(4)水杯容量刻度与其他水杯一致
(5)盖子拧紧水倒不出来
(6)烫手验证
2.性能
(1)使用最大次数或时间
(2)掉地上不易损坏
(3)盖子拧到什么程度水倒不出来
(4)保温时间长
(5)杯子的耐热性
(6)杯子的耐寒性
(7)长时间放置水不会漏
(8)杯子上放置重物达到什么程度杯子会被损坏
3.界面
(1)外观完整、美观
(2)大小与设计一样(高、宽、容量、直径)
(3)拿着舒服
(4)材质与设计一样
(5)杯子上的图案掉落
(6)图案遇水溶解
4.安全
(1)杯子使用的材质毒或细菌的验证
(2)高温材质释放毒性
(3)低温材质释放毒性
5.易用性
(1)倒水方便
(2)喝水方便
(3)携带方便
(4)使用简单,容易操作
(5)防滑措施
6.兼容性
(1)杯子能够容纳果汁、白水、酒精、汽油等。
7.震动测试
(1)杯子加包装(有填充物),六面震动,检查产品是否能应对铁路/公路/航空运输。
8.可移植性
(1)杯子在不同地方、温度环境下都可以正常使用。

如何对淘宝搜索框进行测试

一、功能测试

  1. 输入关键字,查看: 返回结果是否准确,返回的文本长度需限制
    1.1输入可查到结果的正常关键字、词、语句,检索到的内容、链接正确性;
    1.2输入不可查到结果的关键字、词、语句;
    1.3输入一些特殊的内容,如空、特殊符、标点符、极限值等,可引入等价类划分的方法等;
  2. 结果显示:标题,卖家,销售量,单行/多行,是否有图片
  3. 结果排序:价格 销量 评价 综合
  4. 返回结果庞大时,限制第一页的现实量,需支持翻页
  5. 多选项搜索:关键字 品牌 产地 价格区间 是否天猫 是否全国购
  6. 是否支持模糊搜索,支持通配符的查询
  7. 网速慢的情况下的搜索
  8. 搜索结果为空的情况
  9. 未登录情况和登录情况下的搜索(登录情况下 存储用户搜索的关键字/搜索习惯)

二、性能测试:

  1. 压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)
  2. 负载测试:看极限能承载多大的用户量同时正常使用
  3. 稳定性测试:常规压力下能保持多久持续稳定运行
  4. 内存测试:有无内存泄漏现象
  5. 大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。

三、易用性:交互界面的设计是否便于、易于使用

  1. 依据不同的查询结果会有相关的人性化提示,查不到时告知?查到时统计条数并告知?有疑似输入条件错误时提示可能正确的输入项等等处理;
  2. 查询出的结果罗列有序,如按点击率或其他排序规则,确保每次查询出的结果位置按规则列示方便定位,显示字体、字号、色彩便于识别等等;
  3. 标题查询、全文检索、模糊查询、容错查询、多关键字组织查询(空格间格开)等实用的检索方式是否正常?
  4. 输入搜索条件的控件风格设计、位置摆放是否醒目便于使用者注意到,有否快照等快捷查看方式等人性化设计?

四、兼容性

  1. WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
  2. IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用
  3. SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试
  4. 简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
  5. IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
  6. 与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用

五、安全性

  1. 被删除、加密、授权的数据,不允许被SQL注入等攻击方式查出来的,是否有安全控制设计;
  2. 录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞,如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。
  3. 通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;
  4. 对涉及国家安全、法律禁止的内容是否进行了相关的过滤和控制;

请你来说一下购物车的测试用例

1.界面测试
• 界面布局、排版是否合理;文字是否显示清晰;不同卖家的商品是否区分明显。
2.功能测试
未登录时:
• 将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加;
• 点击购物车菜单,页面跳转到登录页面。
登录后:
• 所有链接是否跳转正确;
• 商品是否可以成功加入购物车;
• 购物车商品总数是否有限制;
• 商品总数是否正确;
• 全选功能是否好用;
• 删除功能是否好用;
• 填写委托单功能是否好用;
• 委托单中填写的价格是否正确显示;
• 价格总计是否正确;
• 商品文字太长时是否显示完整;
• 店铺名字太长时是否显示完整;
• 创新券商品是否打标;
• 购物车中下架的商品是否有特殊标识;
• 新加入购物车商品排序(添加购物车中存在店铺的商品和购物车中不存在店铺的商品);
• 是否支持TAB、ENTER等快捷键;
• 商品删除后商品总数是否减少;
• 购物车结算功能是否好用。
3.兼容性测试
• 不同浏览器测试。
4.易用性测试
• 删除功能是否有提示;
• 是否有回到顶部的功能;
• 商品过多时结算按钮是否可以浮动显示。
5.性能测试
• 压力测试;
• 并发测试。

请你回答一下如何测试手机开机键?

功能测试: 按下开机键,屏幕能否亮起
性能测试: 按下开机键,屏幕能否在规定时间内亮起 压力测试 连续多次按下开机键,观察屏幕是否能一直亮起,到多久时间失灵
健壮性测试:给定一个中了病毒的手机或者是淘汰许久的老机子,安歇开机键观察屏幕能否亮起
可靠性测试 :连续按下开机键有限次数,比如1万次,记录屏幕未亮起的次数
可用性测试 :开机键按下费不费力,开机键的形状设计是否贴合手指,开机键的位置设计是否方便

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛_Chenpangzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值