栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

接口测试之基础概念,流程,文档系统ShowDoc

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接口测试之基础概念,流程,文档系统ShowDoc

目录

1 接口测试背景

1.1 接口测试的必要性

1.2 接口测试的原理

1.3 接口测试的范围

2. 接口测试基础

2.1 接口的定义

2.2 接口的分类

2.3 HTTP

2.3.1 什么是HTTP?

2.3.2 设计HTTP的目的?

2.3.3 HTTP主要特点

2.4 HTTP请求

2.4.1 统一资源定位符URL

2.4.2 Method

2.4.3 Headers 和 Body

2.5 HTTP响应

2.5.1 什么是HTTP响应?

2.5.2 HTTP响应报文

2.5.3 JSON

3. 接口测试流程

3.1 编写接口测试计划

3.2 编写,评审接口测试用例

3.3 执行接口测试

3.4 接口自动化测试持续集成要点

4. 接口文档系统

4.1 ShowDoc简介

4.2 ShowDoc部署

4.3 接口测试文档的简单示例


1 接口测试背景

1.1 接口测试的必要性

(1)接口测试能使测试团队更早更深入文档介入项目,测试人员在项目初期就能发现系统深层次的问题,降低问题修复的成本。

(2)接口测试变更概率小于用户界面的变更概率,因此,接口测试自动化维护成本比UI自动化成本低。

(3)接口测试相对更容易实现自动化测试持续集成,可以减少回归测试的人力与时间成本,缩短测试周期,满足后端快速发布版本的需求。

(4)持续集成是接口测试低成本,高收益的根源,是接口测试的灵魂。

1.2 接口测试的原理

测试人员借助工具模拟客户端向服务器端发送请求报文,

服务器端接收请求报文后,对相应的报文做出处理并向客户端返回应答,

工具模拟客户端接收应答,

然后测试人员检查应答是否准确。

1.3 接口测试的范围

(1)是否所有的接口都需要测试?

想覆盖所有的接口很困难。

主要测试最外层的两类接口:

一个是数据进入系统的接口(调用外部系统我都参数为本系统使用)

一个是数据流出系统的接口(验证系统处理后的数据是否正常)

(2)被测接口需要测试哪些方面?

功能是否实现?

性能是否达标?

安全性是否满足?

重点关注数据的交换,传递,处理次数,控制管理过程。

2. 接口测试基础

2.1 接口的定义

(1)两个不同的系统,或者一个系统中两个不同的功能之间的连接部分称为接口。

软件测试中的接口一般有两种:

图形用户接口GUI(人与程序的接口)

应用程序编程接口API

(2)什么是API?

API是一组定义,程序和协议的集合。

API可实现计算机软件之间的相互通信。

API的一个主要功能是提供通用功能集,程序员通过使用API函数开发应用程序,从而避免编写无用程序,减轻编程任务。

前端工程师和后端工程师一般会协商接口的定义方式,其中一方定义接口(后端工程师),另一方调用接口实现预期功能。

(3)前后端分离有哪些优势?

后端工程师专注于数据的处理,对外提供API即可,不用了解前端技术。

前端工程师通过API获取数据,专注于页面设计。

前后端分离可扩大接口的应用范围,开发的接口可以应用到web页面或者APP上。

2.2 接口的分类

(1)HTTP接口

它是基于超文本传输协议开发的接口,但不能排除没有使用其他协议。

(2)Web Service接口

它是系统对外的接口,比如要从别的网站或服务器上获取资源。

通常别人不会把数据库共享给你,但是会提供一个写好的方法,让你用来获取数据,你使用这些方法就能引用他们提供的接口,进而同步数据。

(3)TESTful接口,简称REST

它描述了一个架构样式的网络系统,核心是面向资源。

REST专门针对网络应用设计和开发方式,降低开发的复杂性,提高系统的可伸缩性。

2.3 HTTP

2.3.1 什么是HTTP?

