自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程学习之路

祖传拖延症,专治老中医

  • 博客(41)
  • 收藏
  • 关注

原创 网络协议丨从物理层到MAC层

关于物理层和MAC层

2023-03-06 01:46:15 450

原创 网络协议丨FTP协议和P2P协议

FTP协议和P2P协议

2023-03-05 03:59:55 709

原创 什么是自动化测试?

每一个测试人,都会听说自动化测试。即使刚入行没有学过,工作中也会逐渐意识到自动化测试的重要性。那么,什么是自动化测试?自动化测试是,把人对软件的测试行为转化为由机器执行测试行为的一种实践。由自动化测试工具模拟之前需要人工在软件界面上的各种操作,并且自动验证其结果是否符合预期。这似乎开启了用机器代替重复手工劳动的自动化时代,我们可以从简单重复劳动中解放出来了。自动化测试的本质是先写一段代码,然后去测试另一段代码,所以实现自动化测试用例本身属于开发工作,需要投入大量的时间和精力,并且已经开发完成

2023-03-04 04:52:15 866

原创 网络协议丨ICMP协议

了解ICMP协议

2023-03-02 21:49:07 380

原创 网络协议丨HTTPS是什么?

我们都知道HTTP协议,那什么是HTTPS?我们都知道,HTTP有两个缺点——“明文”和“不安全”仅凭 HTTP 自身是无力解决的,需要引入新的 HTTPS 协议。由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有可信性。比如数据传输过程中的网络代理,它作为 HTTP 通信的中间人,在数据上下行的时候可以添加或删除部分头字段,也可以使用黑白名单过滤 body 里的关键字,甚至直接发送虚假的请求、响应,而浏览器和源服务器都

2023-03-01 00:42:22 2248

原创 网络协议丨理解一下MAC地址的概念

MAC 地址是一个网卡的物理地址,用十六进制,6 个 byte 表示。MAC 地址是一个很容易让人“误解”的地址。因为 MAC 地址号称全局唯一,不会有两个网卡有相同的 MAC 地址,而且网卡自生产出来,就带着这个地址。很多人看到这里就会想,既然这样,整个互联网的通信,全部用 MAC 地址好了,只要知道了对方的 MAC 地址,就可以把信息传过去。这样当然是不行的。 一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的 IP 地址,才是有远程定位功能的。

2023-02-28 01:44:17 507

原创 网络协议丨什么是缓存?

缓存(Cache)是计算机领域里的一个重要概念,我们日常使用也经常提到,只要学习了计算机,就无法避开这个概念。我们都知道,HTTP协议是我们这个请求方向服务器发起请求。获取资源。但是由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高。所以,非常有必要把“来之不易”的数据缓存起来,下次再请求的时候尽可能地复用。也就是说,这次成功获取的数据,在一段时间内,你再次去请求,就不用再请求一次了,本地已经缓存好,可以直接展现给你。就像你平时缓存好的网页,打开总是特别流畅,图片视频都不需要再等

2023-02-27 01:29:37 265

原创 网络协议丨HTTP使用TCP/IP协议传数据的过程

我们HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现了数据传输,但下面的细节是不可见的。但即使这样说,TCP/IP的工作过程还是显得很抽象。你可以把 HTTP 利用 TCP/IP 协议栈传输数据想象成一个发快递的过程。假设你想要发一个快递给朋友,但你要先拿个塑料袋套一下,这件快递就相当于 HTTP 协议里要传输的内容,比如 HTML,然后 HTTP 协议为它加一个 HTTP 专用附加数据,就是这个塑料袋。你把快递交给快递小哥,为了保护货物,他又加了层包装再贴了个标签,相当于在 TCP

2023-02-26 03:50:28 845

原创 网络协议丨TCP/IP四层分层协议

TCP/IP 协议,它是 HTTP 协议的下层协议,负责具体的数据传输工作,并且它还是一个“有层次的协议栈”。TCP/IP 协议提出了“分层”的概念,把复杂的网络通信划分出多个层次,再给每一个层次分配不同的职责,层次内只专心做自己的事情就好,分而治之,大事化小,从而解决了网络通信的难题。虽然只有四层,但非常完整且经典,是目前事实上的网络通信标准,研究它的实用价值最大。第一层叫“链接层”(link layer),负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 M

2023-02-25 02:38:54 607

原创 网络协议丨HTTP的中间代理

