URL结构解析&接口测试

URL结构解析&接口测试

一、URL结构解析

我们经常在浏览器中访问各种各样的url,但是你知道一个url里面都包含了什么吗?每个组成的部分他起什么作用?
URL一般是由三部分组成,协议、主机IP地址以及主机资源的具体地址(就是带层次的文件目录)
下面我们拆分一个标准的URL来具体说明一下:
在这里插入图片描述

  1. http是这个URL所用的协议,协议后面的//为分隔符。我们一般常见的请求协议有HTTP和HTTPS,其实还有FTP和FILE这两种种文件传输协议。http是超文本传输协议,http协议是用明文的方式传输数据的,不进行任何数据加密,所以它不适合用来传输一些敏感信息;https其实就是http协议的加密版本,他是在http下加入了ssl层,https的安全基础是ssl,可以进行加密传输比http更安全,但也不是绝对安全的。
  2. 域名部分:这里的域名就是服务器的地址,一般用域名+主机名来一起定义服务器的地址,比如说https://center.tapque.com/the_olap_center/#/home/DataBoard这里的center.tapque.com其实就是我们要访问的服务器地址
  3. 服务器端口号:在域名后面是服务器的端口号,http协议一般默认是80端口,https协议一般默认是443端口号
  4. 带层次的文件路径:从第一个“/”到最后一个"/“之间是虚拟目录部分,从域名后的最后一个”/"开始到“?”位置是文件名部分,如果无“?”就是 从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。文件名用来定义文档或资源的名称,和路径类似,路径指的是文件夹,而它指的是文件夹中的文件。
  5. 查询字符串:从"?“到”#“之间的参数就a是查询字符串,以键值对(key value)的形式存在,键值对之间使用一个&间隔开,一般get请求会将请求参数放在url的问号后面,post请求方式会将请求参数放在request body中
  6. 片段标识符:从“#”开始到最后,不是必须的。
    其实你自己去尝试定义一个接口,就了解了接口的构成了,可以去用python的flask或者django框架尝试自己去本地启动一个本地服务器,然后为服务器定义一些简单的接口请求。

二、如何进行接口测试

接口测试:接口测试是测试系统间组件接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换以及系统间的相互逻辑依赖关系等。
其实接口测试也属于功能测试,只不过相较于简单的功能测试来说更底层一点,能够测试到后端底层的一些代码。接口测试也是从业务逻辑出发、然后针对接口定义的参数进行一些组合测试、边界值分析测试、异常传参测试等,除此之外我们要考虑接口的性能以及安全问题。

为什么要做接口测试?
  1. 现在很多系统前后端架构是分离的,在项目周期内有时候后端接口已经开发好,前端还未开发完成无法系统提测,基于项目迭代的W模型,这个时候我们可以在前后端接口联调阶段介入测试,先对接口进行测试,提前暴露问题,降低修复成本
  2. 检查系统的安全性以及稳定性,前端传参不可信,因为前端页面有时候会针对用户输入做限制,但是后端接口要是没有做参数的校验的话,某些用户可以直接调用接口传入非法参数;不要认为在前端做了限制,后端接口就不用进行控制了,前端根本不能满足系统安全性,而且很容易就可以绕过。
  3. 接口测试相对容易实现持续化的自动化集成,相对UI自动化来说比较稳定,因为前端的UI展示可能会变动,但是后端的接口相对来说变动较少比较稳定
怎样进行接口测试?

实际工作中我们项目前后端主要是基于http或者https协议的接口,所以测试接口是主要是通过工具或者代码模拟http请求的发送与接收。工具有很多,例如:postman、jmeter、apipost等。
我们对照开发给出的wiki文档,按照接口的测试用例进行传参,验证接口返回的code码以及输出的参数是否正确,还有针对一些异常的传参接口是否有定义对应的message提示。

接口测试的重点:
  • 检查接口返回的数据是否与预期结果一致
  • 检查接口的容错性,加入传递的参数数据类型错误是否可以处理
  • 接口参数的边界值。例如,传递的参数足够大或者为负数时,接口是否可以正常处理
  • 接口的性能,http请求接口一般与后端执行SQL语句性能/算法等比较相关
  • 接口的安全性,外部调用的接口尤为重要
接口测试用例从哪些方面去考虑?

在这里插入图片描述

上面说的只是针对单个接口测试或者业务中做个接口串行在一起的测试,要是想针对整个业务流程做系统化的可维护的接口自动化测试,接口自动化测试框架可以基于Python中的pytest框架或者unitest框架,针对这些框架内的一些方法按照自己的业务需求进行重构。

