软件测试笔记

  • 软件=程序+文档+数据
  • 程序:指的是能够实现某种功能的指令集合,如C语言程序。
  • 数据:使程序能正常操纵信息的数据结构。
  • 文档:软件在开发、使用和维护过程中产生的图文集合。

软件测试的概念

  • 在规定条件下对程序进行操作,发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

软件测试目标

尽早、尽快、尽多的发现软件缺陷,促进软件质量和客户满意度的提升。

软件测试步骤

需求评审——测试计划——测试用例设计——环境搭建——测试执行(缺陷提交、回归验证)——测试报告。

测试计划的编写原则

  • 5W1H原则

1.what(做什么):测试范围

2.why(为什么做):测试目标

3.when(何时做)

4.where(在哪里):测试环境

5.who(谁来做)

6.how(如何做)

  • 测试计划的主要工作:

1.确定测试资源。

2.工作量估算,进度安排。

3.风险分析,测试策略。

4.编写计划书


测试用例

设计一种条件,软件在该条件下能够正常运行,并达到期望效果。

  • 包括内容(八大要素)

1.测试用例编号:产品名

2.测试阶段测试项目:对应一个功能模块(细分功能)

3.测试标题:直接对测试点进行计划,输入内容+结果,同一功能不能重复,(来自测试点)。

4.重要级别:高·中·低

5.预置条件:需要满足一些前提条件,否则无法执行测试用例。

6.测试输入:需要加工的测试信息,根据具体情况来设计,(跟步骤结合起来,要有指导性意义)。

7.步骤描述:明确给出每个步骤的描述,执行人员可以通过该步骤完成操作。

8.预期结果:根据预期输出对比实际结果,来判断实际结果是否符合要求。(预期结果唯一,不能出现是否、可能) 测试结果、测试者/时间、备注。

  • 测试用例的设计方法:等价类划分法、边界值法、错误推测法、因果图法。

简单的产品通用测试用例设计思路:

  • 外观界面: 测试产品的外观界面是否完美,是否符合设计规范。
  • 功能性: 测试产品的各项功能是否能正常使用。
  • 性能: 测试产品在特定环境下是否能保持它的稳定性。
  • 安全性: 测试产品自身或在使用过程中是否会产生安全性的问题。
  • 易用性: 测试产品使用起来是否复杂,用户体验是否良好。
  • 兼容性: 测试产品使用过程中是否可以兼容其它产品。

测试环境

  • B/S(Browser-Server)架构:浏览器-服务器架构,通过浏览器打开的应用软件,B/S使用广域网,不用专用网络,安全性较低。
  • C/S(Client-Server)架构:客户机-服务器架构,通过客户端打开的应用软件,需要安装客户端,C/S使用局部专用网络,安全性较高。测试环境的搭建,VMware的安装。

测试执行

  • 记录BUG,BUG管理工具“禅道”的使用。了解BUG管理工具Test Director/TD,Quality Center/QC是TD的升级版/JIRA.Mantis等。
  • 一个完整的BUG包括哪些内容:BUG的摘要(BUG的主要信息,一两句话即可)
  • BUG的具体描述:BUG的严重程度,BUG的优先级,BUG的状态,指派给谁,必要的附件(图片或日志),BUG的其他信息点。
  • BUG的常用状态:激活、已解决、关闭。
  • BUG的处理流程:记录BUG,提交BUG,回归测试。

软件测试报告

  • 定义:测试报告是一份描述软件的测试过程、测试环境、测试范围、测试结果的文档,用来分析总结系统存在的风险以及测试结论。
  • 包括内容:

1.测试过程:测试过程需要对测试人员、测试时间、测试地点、测试版本等信息进行描述。

2.测试环境:是指软件环境和硬件环境。

3.测试范围:是指所测模块上的所有功能点。

4.测试结果:指测试用例执行的情况汇总,执行结果通过率,BUG的问题汇总,BUG的分布情况等,其他有关联的测试结果都可以在这里描述。

5.系统存在的风险:系统中遗留的BUG会对软件造成什么风险。

6.测试结论:能否上线(通过)的结论。

7.附件清单:测试用例执行的清单和BUG清单。


常见的软件开发模型:

  • 大爆炸模型

最简单的开发模式,计划进度安排和正规开发过程几乎没有,几乎没有测试,所有精力都花费在开发软件和编写代码上。

  • 边写边改模型

摸着石头过河模型,典型的非正规说明书—编码、修改、反复,直到—最终产品;(没有计划和文档)

  • 瀑布模型

从最初构思到最终产品要经过一系列步骤,每一个步骤结束时,写好文档,项目小组组织审查,并决定是否进入下一步。如果项目没有准备好进入下一步,就停滞下来直到准备好。(有完整细致的说明,所有细节都有文档记录)

  • 螺旋模型

计划赶得上变化的模型,适合于大型复杂系统;测试人员最喜欢的模型,因为通过参与最早设计阶段,可以尽早的影响到产品。

  • 敏捷开发模型

敏捷开发提倡迭代式和增量式的开发模式,并强调测试在其中的作用;以用户为中心,以客户需求为导向的开发过程,客户是敏捷的关键环节,依赖客户的参与、测试驱动以及紧凑的迭代开发周期。


常见的软件测试模型

  • V模型

用户需求–>需求分析–>概要设计–>详细设计–>编码–>单元测试–>集成测试–>系统测试–>验收测试

V模型明确的将测试分为不同的阶段,测试策略包括:底层测试和高层测试,底层测试是为了源代码的正确,高层测试是为了整个系统满足用户的需求。

缺点:测试的对象是程序本身,忽视了测试对需求分析、系统设计等活动的验证和确认功能,直到后期的验收测试才被发现;过程是线性的、顺序的,不能反复和迭代。

  • W模型

左V: 需求分析–>概要设计–>详细设计–>编码实现(最底层)–>模块集成–>系统构建–>系统安装;

右V: 需求测试–>概要设计测试–>详细设计测试–>单元测试(最底层)–>集成测试–>系统测试–>验收测试;

优点:开发和测试同步,有利于尽早的发现问题;测试伴随整个软件开发周期,程序、需求、设计全部测试。

缺点:需求、设计、编码等活动保持线性前后关系,无法支持迭代开发模型。

  • H模型

测试级别之间不存在严格的次序关系,各阶段可以反复触发、迭代、增量。将测试完全独立出来,形成一个完全独立的流程,测试贯穿产品整个生命周期。

  • X模型

左边描述的是针对单独程序片段进行相互分离的编码和测试,通过频繁交接,最终集成为可执行的程序,再对这些可执行的程序进行测试。

理念:探索性测试,不进行实现计划的特殊类型测试,发散性测试。

优点:能发现更多测试计划之外的错误。

缺点:对测试人员要求极高,时间、人力、物力、等成本增加。

  • 敏捷测试模型

敏捷测试宗旨:测试驱动开发

核心价值观:沟通、反馈、尊重、学习、分享。