HTTP是应用最为广泛的网络协议之一,所有的万维网文件都必须遵循这个标准。

2.3.2 设计HTTP的目的?

是为了提供一种发布和接收HTML页面的方法。

2.3.3 HTTP主要特点

(1)支持客户端/服务器模式。

客户端向服务器请求服务时,只需传送请求方法和路径。常用方法有GET, POST。 

(2)简单。

HTTP简单,服务器的程序规模小,通信速度快。

(3)灵活。

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type标记。

(4)无连接。

限制每次连接,使其只处理一个请求。

服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。节省传输时间。

(5)无状态。

无状态是指协议对于事物处理没有记忆能力。

缺少状态意味着这后续处理需要前面的信息,则必须重新上传,这样可能导致每次连接传送的数据量增加。如果服务器不需要前面的信息,则应答就会比较快。

2.4 HTTP请求

HTTP请求包含4部分:统一资源定位符URL,方法Method,头Headers,体Body

2.4.1 统一资源定位符URL

(1) 什么是URL?

是用于完整地描述互联网上网页和其他资源地址的一种标识方法。

URL给资源的位置提供一种抽象的表示方法,并用这种方法给资源定位。

只要能对资源定位,用户就可以对资源进行各种操作,如存取,更新,替换和查看属性等。

资源,是指:在互联网上可以被访问的任何对象,包括目录,文件,图像,声音等。

URL相当于文件名在网络范围的扩展。

不同资源所用协议不同,所以URL还给出了访问某个资源时所使用的协议。

(2)URL的一般形式

<协议>://<主机>:<端口>/<路径>/<文件名>

解析:

协议:获取该互联网资源所使用的协议,HTTP协议,FTP文件传输协议

主机:指出万维网文档是在哪个主机上,可以给出域名,也可以给处IP地址

端口:服务器监听的端口,HTTP默认80, FTP默认21

路径和文件名:进一步给处资源在服务器上的位置,但它们的名称是虚拟的,和服务器上的物理名称可能不同。

<协议>://<主机>:<端口>/<路径>/<文件名>?<参数1>=<值1>&<参数2>=<值2>

动态网页参数:对于动态网页,用户需要给服务器提供访问动态网页的参数,因此,URL后面可以加上一个英文问号,问号后面以“参数名称=参数值”的形式给出多个参数,每组之间用“&”分隔 , 称为查询串。

2.4.2 Method

(1)什么是Method?

HTTP定义了与服务器交互的4种不同方法: GET, POST, PUT, DELETE 等。

即,method对应URL资源的增删改查等操作。

(2)GET方式和POST方式有什么区别?

1)提交数据的方式不同

GET方式:请求的数据会附在URL后,即把数据放置在HTTP协议头中。

如果数据是英文字母和数字,则直接发送。

如果是空格,则转换为+,然后发送。

如果是中文和其他字符,则会用base64加密字符串,然后发送。

POST方式:把提交的数据放置在HTTP包的请求体中(不在地址栏显示出来)。

2)传输数据的大小不同

HTTP对传输的数据大小和URL长度没有限制,但实际开发中还是存在一些限制。

GET方式:特定浏览器和服务器对URL长度有限制。比如IE对URL长度的限制是2083byte。因此GET传输的数据会受到URL长度的限制。

POS方式:不通过URL,理论上数据不受限制。但实际上各个Web服务器会规定对使用POST方式提交的数据大小进行限制,Apache, IIS6.0都有各自的配置。

3)安全性不同

POST方式比GET方式安全性高。

2.4.3 Headers 和 Body

HTTP报文是面向文本的,报文中的每个资源都是ASCII码串。

各个字段的长度是不确定的。

HTTP请求报文由请求头行,头,空行,请求数据4个部分组成,格式一般如下:

2.5 HTTP响应

2.5.1 什么是HTTP响应?

服务器返回的应答消息,称为HTTP响应。