什么样的项目适合做接口自动化
  • 任务需求明确不会频繁变动
  • 产出的效益高于投入
  • 测试预留的时间比较充裕可以有时间去写接口自动化的脚本
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 模块命名、数据库表命名、域模型命名、各分层的类/方法命名、页面的命名; 模块命名: a. 包命名:com.project_name.module_name.action/service/dao/ws; service的实现都置于com.project_name.module_name.service.impl下; b. 接口命名遵守XxxxService,接口实现遵守XxxxServiceImpl; 2. 包的设计、页面的层次结构设计(jsp/css/js等文件的结构); 3. log、异常(声明式异常)的约定设计; 4. 链接、按钮、表单提交的统一方式;通用式Ajax调用与页面跳转统一模型; 5. 响应一个请求的分层结构约定,列举几个示例(常规调用、Ajax调用、WebService调用、提供WebService暴露、硬件设备接口调用); 6. 验证代码质量的约定,如JUnit、EMMA、FindBugs、CheckStyle、PMD的使用;Hudson持续集成需注意的; 7. 压力测试、防内存泄漏测试; 基础CSS:标签的各种状态的样式;表格单双行的样式; 开发一个Action请求的响应: 前置条件:该Action涉及的Entity及EntityName.hbm.xml已经准备好。 步骤: a. 前端页面触发Action的请求; 统一采用全路径请求,URL格式: 1> basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2> basePath/web/moduleName/gotoXxx.action (无需调用Service,直接跳转) 包括jQuery的Ajax方式和非Ajax方式; 包括表单提交; 参数设值的方式: 1> URL参数: basePath/web/moduleName/*_*.action?entity.propertyName=paramValue&paramName=paramValue 2> 或 另外,对于表单的提交,前后台都必须做数据校验,SWDF已提供了此能力,进行简单的配置即可,前台直接提供类似以下代码即可,点此查看前端校验详细规则说明。 前端校验示例; 后台数据校验,点此查看校验详细说明. b. 配置struts-moduleName.xml; 直接跳转示例; 调用Service示例; c. 开发对应的{EntityName}Action类; 该类必须继承com.hikvision.swdf.xx.BaseAction,该Action类有一个关键属性entity,即泛型Entity类的一个实体,该属性默认填充好了请求提交过来的entity对应参数(即entity.propertyName); d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f. 配置applicationContext-*.xml; 配置DAO bean、Service Bean、Action Bean及注入的配置; g. 测试; 备注: 1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2. 统一命名规则:接口类似UserService,接口实现类型UserServiceImpl;(IUserService和UserServiceImpl) 开发一个Action调用关联应用提供的WebService 前置条件:该WebService?WSDL可正常获取 步骤: a. 配置applicationContext-wsclient.xml; Spring管理第三方WebService实例bean Jaxws-client配置代码 b. 生成第三方WebService接口文件;(提供系统自动生成) 自动生成代码 c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联应用开放的HTTP请求 步骤: 1. 页面调用Action请求; 2. Action类相应方法使用封装好的HttpClient相关工具类,准备好HTTP请求的相关参数header参数和body参数并以xml的方式提交HTTP请求; 3. 解析HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发一个需要对第三方应用发布的WebService 步骤: a. 开发WebService接口,@WebService进行注解该接口; b. 开发WebService接口实现类,@WebService注解该实现类,并制定endpointInterface; c. 配置applicationContext-ws.xml d. 测试 备注: 开发一个需要对第三方应用发布的RESTful Service 步骤: a. 开发RS接口,提供如下Annotation; b. 开发RS接口实现,并提供如下Annotation; c. 配置applicationContext-rs.xml 备注: 所有Annotation的涵义解释如下:
官方最新版4.0.7 同时也出现了4.0.8测试版 2021年7月3日 更新 4.07正式版 主要更新如下: 1.弹幕播放器添加播放列表支持 2. 添加时间显示设置。 3.优化弹幕其他细节。 4.修复后台二级菜单错位问题; 5.修复手机端模板切换线路按钮显示多个的问题; 6.其他已知BUG; 主目录文件结构及说明:(备注:调用方式前面皆省略了解析域名,浏览器访问时请添加在前面) 文件: * index.php 首页文件, 调用方式:"/?v=视频链接或视频名称"或"/?url=视频链接" *jx.php 简洁调用接口,仅加载视频,不显示列表等信息,调用方式:"/jx.php?url=视频地址"。 * video/index.php json接口, 调用方式:"/video/?url=视频地址"。 api.php 接口文件, 输出json数据供js使用。 play.html 框架调用文件,调用方式:"/play.html?url=URL地址" so.html 搜索页 404.html 404页 favicon.ico 网站图标 crossdomain.xml 文件跨域访问控制文件 注意:文件直接拷贝到网站根目录下; 目录:* admin 后台管理目录,为了安全请改名dmku 弹幕接口目录video API模块目录save 数据保存目录, 注意:权限必须为755以上,不然无法后台更新配置;cache 文件缓存 目录 注意:权限必须为755以上,不然无法正常工作;include 引用文件 目录player 播放器目录plus 插件存放目录source 资源目录templets 模版目录前台访问: "/?v=视频链接或视频名称"后台登录: "/admin"(默认账号admin:admin888)一般不用设置即可正常工作,如果基本设置里的网站目录显示不正确,请手动修改,后面需要加"/"注意: x3.7以后的版本,第一次安装需要先进后台确认恢复下配置才能使用,如果点击无反应请更换为IE浏览器重试!系统配置保存目录为"save"目录,其中"config.php"是主要配置文件,安装时注意备份,升级时保留这个目录或文件即可。"/source/bak" 为 "/save" 的备份目录,如果初始配置失败或数据显示异常可以从这个目录手动恢复配置文件。 无后门 亲测的文件包,可不用下载,那个只是测试过的,具体选择看你们

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值