敏捷测试是协同测试的一种形式,程序员结对编程,程序员分饰测试员角色,敏捷测试是连续测试;侧重单元测试和验收测试,单元测试的过程是先设计单元测试用例,然后进行编码,之后执行测试。

强调客户参与,重点关注持续迭代的测试新开发的功能,建议尽早开始测试。单元测试通过之后代码集成到代码库中,再有客户进行验收测试。

  • 测试模型的使用:尽可能应用模型中对项目有实用价值的方面,不强行为了是用模型而使用模型,否则也没有实际意义,各种模型可以适当使用。

HTML基础

HTML 是用来描述网页的一种语言。HTML 是一种在 Web 上使用的通用标记语言。HTML 允许你格式化文本,添加图片,创建链接、输入表单、框架和表格等等,并可将之存为文本文件,浏览器即可读取和显示。

  • HTML 指的是超文本标记语言: HyperText Markup Language
  • HTML 不是一种编程语言,而是一种标记语言
  • 标记语言是一套标记标签 (markup tag)
  • HTML 使用标记标签来描述网页
  • HTML 文档包含了HTML 标签及文本内容
  • HTML文档也叫做 web 页面

入门实例

新建一个test HTML文件,如下:






ZONGXP


 

我的第一个标题

我的第一个段落。

  • 声明为HTML5文档
  • 元素是 HTML 页面的根元素
  • 元素包含了文档的元(meta)数据,如 定义网页编码格式为 utf-8(由于在大部分浏览器中直接输出中文会出现乱码,所以要在头部将字符声明为UTF-8)
  • 元素描述了文档的标题
  • 元素包含了可见的页面内容
  • < h1> 元素定义一个大标题
  • < p>元素定义一个段落
  • 保存后运行,即可在浏览器中打开

CSS

  • 层叠样式(cascading style sheets)
  • css可以用来为网页创建样式表,通过样式表可以对网页进行装饰。
  • 所谓层叠,可以将整个网页想象成是一层一层的结构,层次高的将会覆盖层次低的。
  • 而CSS就可以分别为网页的各个层次设置样式。
  • 可以将CSS样式编写到元素的style属性中,这种样式我们称为内联样式,内联样式只对当前的元素中的内容起作用如下:

maxiaohei

  • 也可以将css样式编写到head中的style标签里,然后通过CSS选择器选中指定元素,然后可以同时为这些元素一起设置样式,这样可以使样式进一步复用。将样式表写到style标签中,也可以使表现和结构进一步分离。【推荐使用(内部样式表)】

    css
    
    
    


  • CSS语法


    
        
        csss</tltle>
        <style type="text/css">
            /*
            css的注释:作用和HTML注释类似,只不过它必须写在style标签中,
            或者是CSS文件中
            CSS语法:
                选择器
                声明块
                
            选择器
                -通过选择器(p)可以选择页面中的指定元素
                    并且将声明块中的样式应用到选择器对应的元素上
                    
            声明块
                -声明块紧跟在选择器的后边,使用一对{}括起来
                声明块中实际上是一组一组的名值对结构,
                这一组一组的名值对我们称为声明
                在一个声明块中可以写多个声明多个声明之间用;隔开
                声明的样式名样式值之间用:来连接
            */
            p{
               color:red;
               font size:500px;
            }
        </style>
    </head>
    <body>
        <p style="color:red">今天天气真不错,PM2.5也就500</p>
    </body>
</html>

</code></pre> 
  <ul> 
   <li>CSS常用选择器</li> 
  </ul> 
  <pre><code><!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>常用选择器
		
	
	
	

锄禾日当午,汗滴禾下土。

锄禾日当午,汗滴禾下土。

锄禾日当午,汗滴禾下土。

锄禾日当午,汗滴禾下土。

锄禾日当午,汗滴禾下土。

锄禾日当午,汗滴禾下土。

  • –另HTML详细资料见:https://developer.mozilla.org/zh-CN/docs/Learn/HTML

Web测试的范围

  • 功能 主要从链接、表单、cookies、设计语言、数据库、文件上传等。

链接也称超链接,是指从一个网页指向另一个目标的连接关系,所指向的目标可能是一个网页,相同网页的不同位置,图片、电子邮件地址、文件、应用程序等;

链接最容易出现的几个错误:错误链接,如URL地址错误,空链接、死链接、孤立页面。

表单是系统与用户交换最主要的界面,测试过程主要关注程序能否正确处理客户提交的信息,并将信息正确的反馈到客户端,测试重点: 文本输入框对长度是否有限制, 文本输入框对字符类型是否有限制,文本输入框模式匹配是否正确,各按钮实现的功能是否正确。

cookies是能够让网站服务器把少量数据存储到客户端的硬盘或内存,或是从客户端的硬盘读取数据的技术。cookie的用途:

1>自动登录,登录时选择记住用户名,下次登录时会自动带出用户名。

2>广告精准投放,主动推送浏览过的商品。

cookies的测试方面:

1>cookies的安全性,不要存储一些敏感信息,进行字段加密。

2>cookies过期时间是否正确。

3>cookies的变量名与值是否正确。

4>cookies是否必要,是否缺少:一是生成的cookies文件是否与创建的一致,不能多也不能少,二是对于不必要的cookies可以删除。

5>cookies的作用域是否正确合理,多个作用域之间关系的测试。

设计语言测试web设计语言版本的差异可以引起客户端与服务端的严重问题,如HTML的版本;不同脚本语言,如Java,JavaScript,ActiveX,VBScript或perl等,也要进行验证。不同的设计语言与平台有不同的兼容性。不同的脚本语言执行的时间也不同;嵌入其他语言的能力,要考虑当前脚本语言对其他语言的支持程度;数据库可能升级,测试时要注意脚本语言支持数据库的完善程度。

文件上传只能上传允许的附件类型,不能上传脚本或可执行文件;不能单纯以后缀名来判断文件类型,上传的文件应该提供接口查看;上传的文件不应该直接保存到数据库中,而是将文件保存到服务器端的硬盘,该文件的基本信息保存到数据库。该文件上传到服务器后应该重命名,防止文件名冲突。

  • 性能

链接速度速度测试,链接的响应速度时间不能太长,一般不超过5秒。

负载测试(load testing),测试系统能够承受的最大负载,如最大用户量,最大业务量,最大数据量等以及性能表现。

压力测试(stress testing)测试系统在一定压力下的性能表现,通常业务的错误率不能超过5%。

  • 界面(GUI Graphical User Interface):即图形用户界面

格式验证,验证web页面中一些空间默认的标准定义,如默认值,项目按顺序排列等。

导航条测试,各页面的导航条是否能正确的显示,各页面下导航条显示的内容是否正确,不同状态下(如登录与未登录),导航条显示的内容是否正确,导航条的每项内容链接是否正确。

拼写和语法测试,验证页面内容,菜单和链接、图片、表格内容的拼写和语法。

页面排版测试, 页面标题验证,页面图形验证,,页面版本信息验证,页面长度验证。

