🌓

http协议详解及操作

互联网,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用,核心就是不同构建在TCP/IP协议基础上的http请求。固本求原,本篇文章将对http协议进行整理学习、然后使用代码去操作。

1.http协议

1.1如何工作

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
一个HTTP”客户端”是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

一个HTTP”服务器”同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
以下图表展示了HTTP协议通信流程:
这里写图片描述

因此,该协议就是客户端和服务器交换数据的一揽子标准。

可以是浏览器发起请求,也可以是程序代码去发起。
序号 方法 描述 1 GET 请求指定的页面信息,并返回实体主体。 2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报文 3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。 5 DELETE 请求服务器删除指定的页面。 6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 7 OPTIONS 允许客户端查看服务器的性能。 8 TRACE 回显服务器收到的请求,主要用于测试或诊断。 客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,见下文http报文。

HTTP响应也由四个部分组成,分别是:状态行、消息报文、空行和响应正文。
这里写图片描述

1.2协议特点

HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

1.3HTTP协议的报文

阅读全文

人类、经济、太阳,管他呢

对我来说,这个世界的存在简直太其妙了!我能听见音响里传出的音乐声,我知道自己能听见,我能跟着旋律,能陶醉其中,但是我却不知道,我为什么能听见。你可能会说,因为你有耳膜啊,通过录音设备,把音乐声波转存成了电信号,电信号再被计算机识别成二进制,再通过流媒体的格式从网络传输到你的电脑上,你的计算机接受到信息,再把音乐的流信号翻译成电信号,电信号强弱控制音响震动,在...

阅读全文

Docker CE 镜像源站

安装帮助123456789101112131415161718# step 1: 安装必要的一些系统工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 安装GPG证书c...

阅读全文

有赞.测试团队介绍(转)

转载自:友赞技术团队主页
转载原因:学习、借鉴先进生产力
一、基本概况

有赞,旨在为商户提供强大的微商城和完整的移动零售解决方案,是一个移动零售服务商,正在新零售的潮流中激流勇进、开疆拓土,用产品技术撬动巨大的市场。有赞拥有世界级的 SaaS 电商解决方案,每天处理几百万订单、几亿条消息,且量级仍在不断攀升中,有赞还开放了有赞云,连接数十万开发者,大大提升了SaaS 对商家产生的价值。
有赞测试团队三分之二以上成员来自于阿里、腾讯、网易等公司,他/她们分别在电商事业部、零售事业部、餐饮事业部、支付事业部及共享技术事业部等部门贡献自己的力量。

二、我们的日常工作

测试团队负责相关项目具体测试工作、自动化建设、合并发布流程管控、设计开发线上业务级别可用性监控、同时在研发提升测试效率的工具。
有赞测试职位主要负责度量产品质量及研发测试效率工具。从度量产品质量角度讲,有赞测试人员需要具备白盒测试能力、CodeReview能力、业务功能测试,从而实现核心系统可持续自动化测试,保障系统在频繁发布情况依然是稳定的、高可用的。对于效率工具研发,测试同学完成相关第三方mock(例如短信、支付)、应用级健康检查、线上业务级可用性监控、持续集成工具、UI自动化、测试工作台、性能测试平台、全链路性能压测等。

2.1 具体项目测试

有赞的项目分为标准需求项目、技术重构项目、优化项目、缺陷修复项目。有限的测试资源通过不同策略支持着绝大部分业务产品的测试工作。
第一、对于标准需求项目或者跨多个业务的项目,一定会有测试投入,并且会有一位PTM来协调测试工作。PTM需要确保所有需求点都拆分到各个业务测试同学手里,跟踪相关测试同学按时提交标准测试方案。当测试方案汇总后,PTM需要评估后续测试过程中,测试人员如何投入。即哪些业务的功能测试PTM可顺带执行掉,哪些确实需要对应业务线测试同学来完成,以避免一个项目投入过多测试同学。
第二、技术重构改造项目,这种一般是单应用或者极少应用改造,但不改变业务使用规则。这类项目测试同学只要设计测试方案并完成测试用例落地即可,用例的执行由开发自行完成。测试同学要做的就是对新系统进行自动化覆盖。如有需要,测试会在上线前做质量check。
第三、对于小型项目,如果开发的自测场景与测试同学的测试场景基本一致,那开发自行搞定即可;或者测试同学把需要特别关注的或者风险点给开发同学简单介绍。对于有差异的,测试同学把差异点向开发同学描述清楚即可。
有赞测试同学拿到具体需求后,按照有赞测试对需求分析和测试方案统一要求,完成相关工作。
有赞.项目协作图

测试同学在参加需求评审或者测试方案设计之前,需要认证阅读需求文档,从获取相关的信息:
第一、这个需求是给哪些角色使用的。例如,高级管理员、普通管理员、库管人员、核销员;还是买家,是大众买家还是特定买家。
第二、不同角色,在什么环境下使用这个些功能。例如PC后台、店铺收银台、手机端、还是有赞的移动终端。
第三、整个项目是否存在对象的生命周期扭转,例如订单对象、店铺等,它们在什么条件下会发生什么样的扭转。即明确状态发生变更的条件规则,确保对象生命周期是有终态的。
第四、明确每个业务点的人机交互过程及规则,业务过程是否连贯明确;即如何使用这个需求。
需求分析后,需要输出对象生命周期图、业务时序图、用例图、待确认的问题、风险点清单。并就相关问题、风险与产品、开发进行多次沟通,直到问题得到明确答复。
有赞.需求分析.需求拆解