我们都知道HTTP协议是一个端对端协议:浏览器和服务器,也就是请求方和应答方。但现实中,这两个端之间相隔甚远,不可能两点一线地进行网络协议传输,中间肯定是需要经过其他的服务器去进行中转,直到真正要寻找的请求方。就像你租房子,很难一下子就找到真正的房东,中间总要经历个中介(这个比喻可能不是很恰当)。这个,就是HTTP的代理服务。但其实 HTTP 协议里对它并没有什么特别的描述,它就是在客户端和服务器原本的通信链路中插入的一个中间环节,也是一台服务器。对于代理服务,定义就是:服务本身不生产内容,

2023-02-24 03:15:27 125

原创 什么是性能?

计算机的性能我们日常经常提到,它关系到同一个时间段里,计算机能不能同时处理更多的事情,有更快的处理速度。对于计算机的性能,我们需要有个标准来衡量。这个标准中主要有两个指标。第一个是响应时间(Response time)或者叫执行时间(Execution time)。提升响应时间这个性能指标,就是让计算机处理得更快。第二个是吞吐率(Throughput)或者带宽(Bandwidth),提升这个指标,就是让计算机处理得更多。所以说,响应时间指的就是,我们执行一个程序,到底需要花多少时间。花的时间越少

2023-02-23 00:59:35 256

原创 冯·诺依曼体系结构:计算机的组成

冯·诺依曼体系结构确立了我们现在每天使用的计算机硬件的基础架构。所以学习计算机组成原理,必须学习和拆解冯·诺依曼体系结构

2023-02-22 01:42:22 726

原创 网络协议丨关于cookie

cookie日常开发测试都会经常接触,但是什么是cookie?Cookie 就是服务器委托浏览器存储在客户端里的一些数据,而这些数据通常都会记录用户的关键识别信息。因为HTTP协议本身无状态,也不会记录存储,所以在实际应用中很不方便,比如电商网站,用户每次都需要重新登录后才能浏览购物。所以cookie的使用就很重要,它可以让服务器记住用户,识别出用户的身份,并判断该给它游客的访问权限还是用户的访问权限。cookie在HTTP里传递给浏览器时,用到两个字段:响应头字段 Set-Cookie 和

2023-02-21 02:28:30 135

原创 网络协议丨安全与幂等

关于HTTP请求方法有两个比较重要的概念:安全与幂等。安全指的是什么?在 HTTP 协议里,所谓的“安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改。按照这个定义,只有 GET 和 HEAD 方法是“安全”的,因为它们是“只读”操作,无论 GET 和 HEAD 操作多少次,服务器上的数据都不会受到影响。而 POST/PUT/DELETE 操作会修改服务器上的资源,增加或删除数据,所以是“不安全”的。所以后两个方法现在很多服务器直接不支持或不处理。什么是幂

2023-02-20 01:54:24 209

原创 网络协议丨几个冷门的HTTP请求方法

PUT作用与 POST 类似,也可以向服务器提交数据,但与 POST 存在微妙的不同,通常 POST 表示的是“新建”“create”的含义,而 PUT 则是“修改”“update”的含义。在实际应用中,PUT 用到的比较少。而且,因为它与 POST 的语义、功能太过近似,有的服务器甚至就直接禁止使用 PUT 方法,只用 POST 方法上传数据。DELETE方法指示服务器删除资源,因为这个动作危险性太大,所以通常服务器不会执行真正的删除操作,而是对资源做一个删除标记。当然,更多的时候服务器就

2023-02-19 03:04:18 82

原创 网络协议丨HTTP需要注意的几个缺点

明文HTTP 协议里有一把优缺点一体的“双刃剑”,就是明文传输。“明文”意思就是协议里的报文(准确地说是 header 部分)不使用二进制数据,而是用简单可阅读的文本形式。用浏览器、Wireshark 或者 tcpdump 抓包后,直接用肉眼就可以很容易地查看或者修改,为我们的开发调试工作带来极大的便利。但是这也意味着,HTTP 报文的所有信息都会暴露,在漫长的传输链路的每一个环节上都毫无隐私可言,不怀好意的人只要侵入了这个链路里的某个设备,简单地“旁路”一下流量,就可以实现对通信的窥视。不

2023-02-18 06:01:04 158

原创 HTTP丨理解状态码

状态码(Status Code),是一个十进制数字,以代码的形式表示服务器对请求的处理结果,就像我们通常编写程序时函数返回的错误码一样。如果网页请求发生报错,就可以按f12查看,一般都能看到状态码报错。不过它的名字是“状态码”而不是“错误码”。也就是说,它的含义不仅是错误,更重要的意义在于表达 HTTP 数据处理的“状态”,客户端可以依据代码适时转换处理状态,例如继续发送请求、切换协议,重定向跳转等。目前 RFC 标准里规定的状态码是三位数,所以取值范围就是从 000 到 999。但当然不会有那