tab键测试,tab顺序正确跳转。

  • 兼容性
  • 安全性

基本安全测试,各种登录模式的安全验证,对口令各种要求的测试。

用户权限测试

cookies和session的有效期验证,等特殊机制的验证。

敏感数据加密、数据存储安全性的验证。

认证测试,是否存在验证码,服务器不能对认证错误提供准确信息,如用户名错误,密码错误等;提供合理的锁定策略;预防认证被绕过,如SQL注入等。

会话管理测试,用户登录后,身份信息不再由客户端提交,而是以服务器端会话信息中所保存的信息为准。

权限管理测试,横向越权:攻击者尝试访问与他拥有相同权限用户的资源;纵向越权:一个低级别攻击者尝试访问高级别用户资源。

文件和目录测试,不存在不需要对外开放的敏感接口或者接口进行了完善的权限控制,禁止获取敏感的目录或文件信息,所有对目录的访问均不能打印出文件列表,禁止访问和下载文档的备份,不能越权获取到不该获取的文件。如dirbuster扫描。

  • DB数据库测试

为了发现错误和缺陷而运行数据库的过程,分为黑盒和白盒测试。

数据库黑盒测试,数据库表结构是否合理,数据结构(如数据类型、长度)是否正确定义,表与表之间的关系是否正确,主外键是否合理,索引的创建是否合理,存储过程功能是否合理,能否正确接收输入输出,能否正确增加,删除,更新数据,数据库操作权限定义是否合理,表级列级完整性约束条件是否满足,数据库的处理能力,可靠性,可维护性,性能是否满足要求。

  • 文档

Web自动化测试

  • 为什么要进行自动化测试:解决回归测试、压力测试、兼容性测试、提高测试效率,提高测试质量。
  • 自动化测试分类:

1.黑盒测试(功能测试)

2.灰盒测试(接口测试)

3.白盒测试(单元测试)

  • 什么Web项目适合做自动化测试:

1.需求变更不频繁

2.项目周期长

3.项目需要回归测试

  • 自动化测试工具

QTP/Selenium/Jmeter(接口、性能)/Loadrunner(web/性能)/Robot farmework

selenium:用于web应用程序的测试工具;核心功能:可以在多个浏览器上进行自动化测试。

  • web自动化测试的优点:用例执行效率快、 脚本可重复执行、 减少人为的错误、 客服手工测试的局限性

  • Python环境搭建

  • XPath–元素定位

  • Xpath基本语法公式://标签(可以用*表示)[@属性=“属性值”]
  • 根据元素自身特征定位:

1>class //*[@class=“topbar-cart”]

2>id 如://input[@id=“search”]

  • 根据元素层级关系定位

1>上下级关系

2>同级关系

  • 属性值部分匹配—//*[contains[@属性,“部分属性值”]]
  • 验证表达式—用控制台的搜素框(Ctrl+F)

手机APP测试

  • 手机APP测试的范围

功能模块测试

交叉事件测试

性能测试

安全测试

兼容性测试

安装/卸载测试

接口测试

网络测试

手机APP测试方法

  • 功能模块测试

运行测试,APP安装完成后的试运行,可正常打开软件,APP打开测试,是否有加载状态进度提示,APP打开速度测试,速度是否可观,APP页面切换是否流畅,逻辑是否正确。

注册:用户名密码长度,注册后的提示页面,前台注册页面和后台的管理页面数据是否一致,注册后在后台管理页面提示。

登录:使用合法的用户登录系统,系统是否允许多次非法登录,是否有次数限制。使用已经登录账号登录系统是否正确处理,使用禁用账号登录系统是否能正确处理,用户名、密码漏填是否能登录,删除、修改后的用户、原用户登录、登录超时处理。

注销:注销原模块,新的模块系统是否能正确处理,终止注销是否能返回原模块,原用户。注销原用户,新用户系统能否正确处理;使用错误的账号、口令、无权限的被禁用的账号进行注销。

应用的前后台切换,APP切换到后台,再回到APP,检查是否停留在上一次操作界面。APP切换到后台,再回到APP,检查功能及应用状态是否正常,前后台切换、锁屏的测试······

免登录

数据更新

离线浏览

PUSH(推送消息)测试

  • 交叉事件测试

交叉事件测试:又称事件冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰测试,如:APP在前后台运行状态时与来电、文件下载,等关键运用的交互测试。

  • 性能测试

性能测试,权限测试:在各种边界压力情况下,如内存满时安装APP、运行APP时手机断电,运行APP时断掉网络,验真APP是否能正确响应。

响应能力测试:APP各类操作是否满足用户响应时间要求;APP安装、启动、卸载的响应时间,APP中各种功能性操作的影响时间。

压力测试:反复/长期操作下,系统资源是否占用异常,APP反复进行安装卸载,系统资源是否占用异常;大数量的测试:在特定环境下,客户端一次性更新大量的数据时,客户端是否能正常处理,分为3种情况:

1>客户端第一次使用,第一次就更新大量数据。

2>客户端在平时更新中,更新大量的数据。

3>客户端已经在手机本地下载大多数据后,再次大量更新。

  • 设计语言测试

web设计语言版本的差异可以引起客户端或服务器端严重的问题,如使用哪种版本的HTML等;不同的浏览器内核引擎不同,会导致与不同的开发语言的兼容性情况不同。不同的脚本执行的时间也不同;数据库可能升级,要考虑脚本语言支持数据库的完善程度。

文件上传:只能上传允许的附件类型,不能上传脚本或可执行文件,不能单纯以后缀名来判断文件类型,上传的文件应该提供接口查看,文件上传到服务器端后应该重命名,防止文件名冲突、、、、、、

APP测试

  • adb环境部署、使用方法以及常用命令

adb(Android Debug Bridge) 是Android sdk的一个管理工具

adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,用户在电脑上对手机进行操作。

Android的初衷是用adb这样的工具来协助开发人员在开发Android的过程中更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看硬件信息、查看应用程序所占资源,在设备执行shell命令等功能。

  • adb的组成

客户端client:运行在你的电脑上,你可以用adb命令来调用起一个客户端,其他Android工具,如:ADT插件、DDMS等都可以创建出一个客户端。

服务器server:运行在电脑后台,负责管理client和daemon进行通讯。

守护进程daemon:运行在模拟器或安卓设备后台;验证,打开Windows命令行,输入adb命令。

  • adb常用命令

adb --help 查看帮助手册

adb devices 检测连接到电脑的安卓设备

adb pull <手机路径> <本机路径>从手机中拉取信息放到本地电脑上

adb push <本机路径> <手机路径>从本地推送信息到手机

adb shell----登录设备 shell(命令行的人机界面) ll ls 命令都可以用,进入到Linux命令环境了,相当于执行远程命令。

adb logcat --打印日志

adb install xxx.apk -----为了获取apk的安装包所在地址,可以直接把apk拖到cmd 的窗口获取,返回success就说明安装成功了

adb install -r xxx.apk -----保留数据和缓存文件,重新安装apk