一、功能测试设计的完整性,取决于测试人员对需求分析的深入程度及其经验。为了弥补测试同学经验不足,我们梳理了《功能测试.页面测试.基础篇》《有赞云.测试参考规范》《有赞云.carmen接口自动化参考规范》等供平时设计参考。同时,不定期组织业务分享,提高测试人员的业务全局观及跨业务耦合与风险评估能力。
二、提供《有赞.异常测试基本场景》指导测试人员如何考虑异常。包括Redis缓存、消息、大数据定时任务处理、多系统协同等。
三、有赞有安全测试专员及虚拟小组,提供安全测试方面的指导和工具;针对SQL注入、XSS、越权、业务规则安全、文件上传&下载、重定向定制常规安全测试用例,指导日常测试。
四、其它的专项测试,根据实际情况定义指导案例及分享。
有赞.测试大纲模板

阅读全文

敏捷开发管理在我司的实践

我们研发团队(产品、研发、测试)规模30多,互联网电商,快速成长中。
就个人经验来看,技术主管的管理能力绝对达到一定水平,团队研发管理井井有条,很有效率(基于已有积累,很快速的一个月上线新产品,快速迭代完成产品需求)。下面就结合我所见所闻,结合SCRUM的理论,结合我们公司来进行描述,一边反观一边学习先进的管理的理念和配套工具、流程规范。
目前采用的是Visual Studio Team Foundation Server,作为scrum的工具。

主要理论参考:scrum中文网

Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。

在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint backlog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。 Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。

Scrum流程如下图:

Scrum框架包括3个角色、3个工件、5个事件、5个价值、4个支柱

3个角色

Scrum团队中包括三个角色,他们分别是:

我司有专职产品2名,兼职产品2名(架构和Scrum Master兼)。
开发团队人数28(全员),分为的数个行政管理单元:开发一组、开发二组、开发三组、测试组、前端组。就人员配置看,每组开发组人员2-6人规模不等,是由最开始的一个组分裂成的(人员规模扩大)。
Scrum Master,数年电商和技术管理经验,srum理念的推动者。

3个工件

产品作为产品Backlog的生产者,对产品负责,使用sftp方式对外交付原型设计,做产品和测试依据,迭代。 SprintBacklog,按周定义冲刺,冲刺内容为产品Backlog的拆分项,通常按照:原型设计、UI设计、ERP设计及review、代码实现、测试、发布来进行。

5个事件

我公司并没有遵循该原则,变通为周例会,小组leader汇报,进展情况在看板中更新。其实项目小组中是可以进行站会的,这是一个可以改进点。

5个价值

在我司主要体现在:
1、KPI的考核上。主要原则:积压工作会列入每月的考核,需要完成,若不能完成需给出合理理由,灵活控制。
2、周例会看板及看板权限的开放;
3、平等对话。
4、开放的知识库。

阅读全文

敏捷团队中,测试流程定义及Bug分级定义

当前流程,灵活处理。解决问题和效率为基本原则。

阅读全文

jenkins经验

1、关于进程即jenkins默认会kill掉自己生产的子进程。这个问题百度一下就解决。 2、莫名其妙的failure,命令执行的返回状态对jenkins的影响原则:自己编写的shell脚本,函数必须有一个自己想给出的返回状态,告知jenkins该状态成功或失败后,是否继续执行。因为从安全角度考虑,jenkins面对每一个命令,只要抛出异常,必然是终止其执行的...

阅读全文

我在聚宽共享函数一

该函数设计目的:保护既得利润,以N日内持仓股票最低盈利被突破为触发条件,所以持股时间最低为N日,为保证有效持股,N日之前亏损不会计入(该条件不需要的可以自己去掉)。函数以股票为输入,需要在自己的函数(持股或卖出判断)每日调用。需要自定义全局(JQ提交代码不能提交函数外的东东)。 函数怎么运行的:为输入的股票(当然是自己的持仓的)建立一个长度为N的队列(FIF...

阅读全文

[JavaWeb基础]jsp

以下内容整理编辑参考:http://www.runoob.com 什么是jspJSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。而识别它的方式,是以<%开头以%>结束的标签。 JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,动态地创建网页。 JSP标签有多种功能,比...

阅读全文

Appium_Python_Api

本文转自TesterHomeAppium_Python_Api文档

1.contexts
contexts(self):

1
2
3
4
5
6
Returns the contexts within the current session.
返回当前会话中的上下文,使用后可以识别H5页面的控件

:Usage:
driver.contexts
用法 driver.contexts

2. current_context
current_context(self):

1
2
3
4
5
Returns the current context of the current session.
返回当前会话的当前上下文
:Usage:
driver.current_context
用法driver. current_context

3. context
context(self):

1
2
3
4
5
Returns the current context of the current session.
返回当前会话的当前上下文。
:Usage:
driver.context
用法driver. Context

4. find_element_by_ios_uiautomation
find_element_by_ios_uiautomation(self, uia_string):

阅读全文