2.5.2 HTTP响应报文

HTTP响应报文由3个部分组成:状态行,消息报头,响应正文

HTTP响应的格式:

(1)状态行

提供一个状态码来说明所请求的资源情况。

状态行格式: HTTP-version Status-Code Reason-Phrase CRLF

HTTP-Version:表示服务器HTTP的版本

Status-Code:表示服务器返回的响应状态代码

解析:状态代码由3位数字组成,第一个数字定义了响应的类别,有5种可能的取值:

1XX:指示信息,表示请求已接收,继续处理

2XX:成功,表示请求已经被成功接收,理解和接受

3XX:重定向,要完成请求必须进行更进一步的操作

4XX:客户端错误,请求有语法错误或请求无法实现

5XX:服务器错误,服务器未能实现合法的请求

常见的状态代码如下:

200 OK:客户端请求成功

400 Bad Request:客户端请求有语法错误,不能被服务器所理解

401 Unauthorized:请求未经授权

403 Forbidden:服务器收到请求,但是拒绝提供服务

404 Not Found:请求资源不存在,如输入了错误的URL

500 Internal Server Error:服务器发生不可预期的错误

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

Reason-Phrase:表示状态代码的文本描述

CRLF:表示一个回车符和一个换行符

(2)HTTP响应报文的简单示例

HTTP/1.1 200 OK

Date: Sat, 23, Dec 2020 23:59:59 GMT

Content-Type: text/html; charset=ISO-8859-1

Content-Length: 122