adb uninstall com.tencent.mobileqq–卸载应用

adb uninstall -k com.tencent.mobileqq–卸载应用,但保存文件和数据

adb shell dumpsys activity | find"mFocusedActivity"–查看前台应用activity名

adb connect/disconnect --通过WiFi远程连接手机进行调试


网络基本知识(HTTP协议基础知识)

  • IP地址:是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

HTTP协议:Hyper Text Transfer Protocol 超文本传输协议

  • 传输协议:定义了,客户端和服务器端通信时,发送数据的格式
  • 特点:
  • 基于TCP/IP的高级协议
  • 默认端口号:80,HTTPS的端口号为443。
  • 基于请求/响应模型的:一次请求对应一次响应
  • 无状态的:每次请求之间相互独立,不能交互数据
  • 请求消息数据格式
  • 1.请求行
    • 请求方式 请求url 请求协议/版本
    • GET /login.html HTTP/1.1
  • 请求方式:
    • HTTP协议有7中请求方式,常用的有2种
  • GET:
    • 请求参数在请求行中,在url后。
      请求的url长度有限制的
      不太安全
  • POST:
    • 请求参数在请求体中
      请求的url长度没有限制的
      相对安全
  • 2.请求头:
    • 客户端浏览器告诉服务器一些信息

    • 请求头名称: 请求头值
      常见的请求头:

    • User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息

    • 可以在服务器端获取该头的信息,解决浏览器的兼容性问题

  • 3.请求空行:
    • 空行,就是用于分割POST请求的请求头,和请求体的。
  • 4.请求体(正文):
    • 封装POST请求消息的请求参数的

get请求和post请求的区别:

  • 1) get和post请求都是客户端与服务器之间得交互,请求——应答模式的协议
  • 2) get是从服务器上获取数据,post是向服务器传送数据,一般用于更新资源信息
  • 3) get请求时通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而post请求是放在请求头中的,我们是无法直接看到的
  • 4) get提交有数据大小的限制,一般是不超过2KB,而POST理论上默认是没有限制
  • 5) get请求因为数据参数是暴露在URL中的,所以安全性比较低,如密码不能暴露的就不能用get请求;post请求中,请求信息是放在请求头的,安全性较高,可以使用。

OSI七层七层网络模型

  • 七层网络模型记忆方法:底—>上 “物数网传会表应” 谐音转换为:“无数网络传销会议不要回应”

应用层:定义了各种应用协议,规范数据格式:HTTP协议、HTTPS协议、FTP协议、DNS协议、TFTP、SMTP等等。

表示层:翻译工作,提供一种公共语言,通信。

会话层:自动收发,自动寻址。

传输层:对发送数据进行封装,TCP协议、UDP协议、一个一个按顺序依次发送;两个应用程序,如QQ-QQ,定义端口的概念,寻找到对应程序,进行数据的处理。

网络层:判断是否在一个子网:IP协议,怎么选择最优路径,一组协议,路由协议:静态路由、动态路由协议。

数据链层:比特流进行处理,分组:八位为一组,一个字节,依次按照顺序进行发送,一帧。MAC地址,网卡、身份证、唯一的。

物理层:互联网物理链路,物理介质,网线、光纤、无线电波,基本连接。电信号(0101二进制)、比特流形式存在。

  • 网络层协议:

IP地址的组成:由32bit组成,分成四段并用“.”分隔,如:192.168.0.1

结构:IP地址=网络号+主机号

网络号:标识的是一个子网

主机号:标识的是子网中的某台主机

子网掩码:用来标识子网,必须跟IP地址一起存在。

  • 判断两台机器能不能通信:看是否在同一个子网。

192.168.1.87 255.255.255.0

192.168.2.77 255.255.255.0

如上,网络地址不一样,不在同一个子网,不能直接通信。


路由协议(Routing Protocol):

  • 指定数据包转送方式的网上协议

TCP协议(Transmission Control Protocol):

  • 面向连接的、可靠的、基于字节流的传输层通信协议。
  • 传输控制协议,就是对数据的传输进行一定的控制;TCP协议头部组成结构:TCP头部 TCP数据部分。
  • 特点:
  • 基于连接的:数据传输之间与需要建立连接
  • 全双工的: 双向传输
  • 字节流:不限制数据大小,打包成报文段,保证有序接受,重复报文自动丢弃。
  • 流量缓冲:解决双方处理能力的不匹配
  • 可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性。
  • 拥塞控制:防止网络出现恶性拥塞

TCP和UDP的区别:

  • TCP是可靠的协议
  • UDP(数据报文协议)直接发送信息,是不可靠的,但效率更高。
  • TCP端口号
    TCP的连接是需要四个要素确定唯一一个连接:
    (源IP,源端口号)+ (目地IP,目的端口号)
    所以TCP首部预留了两个16位作为端口号的存储,而IP地址由上一层IP协议负责传递
    源端口号和目地端口各占16位两个字节,也就是端口的范围是2^16=65535
    另外1024以下是系统保留的,从1024-65535是用户使用的端口范围
  • TCP的序号和确认号:
    32位序号 seq:Sequence number 缩写seq ,TCP通信过程中某一个传输方向上的字节流的每个字节的序号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000。
    32位确认号 ack:Acknowledge number 缩写ack,TCP对上一次seq序号做出的确认号,用来响应TCP报文段,给收到的TCP报文段的序号seq加1
  • TCP的标志位
    每个TCP段都有一个目的,这是借助于TCP标志位选项来确定的,允许发送方或接收方指定哪些标志应该被使用,以便段被另一端正确处理。
    用的最广泛的标志是 SYN,ACK 和 FIN,用于建立连接,确认成功的段传输,最后终止连接。

SYN:简写为S,同步标志位,用于建立会话连接,同步序列号;

ACK: 简写为.,确认标志位,对已接收的数据包进行确认;

FIN: 简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接;

PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;

RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包;
URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;


TCP建立连接 , 三(报文)次握手:

  • 所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个报文。三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。
  • TCP的三次握手过程:
  • 第一次握手,客户端51323端口号向服务器端80号端口发起连接,此时标志位flags=S,即SYN=1标志,表示向服务端发起连接的请求,同时生成序列号seq=84689409
  • 第二次握手,服务端标志位flags=[S.],即SYN+ACK标志位设置为1,表示对上一个请求连接的报文进行确认,同时设置ack=seq+1=184689410,生成序列号seq=1893430205
  • 第三次握手,客户端对服务端的响应进行确认,所以此时标志位是[.]即ACK=1,同时返回对上一个报文的seq的确认号,ack=1893430206
    至此,三次握手完成,一个TCP连接建立完成,接下来就是双端传输数据了。