2023-02-17 02:56:06 383

原创 网络协议丨学习HTTP时需要理解的概念

一些学习HTTP时会接触到的概念

2023-02-16 00:37:58 60

原创 网络协议丨HTTP的特点

1.灵活可扩展性HTTP 协议最初诞生的时候就很简单,只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,“header+body”等,报文里的各个组成部分都没有做严格的语法语义限制,可以由开发者任意定制。这也帮助了HTTP 协议就随着互联网的发展再继续完善成长。在这个过程中,HTTP 协议逐渐增加了请求方法、版本号、状态码、头字段等特性。而 body 也不再限于文本形式的 TXT 或 HTML,而是能够传输图片、音频视频等任意数据,这些都是源于它的“灵活可扩展”的特点。2.可靠传输

2023-02-15 01:25:39 183

原创 网络协议丨HTTP请求过程

在浏览器网址栏输入回车以后,HTTP发起请求过程如下:1.浏览器从地址栏的输入中获得服务器的 IP 地址和端口号。输入网址,访问网站做的第一件事情一定是使用DNS协议进行域名解析,获得IP地址。因为HTTP 协议基于底层的 TCP/IP 协议,所以必须要用 IP 地址建立连接;如果不知道 IP 地址,就要用 DNS 协议去解析得到 IP 地址,否则就会连接失败。2.浏览器用 TCP 的三次握手与服务器建立连接。建立 TCP 连接后会顺序收发数据,请求方和应答方都必须依据 HTTP 规范

2023-02-14 01:57:45 419

原创 网络协议丨关于UR和URL