Storm<title></p> <p></head></p> <p><body></p> <p></p> <p></body></p> <p></html></p> <p></p> <h3 id="2.5.3%20JSON">2.5.3 JSON <p>(1)JS对象标记的定义</p> <p>JSON, JS对象标记,是一种轻量级的数据交换格式。</p> <p>基于ECMAScipt的子集,采用完全独立于编程语言的文本格式来存储和表示数组。</p> <p>是一种简洁的数据交换语言。易于阅读编写和解析,有效提升网络传输效率。</p> <p>HTTP接口响应一般为JSON格式。</p> <p></p> <p>(2)JSON语法规则</p> <p>包括用大括号保存对象,用键值对表示对象,用逗号分隔每个对象,用中括号保存数组。</p> <p></p> <p>(3)JSON示例</p> <p>{"name": "Sheryl", "age": "30", "sex": "female"}</p> <p></p> <h1 id="3.%20%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E6%B5%81%E7%A8%8B">3. 接口测试流程 <h2 id="3.1%20%E7%BC%96%E5%86%99%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E8%AE%A1%E5%88%92">3.1 编写接口测试计划 <p>(1)接口测试计划的目标:</p> <p>为了确认需求,</p> <p>确定测试环境及测试方法,</p> <p>为设计测试用例做准备,</p> <p>初步制定接口测试进度方案</p> <p>(2)接口测试计划包含:概述,测试资源,测试功能和重点,测试策略,测试风险,测试标准</p> <p></p> <h2 id="3.2%20%E7%BC%96%E5%86%99%EF%BC%8C%E8%AF%84%E5%AE%A1%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B">3.2 编写,评审接口测试用例 <p>开始测试之前,需要根据需求文档,接口文档等项目相关文档编写并评审接口测试用例。</p> <p>接口测试的思路如图:</p> <p></p> <p></p> <h2 id="3.3%20%E6%89%A7%E8%A1%8C%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95">3.3 执行接口测试 <p>根据接口测试用例,借助测试工具(JMeter, Postman,  SoapUI等)执行接口测试,报告问题。</p> <p></p> <h2 id="3.4%20%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E8%A6%81%E7%82%B9">3.4 接口自动化测试持续集成要点 <p>(1)为什么要进行接口的自动化测试?</p> <p>进行项目测试时,接口会增加,变更,减少等,测试用例也会相应更新。</p> <p>因此需要借助工具(GitHub等)来维护测试用例进行持续更新,通过自动化测试来试试监控项目接口运行情况。</p> <p></p> <p>(2)持续集成是接口测试的核心内容</p> <p>通过自动化手段,才能做到低成本高收益。</p> <p></p> <p>(3)接口自动化测试持续集成主要包括哪些内容?</p> <p>1)流程方面:在回归阶段加强接口异常场景的覆盖,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。</p> <p>2)结果展示:更加丰富的结果展示,趋势分析,质量统计和分析等。</p> <p>3)问题定位:报错信息,日志更精准,方便问题复现与定位。</p> <p>4)结果校验:加强自动化校验能力,如数据库信息校验。</p> <p>5)代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。</p> <p>6)性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。</p> <p></p> <h1 id="4.%20%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3%E7%B3%BB%E7%BB%9F">4. 接口文档系统 <p>功能测试的依据有产品需求文档,开发设计文档等。</p> <p>接口测试的主要依据是接口测试文档。</p> <p>由于前后端分离,需要采用更好的API文档工具来维护接口信息,比如ShowDoc。</p> <p></p> <h2 id="4.1%20ShowDoc%E7%AE%80%E4%BB%8B">4.1 ShowDoc简介 <p>ShowDoc特点:</p> <p>(1)一个开源免费的工具。</p> <p>(2)一个非常适合IT团队的在线API文档,技术文档工具,它可以实现实时同步,用户无需花费过多的精力维护文档。</p> <p>(3)借助ShowDoc可以方便快速的编写出美观的API文档,并且可以用它编辑数据字典和一些技术规范说明文档供团队查阅。</p> <p>(4)提供免费在线文档托管服务,用户可以通过ShowDoc官网创建自己的项目,并将其保存在云端,也可以选择将ShowDoc部署到本地服务器。</p> <p></p> <h2 id="4.2%20ShowDoc%E9%83%A8%E7%BD%B2">4.2 ShowDoc部署 <p>(1)既然ShowDoc提供了在线托管服务,为什么还需要搭建本地服务器呢?</p> <p>主要是从安全角度考虑,毕竟接口文档不适合暴露在大众视野下。</p> <p></p> <p>(2)如何在本地服务器上部署ShowDoc?</p> <p>环境:CentOS7, docker</p> <p>1)安装Docker</p> <p>Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到Linux系统上,也可以实现虚拟化。容器使用沙箱机制,相互之间不会有任何接口。</p> <p>登录服务器(CentOS7),切换到root用户,使用以下命令进行安装。</p> <p>yum install docker</p> <p>2)启动Docker服务</p> <p>service docker start</p> <p>3)设置Docker服务为开机启动</p> <p>chkconfig docker on</p> <p>4)借助yum, 安装git</p> <p>yum install git</p> <p>5)安装ShowDoc</p> <p>从GitHub上复制代码到本地某个目录,这里进入根目录下的test文件夹</p> <p>cd /test</p> <p>git clone -o gitbug https://github.com/start7th/showdoc</p> <p>6)进入ShowDoc目录开始安装</p> <p>cd showdoc/</p> <p>docker build -t showdoc ./</p> <p>docker run -d --name showdoc -p 4999:80 showdoc </p> <p>(如果想在不同端口启动,可将4999改为其他的)</p> <p>7)访问ShowDoc</p> <p>在浏览器中输入: http://192.168.132.132:4999/install/, (IP是自己服务器的IP, 端口是上面设置的4999),在页面上完成安装步骤。</p> <p>最后,提示安装成功后,最好按照提示信息删除/install目录,使用命令: rm -rf XXX/install</p> <p>8)备份</p> <p>API文档很重要,需要备份。</p> <p>/XXX/showdoc/Sqlite目录下有个showdoc.db.php文件,定期备份该文件即可。</p> <p>可以手动命令备份:</p> <p>mv /XXX/showdoc/Sqlite/showdoc.db.php /test/showdoc.db.php.bak</p> <p></p> <h2 id="4.3%20%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E6%96%87%E6%A1%A3%E7%9A%84%E7%AE%80%E5%8D%95%E7%A4%BA%E4%BE%8B">4.3 接口测试文档的简单示例 <p></p> <p> </p> <p></p> <p></p></div> </div> <div style="clear: both;"></div> <div class="author-info fl"> <div><span class="gray">转载请注明:</span>文章转载自 <a href="https://www.mshxw.com/" class="blue">www.mshxw.com</a></div> <div><span class="gray">本文地址:</span><a href="https://www.mshxw.com/it/323373.html" class="blue">https://www.mshxw.com/it/323373.html</a></div> </div> <div class="prev fl"> <p> <a style='text-align:left;' class='center-block text-center glyphicon glyphicon-collapse-down' href="https://www.mshxw.com/it/323495.html">上一篇 python爬虫实战一|大众点评网</a> </p> <p> <a style='text-align:left;' class='center-block text-center glyphicon glyphicon-collapse-down' href="https://www.mshxw.com/it/323367.html">下一篇 linux搭建xsftp</a> </p> </div> <div class="new_tag fl"> </div> </div> <div class="new_r fr" style="border-radius:10px;"> <div class="tui fl"> <h3>Linux相关栏目本月热门文章</h3> <ul> <li><span>1</span><a href="https://www.mshxw.com/it/1041277.html" title="【Linux驱动开发】设备树详解(二)设备树语法详解">【Linux驱动开发】设备树详解(二)设备树语法详解</a></li> <li><span>2</span><a href="https://www.mshxw.com/it/1041273.html" title="别跟客户扯细节">别跟客户扯细节</a></li> <li><span>3</span><a href="https://www.mshxw.com/it/1041266.html" title="Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区">Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区</a></li> <li><span>4</span><a href="https://www.mshxw.com/it/1041261.html" title="【Java】对象处理流(ObjectOutputStream和ObjectInputStream)">【Java】对象处理流(ObjectOutputStream和ObjectInputStream)</a></li> <li><span>5</span><a href="https://www.mshxw.com/it/1041256.html" title="【分页】常见两种SpringBoot项目中分页技巧">【分页】常见两种SpringBoot项目中分页技巧</a></li> <li><span>6</span><a href="https://www.mshxw.com/it/1041299.html" title="一文带你搞懂OAuth2.0">一文带你搞懂OAuth2.0</a></li> <li><span>7</span><a href="https://www.mshxw.com/it/1041297.html" title="我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍">我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍</a></li> <li><span>8</span><a href="https://www.mshxw.com/it/1041296.html" title="【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成">【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成</a></li> <li><span>9</span><a href="https://www.mshxw.com/it/1041294.html" title="JavaSE - 封装、static成员和内部类">JavaSE - 封装、static成员和内部类</a></li> <li><span>10</span><a href="https://www.mshxw.com/it/1041291.html" title="树莓派mjpg-streamer实现监控及拍照功能调试">树莓派mjpg-streamer实现监控及拍照功能调试</a></li> <li><span>11</span><a href="https://www.mshxw.com/it/1041289.html" title="用c++写一个蓝屏代码">用c++写一个蓝屏代码</a></li> <li><span>12</span><a href="https://www.mshxw.com/it/1041285.html" title="从JDK8源码中看ArrayList和LinkedList的区别">从JDK8源码中看ArrayList和LinkedList的区别</a></li> <li><span>13</span><a href="https://www.mshxw.com/it/1041281.html" title="idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目">idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目</a></li> <li><span>14</span><a href="https://www.mshxw.com/it/1041282.html" title="在openwrt使用C语言增加ubus接口(包含C uci操作)">在openwrt使用C语言增加ubus接口(包含C uci操作)</a></li> <li><span>15</span><a href="https://www.mshxw.com/it/1041278.html" title="Spring 解决循环依赖">Spring 解决循环依赖</a></li> <li><span>16</span><a href="https://www.mshxw.com/it/1041275.html" title="SpringMVC——基于MVC架构的Spring框架">SpringMVC——基于MVC架构的Spring框架</a></li> <li><span>17</span><a href="https://www.mshxw.com/it/1041272.html" title="Andy‘s First Dictionary C++ STL set应用">Andy‘s First Dictionary C++ STL set应用</a></li> <li><span>18</span><a href="https://www.mshxw.com/it/1041271.html" title="动态内存管理">动态内存管理</a></li> <li><span>19</span><a href="https://www.mshxw.com/it/1041270.html" title="我的创作纪念日">我的创作纪念日</a></li> <li><span>20</span><a href="https://www.mshxw.com/it/1041269.html" title="Docker自定义镜像-Dockerfile">Docker自定义镜像-Dockerfile</a></li> </ul> </div> </div> </div> <!-- 公共尾部 --> <div class="link main"> <div class="link_tit"> <span class="on">热门相关搜索</span> </div> <div class="link_tab"> <div class="link_con"> <a href="http://www.mshxw.com/TAG_1/luyouqishezhi.html">路由器设置</a> <a href="http://www.mshxw.com/TAG_1/mutuopan.html">木托盘</a> <a href="http://www.mshxw.com/TAG_1/baotamianban.html">宝塔面板</a> <a href="http://www.mshxw.com/TAG_1/shaoerpython.html">儿童python教程</a> <a href="http://www.mshxw.com/TAG_1/xinqingdiluo.html">心情低落</a> <a href="http://www.mshxw.com/TAG_1/pengyouquan.html">朋友圈</a> <a href="http://www.mshxw.com/TAG_1/vim.html">vim</a> <a href="http://www.mshxw.com/TAG_1/shuangyiliuxueke.html">双一流学科</a> <a href="http://www.mshxw.com/TAG_1/zhuanshengben.html">专升本</a> <a href="http://www.mshxw.com/TAG_1/wodexuexiao.html">我的学校</a> <a href="http://www.mshxw.com/TAG_1/rijixuexiao.html">日记学校</a> <a href="http://www.mshxw.com/TAG_1/xidianpeixunxuexiao.html">西点培训学校</a> <a href="http://www.mshxw.com/TAG_1/qixiuxuexiao.html">汽修学校</a> <a href="http://www.mshxw.com/TAG_1/qingshu.html">情书</a> <a href="http://www.mshxw.com/TAG_1/huazhuangxuexiao.html">化妆学校</a> <a href="http://www.mshxw.com/TAG_1/tagouwuxiao.html">塔沟武校</a> <a href="http://www.mshxw.com/TAG_1/yixingmuban.html">异形模板</a> <a href="http://www.mshxw.com/TAG_1/xinandaxuepaiming.html">西南大学排名</a> <a href="http://www.mshxw.com/TAG_1/zuijingpirenshengduanju.html">最精辟人生短句</a> <a href="http://www.mshxw.com/TAG_1/6bujiaonizhuihuibeipian.html">6步教你追回被骗的钱</a> <a href="http://www.mshxw.com/TAG_1/nanchangdaxue985.html">南昌大学排名</a> <a href="http://www.mshxw.com/TAG_1/qingchaoshierdi.html">清朝十二帝</a> <a href="http://www.mshxw.com/TAG_1/beijingyinshuaxueyuanpaiming.html">北京印刷学院排名</a> <a href="http://www.mshxw.com/TAG_1/beifanggongyedaxuepaiming.html">北方工业大学排名</a> <a href="http://www.mshxw.com/TAG_1/beijinghangkonghangtiandaxuepaiming.html">北京航空航天大学排名</a> <a href="http://www.mshxw.com/TAG_1/shoudoujingjimaoyidaxuepaiming.html">首都经济贸易大学排名</a> <a href="http://www.mshxw.com/TAG_1/zhongguochuanmeidaxuepaiming.html">中国传媒大学排名</a> <a href="http://www.mshxw.com/TAG_1/shoudoushifandaxuepaiming.html">首都师范大学排名</a> <a href="http://www.mshxw.com/TAG_1/zhongguodezhidaxue(beijing)paiming.html">中国地质大学(北京)排名</a> <a href="http://www.mshxw.com/TAG_1/beijingxinxikejidaxuepaiming.html">北京信息科技大学排名</a> <a href="http://www.mshxw.com/TAG_1/zhongyangminzudaxuepaiming.html">中央民族大学排名</a> <a href="http://www.mshxw.com/TAG_1/beijingwudaoxueyuanpaiming.html">北京舞蹈学院排名</a> <a href="http://www.mshxw.com/TAG_1/beijingdianyingxueyuanpaiming.html">北京电影学院排名</a> <a href="http://www.mshxw.com/TAG_1/zhongguohuquxueyuanpaiming.html">中国戏曲学院排名</a> <a href="http://www.mshxw.com/TAG_1/hebeizhengfazhiyexueyuanpaiming.html">河北政法职业学院排名</a> <a href="http://www.mshxw.com/TAG_1/hebeijingmaodaxuepaiming.html">河北经贸大学排名</a> <a href="http://www.mshxw.com/TAG_1/tianjinzhongdeyingyongjishudaxuepaiming.html">天津中德应用技术大学排名</a> <a href="http://www.mshxw.com/TAG_1/tianjinyixuegaodengzhuankexuejiaopaiming.html">天津医学高等专科学校排名</a> <a href="http://www.mshxw.com/TAG_1/tianjinmeishuxueyuanpaiming.html">天津美术学院排名</a> <a href="http://www.mshxw.com/TAG_1/tianjinyinlexueyuanpaiming.html">天津音乐学院排名</a> <a href="http://www.mshxw.com/TAG_1/tianjingongyedaxuepaiming.html">天津工业大学排名</a> <a href="http://www.mshxw.com/TAG_1/beijinggongyedaxuegengdanxueyuanpaiming.html">北京工业大学耿丹学院排名</a> <a href="http://www.mshxw.com/TAG_1/beijingjingchaxueyuanpaiming.html">北京警察学院排名</a> <a href="http://www.mshxw.com/TAG_1/tianjinkejidaxuepaiming.html">天津科技大学排名</a> <a href="http://www.mshxw.com/TAG_1/beijingyoudiandaxue(hongfujiaoou)paiming.html">北京邮电大学(宏福校区)排名</a> <a href="http://www.mshxw.com/TAG_1/beijingwanglaozhiyexueyuanpaiming.html">北京网络职业学院排名</a> <a href="http://www.mshxw.com/TAG_1/beijingdaxueyixuebupaiming.html">北京大学医学部排名</a> <a href="http://www.mshxw.com/TAG_1/hebeikejidaxuepaiming.html">河北科技大学排名</a> <a href="http://www.mshxw.com/TAG_1/hebeidezhidaxuepaiming.html">河北地质大学排名</a> <a href="http://www.mshxw.com/TAG_1/hebeitiyoxueyuanpaiming.html">河北体育学院排名</a> </div> </div> </div> <div class="footer"> <div class="dl_con"> <div class="width1200"> <dl> <dt>学习工具</dt> <dd><a href="https://www.mshxw.com/tools/algebra/" title="代数计算器">代数计算器</a></dd> <dd><a href="https://www.mshxw.com/tools/trigonometry/" title="三角函数计算器">三角函数</a></dd> <dd><a href="https://www.mshxw.com/tools/analytical/" title="解析几何">解析几何</a></dd> <dd><a href="https://www.mshxw.com/tools/solidgeometry/" title="立体几何">立体几何</a></dd> </dl> <dl> <dt>知识解答</dt> <dd><a href="https://www.mshxw.com/ask/1033/" title="教育知识">教育知识</a></dd> <dd><a href="https://www.mshxw.com/ask/1180/" title="百科知识">百科知识</a></dd> <dd><a href="https://www.mshxw.com/ask/1155/" title="生活知识">生活知识</a></dd> <dd><a class="https://www.mshxw.com/ask/1199/" title="常识知识">常识知识</a></dd> </dl> <dl> <dt>写作必备</dt> <dd><a href="https://www.mshxw.com/zuowen/1128/" title="作文大全">作文大全</a></dd> <dd><a href="https://www.mshxw.com/zuowen/1130/" title="作文素材">作文素材</a></dd> <dd><a href="https://www.mshxw.com/zuowen/1132/" title="句子大全">句子大全</a></dd> <dd><a href="https://www.mshxw.com/zuowen/1154/" title="实用范文">实用范文</a></dd> </dl> <dl class="mr0"> <dt>关于我们</dt> <dd><a href="https://www.mshxw.com/about/index.html" title="关于我们" rel="nofollow">关于我们</a></dd> <dd><a href="https://www.mshxw.com/about/contact.html" title="联系我们" rel="nofollow">联系我们</a></dd> <dd><a href="https://www.mshxw.com/sitemap/" title="网站地图">网站地图</a></dd> </dl> <div class="dl_ewm"> <div class="wx"> <img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/gzh.jpg" alt="交流群"> <p>名师互学网交流群</p> </div> <div class="wx"><img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/weixin.jpg" alt="名师互学网客服"> <p>名师互学网客服</p> </div> </div> </div> </div> <div class="copyright"> <p>名师互学网 版权所有 (c)2021-2022 ICP备案号:<a href="https://beian.miit.gov.cn" rel="nofollow">晋ICP备2021003244-6号</a> </p> </div> </div> <!-- 手机端 --> <div class="m_foot_top"> <img src="https://www.mshxw.com/foot.gif" width="192" height="27" alt="我们一直用心在做"><br/> <a href="https://www.mshxw.com/about/index.html">关于我们</a> <a href="https://www.mshxw.com/archiver/">文章归档</a> <a href="https://www.mshxw.com/sitemap">网站地图</a> <a href="https://www.mshxw.com/about/contact.html">联系我们</a> <p>版权所有 (c)2021-2022 MSHXW.COM</p> <p>ICP备案号:<a href="https://beian.miit.gov.cn/" rel="nofollow">晋ICP备2021003244-6号</a></p> </div> <div class="to_top" style="display:none;"><img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/to_top.png"></div> <!--广告!--> <script type="text/javascript" src="https://www.mshxw.com/skin/sinaskin//kaotop/js/top.js"></script> <script src="https://www.mshxw.com/skin/sinaskin//kaotop/js/fixed.js" type="text/javascript"></script> <!--头条搜索!--> <script> (function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?018f42187355ee18d1bfcee0487fc91a76ac6319beb05b7dc943033ed22c446d3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window) </script> <!--头条搜索结束!--> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?e05fec1c87ee5ca07f1ce57d093866c4"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </div> </div> <script type="text/javascript"> $(".alert_kf").click(function() { mantis.requestChat(); }); </script> <script type="text/javascript"> var mySwiper_weixin = new Swiper('.pc_swiper_weixin', { autoplay: 3000, //可选选项,自动滑动 loop: true, speed: 1000, pagination: '.swiper-pagination', paginationClickable: true, }) </script> <script type="text/javascript"> $(function() { $(window).scroll(function() { if ($(window).scrollTop() > 100) { $(".to_top").fadeIn(1000); } else { $(".to_top").fadeOut(1000); } }); $(".to_top").click(function() { if ($('html').scrollTop()) { $('html').animate({ scrollTop: 0 }, 300); return false; } $('body').animate({ scrollTop: 0 }, 300); return false; }); }); </script> </body> </html>