断开连接(四次挥手):

  • 四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
  • 第一次挥手: Client端发起挥手请求,向Server端发送标志位是FIN报文段,设置序列号seq,此时,Client端进入FIN_WAIT_1状态,这表示Client端没有数据要发送给Server端了。
  • 第二次挥手:Server端收到了Client端发送的FIN报文段,向Client端返回一个标志位是ACK的报文段,ack设为seq加1,Client端进入FIN_WAIT_2状态,Server端告诉Client端,我确认并同意你的关闭请求。
  • 第三次挥手: Server端向Client端发送标志位是FIN的报文段,请求关闭连接,同时Client端进入LAST_ACK状态。
  • 第四次挥手: Client端收到Server端发送的FIN报文段,向Server端发送标志位是ACK的报文段,然后Client端进入TIME_WAIT状态。Server端收到Client端的ACK报文段以后,就关闭连接。此时,Client端等待2MSL的时间后依然没有收到回复,则证明Server端已正常关闭,那好,Client端也可以关闭连接了。

HTTPS的优点

  • 1.使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
  • 2.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。
  • 3.HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但大幅增加了其安全性。
  • 4.HTTPS加密的网站在搜索结果中的排名更高。

HTTPS的缺点

虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

  • (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电。

  • (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响。

  • (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

  • (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

  • (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

HTTPS和HTTP的主要区别

  • 1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  • 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
  • 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,HTTPS协议的端口是443。
  • 4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0kz7w2Kt-1609816175052)(2FC4864383394DEAB368E9B3EE50841C)]

HTTP状态码

  • 类别 / 原因短语

1xx Information(信息状态码) 接受的请求正在处理

2xx Success(成功状态码) 请求正常处理完毕

3xx Redirection(重定向状态码) 需要进行附加操作以完成请求

4xx Client Error(客户端错误状态码) 服务器无法处理请求

5xx Server Error(服务端错误状态码) 服务器处理请求出错

2XX 请求成功

2XX 的响应结果表明请求被正常处理了。

  • 200 OK

200表示请求在服务器端被正常处理了。在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。

  • 204 No Content

204表示服务器接收的请求已经成功处理,但是在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。当浏览器在发送请求后接收到204响应,它的显示页面不会发生更新。

通常应用在只需要客户端往服务端发送信息,而服务端不需要发送新信息的情况下使用。

  • 206 Partial Content

206表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文内包含由Content-Range指定范围的实体内容。

3XX 重定向

3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

  • 301 Moved Permanently

永久重定向,301状态码表示请求的资源已经分配了新的URI,以后请求该资源应该访问新的URI。也就是说,如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存。

  • 302 Found

临时重定向,302表示请求的资源已经被分配了新的URI,希望客户端本次能使用新的URI访问。和301不同的是,这种资源的URI变更是临时的额,而不是永久的,因此不用去更新书签。

  • 303 See Other

该状态码和 302 有着异曲同工之妙,表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源。

如果浏览器原本是用POST方法去请求服务器,收到303状态码之后,会改用GET并访问资源新的URI。

  • 304 Not Modified

304 状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。

PS:附带条件的请求是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部。

  • 307 Temporary Redirect

临时重定向,和 302 Found 状态码有相同的含义。区别在于 307 不会强制浏览器将 POST 方法改为 GET 方法,而是遵循浏览器自身的标准。

4XX 客户端错误

4XX 的响应结果表明客户端是发生错误的原因所在。

  • 400 Bad Request

400 状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。

  • 401 Unauthorized

401 状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。第一次收到 401 状态码表示需要进行用户认证,第二次再收到 401 状态码说明用户认证失败。

  • 403 Forbidden

403 状态码表明对请求资源的访问被服务器拒绝了,当未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能发生 403 。

  • 404 Not Found

404 是我们最常见的状态码之一,它表示服务器上无法找到请求资源。此外,也可能是服务器端在拒绝请求且不想说明原因的时候使用。

5XX 服务器错误

5XX 的响应结果表明服务器本身发生错误。

  • 500 Internal Server Error

500 状态码表明服务器端在执行请求时发生了错误。也有可能是 Web应用存在的 bug 或某些临时的故障。

  • 503 Service Unavailable

503 状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。


版本控制

  • 什么是版本控制:版本控制(revision control)是一种软体工程技巧,在开发的过程中,确保不同的人编辑的同一档案都得到更新。
  • 版本控制工具系统有哪些:Git(是一个开源的分布式版本控制系统,可以有效、高速的处理很小到非常大的项目版本管理;为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件)/SVN(subversion 的简称,是一个开放源代码的版本控制软件,相较于RCS,CVS它采用了分支管理系统,他的设计目标就是取代CVS)
  • Git和Svn最核心的区别就是Git为分布式管理系统,Svn为集中式管理系统。
    • 集中式版本控制系统,代码资源库都集中放在一个服务器中。
      当工作的时候就需要先从服务器拉取最新版本,写完代码或者修改完文件,再推送到中央服务器中。
    • 而分布式管理系统不需要一个中央服务器,每个电脑都是一个完整的版本库。

测试管理工具

  • bug管理工具禅道:

HTTP抓包fiddler

  • fiddler典型应用

    • web 、手机APP抓包
    • 修改服务器请求与响应
    • 模拟弱网测试
    • 前端性能分析及优化
    fiddler会话区:
    • #:顺序号,按照抓包的顺序从1递增
    • Result:HTTP状态码
    • Protocol:请求使用的协议,如HTTP/HTTPS/FTP等
    • HOST:请求地址的主机名或域名
    • URL:请求资源的位置(路径)
    • Body:请求大小
    • Caching:请求的缓存过期时间或者缓存控制值
    • Content-Type:请求响应的类型
    • Process:发送此请求的进程
    • Comments:备注
    • Custom:自定义值
    Fiddler的监控面板(Inspector)
    • Headers:信息头,若用手机和电脑打开的页面不一样,与此设置有关。
  • TextView:以文本形式显示请求或响应的数据。

  • SyntaxView:同TextView,但有语法着色。

  • WebForms:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的。

  • HEX:十六进制形式的数据。

  • Auth:显示认证信息,如Authorization。

  • Cookies:显示所有cookies。

  • Raw:显示Headers和Body数据。

  • JSON:请求或响应数据是json格式时,json形式显示请求或响应内容。

  • XML:请求或响应数据是xml格式,xml形式显示请求或响应内容。


Fiddler的Request消息结构
  • POST:请求方式,HTTP/1.1表示协议与版本
  • Accept:浏览器端可接受的媒体类型
  • Referer:告诉服务器是从哪个页面链接过来的
  • Accept-Language:语言类型
  • Accept-Encoding:压缩方法
  • User-Agent:客户端使用的操作系统和浏览器的名称和版本
  • Connection:网页打开后,客户端和服务器之间用于传输数据的TCP连接是否关闭,keep-alive表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
  • COOKIE:将cookie值发送给服务器

Fiddler的Response的消息结构
  • HTTP/1.1:协议,200:状态码,OK响应消息文本
  • Cache-Control:private的消息不能被共享缓存处理,对于其他用户的请求无效
  • Content-Type:charset:告知客户端服务器本身响应的对象的类型和字符集
  • Expires:浏览器会在指定过期时间内使用本地缓存
  • Last-Modified:客户端请求的资源文件在服务器端最后被修改的时间
  • Date:生成消息的具体时间和日期
  • Content-Length:正文长度
  • Set-Cookie:把cookie发送到客户端

Fiddler捕获请求
  • 使用真实的IP或域名
  • Fiddler的Response乱码
    • 这是因为HTML被压缩了, 通过两种方法去解压缩。
      方法一:点击红框内容“Response body is encouded.Click to decode.”
      方法二:选中工具栏中的"Decode",这样会自动解压缩。
  • Fiddler不仅能监听HTTP请求而且默认情况下也能捕获到HTTPS请求
    • Tool -> Fiddler Option -> HTTPS下面进行设置,勾选上“Decrypt HTTPS traffic”
    • 如果不必监听服务器端得证书错误可以勾上“Ignore server certification errors”

fiddler手机端抓取
  • 手机端和电脑端在同一局域网
  • 1.先设置电脑端
  • 关闭防火墙、卸载杀毒软件
  • 2.fiddler
  • tools–>options–>connections–>allow remote computers to connect勾选允许电脑远程连接
  • 3.手机端设置
  • 设置–>WiFi-高级设置–>代理,配置电脑和手机端IP(电脑端查看IP:ipconfig)

使用Fiddler实现接口测试
  • 1测试登录接口
    • 抓包,完成后退出
    • 选中需要测试的url,找到并复制请求部分raw中的cookie整行
    • 重新启动Fiddler
    • Composer→Parsed
      *Composer
    • 创作
    • 输入越权访问的url
    • 粘贴Cookie
    • 执行越权url
    • Execute
  • 2传递非法参数
    • 修改参数为非法数据,使用此方式伪造或篡改数据。
    • 【例】测试Webtours处理信用卡号的接口。
  • 方法1
    • 在Fiddler中设置抓包
    • 选择url,F2,修改参数
    • 回放url
    • 查看响应数据或后台数据
  • 方法2
    • Composer
    • 选择get或post方法
    • 输入url,url后应携带/
    • post方法应添加
    • Content-Type: application/x-www-form-urlencoded
    • 参数
    • get方法直接在url/后写
    • ?参数名1=值1&参数名2=值2
    • post方法在RequestBody中写
    • 参数名1=值1&参数名2=值2
    • Execute
  • 查看响应数据或后台数据
    • 响应中文乱码问题
    • 进入注册表
    • HKEY_CURRENT_USER\Software\Microsoft\Fiddler2
    • 新建字符串值:HeaderEncoding,值设置为GBK
    • 重启Fiddler

fiddler断点操作
  • 请求前断点
    • 场景:可以通过fiddler验证服务端是否对前端字段数据类型或长度进行校验。
  • 步骤
    • 1.先停止抓包
    • 2.打开页面,进入需要抓包的操作界面
    • 3.打开rules–>automatic breakpoints–>before request 点击勾选,出现红色标记
    • 4.回到页面上操作数据,如提交 提交保存关键步骤
    • 5.对应的请求,在webforms标签中找到要修改的参数信息
    • 6.进行修改
    • 7.点击break on response 再点击run to completion
    • 8.确认系统界面上的响应信息,是否符合要求。
  • 响应断点(after response):修改响应页面的信息图片等
  • 步骤
    • 1.开始响应断言的设置:打开rules–>automatic breakpoints–>after response 点击勾选
    • 2.操作数据,抓取请求内容。
    • 3.修改response中TextView修改响应数据信息,根据测试点进行修改。
    • 4.run to completion
    • 5.在客户端中相关字段验证
    • 6.确认显示或者数据是否符合要求

fiddler常用快捷键:

  • 快捷键
  • ctrl+X :清空所有记录
  • Ctrl+F:查找
  • F12:启动或者停止抓包
  • Ctrl+a 选择所有的Session
  • ESC 不选择任何的Session
  • Ctrl+I 反选Session
  • Delete 删除选择的Session
  • shift+Delete 删除未选择的Session
  • R 重放选择的Session(可以重放多个Session)
  • P 选择“当前Session”的“父Session”
  • C 选择“当前Session”的“子Session”
  • D 选择“重复的Session”(有相同的URL和相同的method)

jmeter:

一、JMeter概述

  • 1、JMeter是什么?
  • 1)Apache JMeter是Apache开源组织开发的纯Java桌面应用,用于进行压力测试和性能测量。
  • 2)JMeter最初被设计用于Web应用测试,后来扩展到其他测试领域。
  • 3)JMeter可用于对静态和动态资源的性能进行测试,资源包括:
    文件、Servlet、Web动态语言、Java对象、数据库和查询、FTP服务器等;
  • 4)JMeter可用于对服务器、网络或对象模拟大并发下繁重的负载,来测试不同压力情况下的整体性能;
  • 5)JMeter提供了图形化的结果,供用户进行性能分析。