我们上网,只要有ip和DNS,对需要浏览的内容发起请求,是不是就可以任意访问了?不是。DNS和IP只是帮助你确认你要访问的那个网站。或者说要访问的那一台服务器。但不能确定你要访问哪一张图片,哪一个文档,哪一个视频,就像只能帮助你打开淘宝,但不能确认你要看哪一个商品详情。所以就出现了 URI(Uniform Resource Identifier),中文名称是 统一资源标识符,使用它就能够唯一地标记互联网上资源。URI 另一个更常用的表现形式是 URL(Uniform Resource Loc

2023-02-13 02:09:01 359

原创 网络协议丨关于DNS协议

在 TCP/IP 协议中使用 IP 地址来标识计算机,数字形式的地址只适用于计算机,但对于人类来说非常难记,使用起来其实并不方便。于是“域名系统”(Domain Name System)出现了,用有意义的名字来作为 IP 地址的等价替代。“www.baidu.com”肯定比一串ip地址要容易记忆,而且更容易输入。DNS 和 IP 地址一起标记了互联网上的主机位置。在 DNS 中,“域名”(Domain Name)又称为“主机名”(Host),为了使域名更便于记忆,所以域名的设计是有一定结构规律的

2023-02-12 01:50:52 78

原创 网络协议丨浏览器和服务器与HTTP的关系

首先说一下浏览器的定义。浏览器的正式名字叫“Web Browser”,顾名思义,就是检索、查看互联网上网页资源的应用程序,名字里的 Web,实际上指的就是“World Wide Web”,也就是万维网,就是我们日常讲的互联网。浏览器本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源。当然,浏览器上也不只有HTTP。例如,HTML 排版引擎用来展示页面,JavaScript 引擎用来实现动态化效果,甚至还有开发者工具用来调试网页,以及五花八门的各种插件和扩展。

2023-02-11 00:04:33 352

原创 网络协议丨什么是HTTP

关于HTTP的定义,大家都很了解:超文本传输协议(HyperText Transfer Protocol)那什么是超文本传输协议?“超文本传输协议”,它可以拆成三个部分,分别是:“超文本”“传输”和“协议”。先理解最重要的概念,协议。HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。接下来是传输。传输可以理解为相互通信。HTTP 是一个“传输协议”,所谓的“传输”(Transfer)其实很好理解

2023-02-09 23:59:05 72

原创 网络协议丨HTTP的由来

HTTP的诞生背景:互联网以及TCP/IP协议的出现。1989 年,蒂姆·伯纳斯 - 李提出了在互联网上构建超链接文档系统的构想。这篇论文中他确立了三项关键技术。①URI:即统一资源标识符,作为互联网上资源的唯一身份;②HTML:即超文本标记语言,描述超文本文档;③HTTP:即超文本传输协议,用来传输超文本。基于这三项技术,就可以把超文本系统完美地运行在互联网上,让各地的人们能够自由地共享信息,蒂姆把这个系统称为“万维网”(World Wide Web),也就是我们现在所熟知的 We

2023-02-08 23:50:05 145

原创 网络协议丨关于路由器

很多情况下,人们把网关就叫做路由器。其实不完全准确,而另一种比喻更加恰当:路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的 IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关。任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下 MAC 头和 IP 头,看看,根据自己的路由算法,选择另一只手,加上 IP 头和 MAC 头,然后扔出去。这个时候,问题来了,该选择哪一只手?IP 头和 MAC 头加什么内容,哪些变、哪些不变呢?

2023-02-05 03:49:45 55

原创 网络协议丨关于ping一下

无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题。突然间就连不上了,且找不到原因。一般情况下,你会想到 ping 一下。ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议。网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题的时候,要传出消息来,报告情况,这样才可以调整传输策略。ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源

2023-02-04 02:17:50 255

原创 网络协议丨自动配置ip,动态主机配置协议DHCP

配置了 IP 之后一般不能变的,配置一个服务端的机器还可以,但是如果是客户端的机器呢?每次使用都要配置 IP 地址,那可怎么办?还有人事、行政等非技术人员,如果公司所有的电脑都需要 IT 人员配置,会非常麻烦。因此,我们需要有一个自动配置的协议,也就是动态主机配置协议(Dynamic Host Configuration Protocol),简称 DHCP。有了这个协议,网络管理员就轻松多了。他只需要配置一段共享的 IP 地址。每一台新接入的机器都通过 DHCP 协议,来这个共享的 IP 地址里申请

2023-02-03 03:09:47 338

原创 网络协议丨关于IP地址的知识点

如何配置一个ip地址?你可以用命令行自己配置一个地址。可以使用 ifconfig/ipconfig,也可以使用 ip addr。设置好了以后,用这两个命令,将网卡 up 一下,就可以开始工作了。使用 net-tools:$ sudo ifconfig eth1 10.0.0.1/24$ sudo ifconfig eth1 up使用 iproute2:$ sudo ip addr add 10.0.0.1/24 dev eth1$ sudo ip link set up eth1

2023-02-02 01:27:26 43

原创 网络协议丨网络程序如何工作

首先假设网络包是个buffer,进入一个网络请求处理流程。当一个网络包从一个网口经过的时候,网口拿到了,首先先看看要不要进行处理一把,有的网口配置了混杂模式,凡是经过的,全部拿进来。拿进来以后,就要交给一段程序来处理,调用 process_layer2(buffer)。这个函数是干什么的呢?从网络包中,摘掉二层的头,看一看,应该根据头里面的内容做什么操作。假设你发现这个包的 MAC 地址和你的相符,那说明就是发给你的,于是需要调用 process_layer3(buffer)。这个时候,网络包里

2023-02-01 02:30:47 55

原创 网络协议执行流程

HTTP网络协议发起请求过程

2023-01-30 23:33:53 192

原创 传统软件产品如何设计测试策略

第一,单元测试单元测试属于白盒测试的范畴,通常由开发工程师自己完成,由于越早发现缺陷其修复成本越低,所以传统软件产品的测试策略提倡对单元测试的高投入。另外,传统软件产品,生命周期都比较长,通常会有多个版本持续发布,为了在后期的版本升级过程中能够尽早发现并快速定位问题,每次 build 过程中都会多次反复执行单元测试,这也从另一个角度反映出单元测试的重要性。第二,API 测试API 测试,主要针对的是各模块暴露的接口,通常采用灰盒测试方法。灰盒测试方法是介于白盒测试和黑盒测试之间的一种测试技

2023-01-30 03:26:59 111

原创 互联网产品的测试策略如何设计

发布周期的巨大差异决定了,传统软件产品的测试策略必然不适用于互联网产品的测试,二者的测试策略必然在测试执行时间和测试执行环境上有巨大差异。比如,对于功能自动化测试用例,执行一轮全回归测试需要 12 小时,对传统软件来说这根本不是问题,因为发布周期很长,留给测试的时间也会很充裕。但对互联网产品来说,通常 24 小时就会有一到两次的发布,发布流程通常包含了代码静态扫描、单元测试、编译、打包、上传、下载、部署和测试的全流程。显然留给测试执行的时间就非常有限,传统软件动辄十几个小时的测试执行时间,在互联网产

2023-01-28 18:59:07 83

原创 软件测试工程师需要掌握的非测试知识

与开发工程师相比,测试工程师需要了解的技术种类要多得多,视野也需要宽广很多,只是在每类技术的深度方面不如开发工程师。可以参照下面这个比喻,来理解开发工程师和测试工程师的对知识的要求:开发工程师通常是“深度遍历”,关注的是“点”;而测试工程师通常是“广度遍历”,关注的是“面”。如果花时间静下心来仔细想一下,很可能会把自己吓一大跳,需要了解掌握的非测试知识实在是太多了,这简直就是一个 mini 版的系统架构师啊!小到 Linux/Unix/Windows 操作系统的基础知识,Oracle/MyS

2023-01-28 02:07:08 70

原创 测试开发工程师的核心竞争力?

除了代码开发能力,测试开发工程师更要具备测试系统需求分析的能力。你要能够站在测试架构师的高度,识别出测试基础架构的需求和提高效率的应用场景。从这个角度说,你更像个产品经理,只不过你这个产品是为了软件测试服务的,你的目标是软件的质量。除此之外,你还要了解更高级别的测试架构部署和生产架构部署、你还必须对开发采用的各种技术非常熟悉。可见,对于测试开发工程师的核心竞争力要求是非常高的,这也是现今市场上资深的测试开发工程师的价格会高于资深的开发工程师的原因。对于测试开发工程师来说,你需要具备优秀的测试系统

2023-01-27 03:57:30 48

原创 功能测试工程师的核心竞争力是什么?

为什么要了解软件测试工程师的核心竞争力?因为只有当你真正明白了自己的核心竞争力,你才能理清“应该做什么”和“应该怎么做”这两个问题,才能朝着正确的方向前行。●作为测试人员,必须要深入理解业务,但是业务知识不能等同于测试能力。●测试开发岗位的核心其实是“测试”,“开发”的目的是更好地服务于测试,我们看重的是对测试的理解,以及在此基础上设计、开发帮助测试人员提高效率并解决实际问题的工具,而不是一个按部就班、纯粹意义上的开发人员。目前的测试工程师分为两大类别,一类是做业务功能测试的,另一类是做测试

2023-01-26 05:40:28 136

原创 如何做好一个测试计划?

软件项目通常都会有自己的项目计划。软件测试作为整个项目中的重要一环,也需要制定一个周全的测试计划。软件测试计划的制定通常是在需求分析会议后开始,并且是整个软件研发生命周期中的重要环节。建议制定计划后,也可以给产品和开发看一眼。不过现在绝大多数公司都采用敏捷开发模式,传统意义上庞大的、正式的测试计划文档已经不太适合这样的模式,不够灵活。现在更多的是从原来的一次性集中制定测试计划,变成了以迭代的方式持续制定测试计划,更多的是体现在每个迭代(sprint)的计划环节,而且这样的短期测试计划可以非常迅速地根

2023-01-24 04:15:36 337

原创 如何填写软件缺陷报告?

如何高效填写软件缺陷报告?测试工程师需要利用对需求的理解、高效的执行力以及严密的逻辑推理能力,迅速找出软件中的潜在缺陷,并以缺陷报告的形式递交给开发团队——本质的目标是,帮助开发迅速定位并解决问题。所以缺陷报告不是单纯的bug记录。缺陷报告是测试与开发交流沟通的重要桥梁,也是测试工程师日常工作的重要输出。 作为优秀的测试工程师,最基本的一项技能就是,把发现的缺陷准确无歧义地表达清楚。划重点,准确无歧义。“准确无歧义地表达”意味着,开发工程师可以根据缺陷报告快速理解缺陷,并精确定位问题。同时,

2023-01-19 02:19:45 425

原创 如何设计测试用例?

如何设计一个好的测试用例?先问是什么,什么才是一个好的测试用例?我以前会认为,能尽可能多的找出测试对象的bug的用例就是好的用例。现在根据这个课程我想把这个观点再完善一下:一个好的用例,必须能够覆盖所有等价类和边界值。因为一旦真的足够覆盖了等价类和边界值,那么这个用例自然也能发现问题。什么是等价类?可以理解为输入值。一个可以输入具体数值的系统,不可能把每一个可以输入的值都验证一遍,所以需要等价类。比如负数为一个类,正数为一个类。或者按系统功能划分,比如这是个银行系统,超过2000就需要手

2023-01-18 02:05:08 69

原创 什么是软件测试?

测试工程师的目标:保证所测试的系统在各种应用场景下的功能符合设计的要求。按照我个人的思考,当测试对象到手上,首先要保证它的功能符合产品需求/用户使用需求,当功能确认符合以后,就可以开始思考非常规测试方法了。所以,要想做出完整度高的测试,除了显式功能需求,隐式功能需求也很重要。隐式功能需求可以从安全性、性能、兼容性去考虑。如果做到了

2023-01-17 00:01:45 48

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除