草庐IT

0-0-1 测试面试题- 5测试方法_6压力测试怎么测_7设计朋友圈点赞_8HTTP报文段_9HTTP请求报文_10TCP握手

annyanny 2023-03-28 原文
  • 面试题及部分解析答案来自牛客网https://www.nowcoder.com/exam/interview/
  • 以下所述内容并不是百分之百正确,仅供参考。
  • 5 了解什么测试方法?

  • 测试的方法?
  • 写测试用例的方法?
  • 分析测试点的方法?
  • 测试是个大工程,很多环节,具体是指什么方法?
  • 一些分析测试点的方法:边界值、等价类、流程图、场景法、因果图
  • 答案:
  1. 等价类划分
  2. 边界值分析
  3. 错误推测法
  4. 因果图法
  5. 逻辑覆盖法
  6. *程序插桩技术?
  7. 基本路径法
  8. *符号测试?
  9. *错误驱动测试
  • 6 项目中压力测试怎么做?

  • 明确对哪个部分做压力测试,以秒杀活动为例。
  • 确定性能需求,明确压力的性能指标,确定测试点,对这些测试点施压。
  • 可以通过写脚本产生压力机器人,对服务器进行发包和收包的操作。
  • 也可以借助Jemeter、LR工具,模拟多用户同时操作。
  • 明确对测试点设计的压力指标。需要明确压力测试限制的数量,即用户并发量。
  • 测试结束后,通过数据定位性能问题,通过测试可以得到吞吐量、平均响应时间等数据。
  • 这个数据是整个后台处理逻辑综合作用的结果。此时关注系统的CPU、内存,然后对比吞吐量、平均响应时间达到瓶颈时,这些数据的情况。
  • 然后就能确认性能问题是系统的哪一块造成的。
  • 7 设计一个朋友圈点赞的测试用例

  • 功能测试

  • 点赞一条朋友圈,验证是否成功。
  • 用例名称:like-01
  • 所属模块:点赞模块
  • 优先级:p1
  • 标题:朋友圈点赞成功
  • 前置条件:账号已登录;好友列表不为空;朋友圈列表不为空;联网。
  • 测试数据:无
  • 测试步骤:点击“朋友圈”,查看朋友圈信息,点击点赞按钮。
  • 预期结果:点赞按钮由灰色变为红色,并在点赞列表中显示当前用户的头像。
  • 实际结果:执行后添加。
  • 测试版本:
  • 测试人员:
  • 备注:
  • 接口测试

  • 点赞朋友圈,验证朋友能否收到提示信息。
  • 性能测试

  • 点赞朋友圈,是否在规定时间显示结果,是否在规定时间在朋友手机上进行提示。
  • 兼容性测试

  • 在不同的终端进行测试,验证是否成功。比如iPad、电脑、手机。
  • 8 HTTP的报文段是什么样的?

  • 请求格式:起始行-请求头-空行-请求体(get\delete 无请求体,post\put有请求体)
  • 响应格式:起始行-响应头-空行-响应体
  • 内容:

  • 起始行:基本信息 请求——(方法 URL 版本信息);响应——(版本 状态码 原因)
  • header: 报文详细说明(key:value结构)
  • 空行
  • [body]:实际传输的数据,比如:文本、图片、视频......
  • 请求——header特有字段。

  • Host: 请求特有字段。 告诉服务器此请求该由哪个主机负责处理并响应。通常服务器端托管多个虚拟主机。
  • User-Agent: 请求特有字段,描述发起请求的客户端,让服务器依据此字段值来返回合适此浏览器显示的页面。
  • 响应——header特有字段

  • Server: 服务端向客户端展示当前正在提供web服务的软件名称和版本号。
  • 通用字段

  • date:HTTP报文的创建时间,通常显示在响应头中。缓存策略
  • Content-Type: body的长度。
  • 补充:状态码

  • 100~199表示请求已收到继续处理,
  • 200~299表示成功,
  • 300~399表示资源重定向,
  • 400~499表示客户端请求出错,
  • 500~599表示服务器端出错
  • 200:响应成功
  • 302:跳转,重定向
  • 400:客户端有语法错误
  • 403:服务器拒绝提供服务
  • 404:请求资源不存在
  • 500:服务器内部错误
  • 9 说一说HTTP请求报文

  • 请求报文包含哪几部分?

  • 请求行 包括请求方法,统一资源定位(路径), 协议版本。
  • 请求头 包括一系列的字段名和字段值。比如Host,告诉服务器指定哪个主机处理请求;User-Agent, 告诉服务器客户端的浏览器描述类型,服务端以此返回适合在该浏览器显示的页面。
  • 空行 区分请求头和请求体。
  • 请求体 请求的数据。POST和PUT有请求体,GET和DELETE没有请求体。
  • 请求方法都有哪些?

  1. GET:请求获取URL标识的资源。
  2. POST: 在URL所标识的资源后附加资源
  3. PUT:请求服务器存储一个资源,由URL作为其标识
  4. DELETE:请求服务器删除由URL所标识的资源
  5. HEAD:请求获取由URL标识的资源的响应消息报头
  6. TRACE:用于测试和诊断,请求服务器回送收到的请求信息
  7. CONNECT:保留
  8. OPTION:请求查询服务器性能
  • 10 说一下TCP三次握手,以及为什么不是两次。

  • TCP:Transmission Control Protocol,面向连接的、可靠的、基于字节流的传输层通讯协议。
  • 第一次握手,A向服B发送一个请求,尝试建立连接;
  • 第二次握手,B向A发送请求确认,并发送可建立连接的请求;
  • 第三次握手,A向B发送确认建立连接响应。
  • 两次握手,双方不能都确认可以发送和接收数据。
  • 答案:

  • 第一次握手:建立连接时,客户端发送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连接成功)状态,完成三次握手。
  • 为什么不是两次: 在服务端对客户端的请求进行回应(第二次握手)后,就会理所当然的认为连接已建立,而如果客户端并没有收到服务端的回应呢?此时,客户端仍认为连接未建立,服务端会对已建立的连接保存必要的资源,如果大量的这种情况,服务端会崩溃。
  • 自己的理解:

  • 第一次握手,客户端发送请求syn=j;
  • 如果服务端可以响应,会发送一个响应ack=j+1。
  • 第二次握手,服务端发送响应ack=j+1,并发送新的请求syn=k;
  • 如果客户端可以响应,就需要告诉服务端。
  • 第三次握手,客户端发送响应ack=k+1。
  • 三次握手包含两次请求和响应,且是互相的。

 

有关0-0-1 测试面试题- 5测试方法_6压力测试怎么测_7设计朋友圈点赞_8HTTP报文段_9HTTP请求报文_10TCP握手的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  4. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  5. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  6. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  7. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  8. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  9. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  10. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

随机推荐