二、JMeter的优点:

  • 1)能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。
  • 2)纯Java开发,具备完全的可移植性。
  • 3)完全Swing和轻量组件支持包。
  • 4)完全多线程:通过多个线程并发取样、通过单独的线程组对不同的功能同时取样。
  • 5)精心的GUI设计允许快速操作和更精确地计时。
  • 6)缓存和离线分析/回放测试结果。
  • 7)完全开源,可以对JMeter进行定制化的二次开发,扩展自己所需的插件。

三、JMeter的缺点:

  • 1)无类似LoadRunner的IP欺骗功能。(让负载均衡模块生效)
    云计算平台,服务器端一般采用负载均衡模块,不同的请求到来,能够分发给不同服务器处理(大集群)
  • 2)录制功能需要借助于第三方工具Badboy或者使用浏览器进行代理录制,相对繁琐。
  • 3)报表类型较少,不如LoadRunner报表齐全。
  • 4)工具入门比LoadRunner困难些。
  • 5)场景设计比LoadRunner复杂。
  • 6)纯多线程模式,不支持进程模式。
  • 7)参考资料较少,普及程度较LoadRunner低。
  • 8)场景控制及干预不如LoadRunner方便,如无法在压力测试过程中,人工增加并发用户数。
  • 9)大并发时,结果数据不是很准确。

四、Jmeter支持的协议:

  • Web: HTTP、HTTPS
    SOAP 简单对象访问协议
    FTP
    JDBC
    LDAP 轻量目录访问协议
    面向消息的中间件(通过JMS)
    邮件:SMTP(S)、POP3(S)、IMAP(S)
    MongoDB(NoSQL)
    TCP
    原生命令或Shell脚本

jmeter 目录文件

bin目录

  • jmeter.bat windows下启动文件
  • jmeter.sh linux下启动文件
  • jmeter.properties jmeter系统配置文件
    • 如果配置文件有修改,必须重启jmeter才能生效

其他目录

  • lib存放jar包,是jmeter核心文件
  • printable_docs目录存放jmeter用户手册——帮助文档

五、jmeter 入门脚本

  • 添加测试计划—当打开jmeter默认有一个测试计划
  • 添加线程组
    • 鼠标在测试计划上—右键—添加—线程(用户)—线程组
  • 添加HTTP请求
    • 鼠标在线程组上右键—添加—取样器—HTTP请求
  • 配置HTTP请求
    • 修改名称—发送百度请求
    • 基本
      • 填写协议HTTP
      • 填写服务器或IP www.baidu.com
  • 添加查看结果树
    • 鼠标在线程组上右键—添加—监听器—查看结果树

六、线程用户

  • 线程数:表示请求的虚拟用户数量
  • ramp-up:启动所有线程数所需要的时间
  • 循环次数:线程数循环

七、取样器

  • 作用:向服务器发送请求,并且记录响应时间和相应内容

八、jmeter运行原理

  • jmeter是按照线程的方式来运行的
  • jmeterGUI模式运行测试脚本对电脑本身资源消耗较大,无法实现大的并发和压力测试。
  • 使用GUI模式主要目的是编写和调试jmeter测试脚本
  • 使用命令行模式实现高并发和压力测试

九、jmeter测试计划要素

使用jmeter编写测试脚本—要素

  • 测试计划
  • 在测试计划中至少有一个线程组
  • 在线程组中至少有一个取样器
  • 在测试计划中必须有监听器

十、jmeter录制脚本

  • 使用badboy录制
    • 安装badboy
    • 打开badboy在地址栏中输入被测网址、回车
    • 打开badboy时默认记录状态、输入网址,直接操作即可。
    • 操作完成—点击停止记录
    • 导出脚本
      • file—export to jmeter保存
  • 在jmeter中打开已有文件
    • jmeter脚本文件的后缀名.jmx
    • 在jmeter点击打开文件,选择文件路径,找到需要的文件打开。

十一、使用jmeter自身代理录制移动端

  • 配置jmeter
    • 1.打开jmeter创建新的测试计划
    • 2.在测试计划下添加一个线程组
    • 3.添加HTTP代理服务器
      • 在测试计划下–右键–非测试原件–HTTP代理服务器
    • 4.配置HTTP代理服务器
      • 端口号默认
      • https domains中填写电脑本地IP地址或localhost
      • 目标控制器选择 测试计划>线程组
      • 点击启动按钮—ok
  • 配置手机 和fiddler配置相同

接口测试知识

  • 接口三要素
    • 请求地址/方式
    • 请求参数
    • 返回值
  • http协议
    • 请求方式
      • get
        • 带参数params
        • 不带参数
      • post
        • x-www-form-urlencoded 参数类型—键值对
          • content-type:application/x-www-form-urlencoded
        • josn格式数据
          • Content-type:application-josn
      • put
      • delete

十二:jmeter取样器—HTTP请求(以http请求为例学习jmeter 取样器)

  • http管理器
  • http信息头管理器
  • 位置
    • 配置原件
      • http信息头管理器—http请求头
      • 主要使用content-type参数(指请求参数的数据类型)
  • 在jmeter中,发送http的post请求时,需要添加http信息头管理器

十三、HTTP请求配置

  • http协议: 默认端口号 80
  • https协议 : 默认端口号 443
  • 协议: http/https
  • 服务器名称或IP 接口的域名 127.0.0.1
  • 端口号: 如果有填写具体的端口号 没有端口号就不填
  • 方法:http协议请求方式
  • 路径: 接口地址
  • 内容编码: (有汉字加) utf-8
  • 参数:针对post请求参数是x-www-form-urlencoded格式和form-data格式
  • 消息体数据:针对post请求中的josn格式/xml格式请求数据,相当于postman中raw格式
  • 文件上传:上传文件接口

postman:


Linux操作系统

  • Linux简介: 一种开源的免费的操作系统,安装在计算机硬件上、用来管理计算机硬件和软件资源的系统软件。

Linux的目录结构

  • /lib目录
    • 系统开机所需要的最基本的动态连接共享库,其作用类似于Windows里面的DLL文件。几乎所有的应用程序都要用到这些共享库。
  • /lost+found
    • 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /etc目录[重点]
    • 所有的系统管理所需要的配置文件和子目录 my.conf
  • /usr(重点)
    • 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。
  • /boot[重点]
    • 存放的是启动Linux时使用的一些核心文件,包括一些连接文件和镜像文件。
  • /proc
    • 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
  • /srv
    • service的缩写,该目录存放一些服务启动之后需要提供的数据。
  • /sys
    • 这是Linux2.6内核一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统。
  • /tmp
    • 这个目录是存放一些临时文件的。
  • /dev
    • 类似于Windows的设备管理器,把所有的硬件用文件的形式来储存。
  • /media[重点]
    • Linux系统会自动识别一些设备,例如U盘,光驱等等,识别后Linux会把识别的设备挂载到这个目录下。
  • /mnt[重点]
    • 系统提供该目录是为了让用户临时挂在别的文件系统,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。
  • /opt
    • 这是给主机额外安装软件所摆放的目录,如安装Oracle数据库就可以放到该目录下,默认为空。
  • /usr/local[重点]
    • 这是另外一个给主机额外安装软件所安装的目录,一般是指通过编译源码方式安装的程序。
  • /var[重点]
    • 这个目录中存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。
  • /selinux
    • selinux是一种安全子系统,它能控制程序只能访问特定文件。

总结:1>linux的目录中只有且只有一个根目录/

2>linux的各个目录存放的内容是规划好的,不能乱放文件。

3>linux是以文件的形式管理设备,因此Linux系统,一切皆为文件。

4>Linux的各个文件目录下存放的内容,至少有一个要认识。

Linux常用命令

  • 1.切换目录命令:cd

    • 使用cd app切换到app目录
    • 使用cd …切换到上一层目录
    • 使用cd /切换到根目录
    • 使用cd ~切换到用户主目录
    • 使用cd -切换到上一个所在目录

    使用tab键来补全文件路径

  • 2.列出文件列表:ls ll

    • ls(list)是一个非常有用的命令,用来显示当前目录下的内容。配合参数的使用,能以不同方式显示目录内容;格式:ls(参数)[路径或文件名]
  • 常用:(在Linux中 .开头的文件都是隐藏的文件)

    • ls
    • ls -a[ 显示所有文件或目录(包含隐藏的文件)]
    • ls -l(缩写成ll)
  • 3.创建目录和移除目录:mkdir rmdir

    • mkdir(make directory)命令创建子目录
    • mkdir app 在当前目录下创建app目录
    • mkdir -p app2/test 创建app2以及test目录
    • rmdir (remove directory)命令用来删除“空”的子目录
    • rmdir app 删除app目录
添加用户
  • 基本语法
    • useradd [选项] 用户名
  • 实际案例
    • 添加一个用户xiaoming.
      • useradd xiaoming
        • (特别说明,cd表示change directory,切换目录)
        • 细节说明:
          • 1>当创建用户成功后,系统会自动创建和用户同名的家目录
          • 2>也可以通过 useradd -d 指定目录,新的用户名,给新创建的用户指定家目录。(# useradd -d /home/dog/ xiaoming )
指定/修改密码
  • 基本语法:
    • passwd 用户名
  • 应用案例:
    • 给xiaoming指定密码(# passwd xiaoming)
删除用户
  • 基本语法
    • userdel 用户名
  • 应用案例
    • 1>删除用户小明,但是保留家目录。(# userdel xiaoming)
    • 2>删除用户以及用户主目录(# userdel -r xiaoming )
    • 3>实际工作中删除用户时一般不会删除家目录
查询用户信息
  • 基本语法
    • id 用户名
  • 应用案例
    • 查询root用户信息(# id root)
切换用户
  • 介绍:在Linux中如果当前用户的权限不够,可以通过 su-指令,切换到高权限用户
  • 基本语法
    • su -切换用户名
  • 细节说明
    • 1>从权限高的用户切换到权限低的用户不需要输入密码,反之则需要。
    • 2>当需要返回到原来的用户时,使用exit指令。
查看当前用户/登录用户
  • 基本语法
    • whoami/who am l
  • 用户组
    • 类似于角色,系统可以对有共性的多个用户进行统一的管理。
  • 新增组
    • 指令
    • groupadd 组名
  • 删除组
    • 指令(基本语法)
    • groupdel 组名
  • 增加用户时直接加上组
    • 基本语法
      • useradd -g 用户组 用户名
    • 案例演示
      • 增加一个用户zwj,直接将他指派到wudang
      • #groupadd wudang
      • #useradd -g wudangzwj(创建zwj用户,并且指定到wudang这个组)
      • #id zwj(查看用户信息)
  • 用户组,修改用户的组
    • 基本语法
    • usermod -g用户组 用户名
    • 案例演示
      • 创建一个shaolin组,将zwj用户修改到shaolin组
      • #groupadd shaolin
      • #usermod -g shaolin zwj
      • id zwj(查看用户信息)
  • 增加用户时直接加上组
    • 基本语法
    • useradd -g
1.系统信息
  • arch 显示机器的处理器架构
  • uname -m 显示机器的处理器架构
  • uname -r 显示正在使用的内核版本
  • dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
  • hdparm -i /dev/hda 罗列一个磁盘的架构特性
  • hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
  • cat /proc/cpuinfo 显示CPU info的信息
  • cat /proc/interrupts 显示中断
  • cat /proc/meminfo 校验内存使用
  • cat /proc/swaps 显示哪些swap被使用
  • cat /proc/version 显示内核的版本
  • cat /proc/net/dev 显示网络适配器及统计
  • cat /proc/mounts 显示已加载的文件系统
  • lspci -tv 罗列 PCI 设备
  • lsusb -tv 显示 USB 设备
  • date 显示系统日期
  • cal 2007 显示2007年的日历表
  • date 041217002007.00 设置日期和时间 - 月日时分年.秒
  • clock -w 将时间修改保存到 BIOS
2.关机 (系统的关机、重启以及登出 )
  • shutdown -h now 关闭系统
  • init 0 关闭系统
  • telinit 0 关闭系统
  • shutdown -h hours:minutes & 按预定时间关闭系统
  • shutdown -c 取消按预定时间关闭系统
  • shutdown -r now 重启
  • reboot 重启
  • logout 注销
  • sync 把内部数据同步到磁盘上
3.文件和目录
  • cd /home 进入 ‘/ home’ 目录’
  • cd … 返回上一级目录
  • cd …/… 返回上两级目录
  • cd 进入个人的主目录
  • cd ~user1 进入个人的主目录
  • cd - 返回上次所在的目录
  • pwd 显示工作路径
  • ls 查看目录中的文件
  • ls -F 查看目录中的文件
  • ls -l 显示文件和目录的详细资料
  • ls -a 显示隐藏文件
  • ls [0-9] 显示包含数字的文件名和目录名
  • tree 显示文件和目录由根目录开始的树形结构
  • lstree 显示文件和目录由根目录开始的树形结构
  • mkdir dir1 创建一个叫做 ‘dir1’ 的目录’
  • mkdir dir1 dir2 同时创建两个目录
  • mkdir -p /tmp/dir1/dir2 创建一个目录树 (创建多级目录)
  • rm -f file1 删除一个叫做 ‘file1’ 的文件’
  • rmdir dir1 删除一个叫做 ‘dir1’ 的目录’
  • rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容
  • rm -rf dir1 dir2 同时删除两个目录及它们的内容
  • mv dir1 new_dir 重命名/移动 一个目录
  • cp指令
    • cp指令拷贝文件到指定目录
    • 基本语法
      • cp [选项] source dest
      • 常用选项
      • -r : 递归复制整个文件夹
    • 应用实例
      *
  • cp file1 file2 复制一个文件
  • cp dir/* . 复制一个目录下的所有文件到当前工作目录
  • cp -a /tmp/dir1 . 复制一个目录到当前工作目录
  • cp -a dir1 dir2 复制一个目录
  • cp -r dir1 dir2 复制一个目录及子目录
  • ln -s file1 lnk1 创建一个指向文件或目录的软链接
  • ln file1 lnk1 创建一个指向文件或目录的物理链接
  • touch 指令
  • touch指令创建空文件
    • 基本语法
    • touch 文件名称
    • 应用案例
      • 创建一个空文件 Holle.txt
        • #touch Holle.txt
4.Linux实操篇 实用指令
  • 指定运行级别
  • 运行级别说明
    • 0:关机
    • 1:单用户【找回丢失密码】
    • 2:多用户状态无网络服务
    • 3:多用户状态有网络服务
    • 4:系统未使用保留给客户
    • 5:图形界面
    • 6:系统重启
      • 常用的运行级别是3和5,要修改默认的运行级别可改文件。
      • /etc/inittab的id:5:initdefault:这一行中的数字。
      • 命令(基本语法):init[012356]
    • 应用实例
      • 案例: 通过init 来切换不同的运行级别,比如5->3,然后关机
      • init3
      • init5
      • init0
  • 面试题
    • 如何找回root密码,如果我们不小心忘记了root密码,怎么找回。
      • 思路:进入到单用户模式,然后修改root密码。(因为进入单用户模式,root不需要密码就可以登录)
      • 实操总结:
      • 开机->在引导时按回车键–>看到一个界面输入e–>看到一个新的界面,选中第二行(编辑内核)再输入e–>在这行最后输入1,再按回车–>再输入b;这时就会进入单用户模式。
      • 进入单用户模式后用passwd root 指令来修改root用户密码。
5.帮助指令
  • man获得帮助指令
    • 基本语法
      • man[命令或配置文件](功能描述:获得内核帮助信息)
    • 应用案例
      • 查看ls命令的帮助信息
  • help命令(功能描述:获得shell内置命令的帮助信息)
    • 应用案例
      • 查看cd命令的帮助信息

MySQL数据库


你可能感兴趣的:(笔记,软件测试非常实用笔记,软件测试)