当前位置: 首页 > news >正文

网站建设与管理课后作业答案河源疫情最新通报

网站建设与管理课后作业答案,河源疫情最新通报,网站制作思路,wordpress建站有广告吗1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主…

1. 什么是接口测试

顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要分为功能测试,性能测试,稳定性测试,安全性测试等。

在分层测试的“金字塔”模型中,接口测试属于第二层服务集成测试范畴。相比UI层(主要是WEB或APP)自动化测试而言,接口自动化测试收益更大,且容易实现,维护成本低,有着更高的投入产出比,是每个公司开展自动化测试的首选。

下面我们以一个HTTP接口为例,完整的介绍接口自动化测试流程:从需求分析到用例设计,从脚本编写、测试执行到结果分析,并提供完整的用例设计及测试脚本。

2. 基本流程

基本的接口功能自动化测试流程如下:

需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析

2.1 示例接口

接口名称:豆瓣电影搜索

接口文档地址:https://developers.douban.com/wiki/?title=movie_v2#search

接口调用示例:

1) 按演职人员搜索:https://api.douban.com/v2/movie/search?q=张艺谋

2) 按片名搜索:https://api.douban.com/v2/movie/search?q=大话西游

3) 按类型搜索:https://api.douban.com/v2/movie/search?tag=喜剧

3. 需求分析

需求分析是参考需求、设计等文档,在了解需求的基础上还需清楚内部的实现逻辑,并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。

如:豆瓣电影搜索接口,我理解的需求即是支持对片名,演职人员及标签的搜索,并分页返回搜索结果。

4. 用例设计

用例设计是在理解接口测试需求的基础上,使用MindManager或XMind等思维导图软件编写测试用例设计,主要内容包括参数校验,功能校验、业务场景校验、安全性及性能校验等,常用的用例设计方法有等价类划分法,边界值分析法,场景分析法,因果图,正交表等。

针对豆瓣电影搜索接口功能测试部分,我们主要从参数校验,功能校验,业务场景校验三方面,设计测试用例如下:

5. 脚本开发

依据上面编写的测试用例设计,我们使用python+nosetests框架编写了相关自动化测试脚本。可以完整实现接口自动化测试、自动执行及邮件发送测试报告功能。

5.1 相关lib安装

必要的lib库如下,使用pip命令安装即可:

pip install nose
pip install nose-html-reporting
pip install requests

5.2 接口调用

使用requests库,我们可以很方便的编写上述接口调用方法(如搜索q=刘德华,示例代码如下):

#coding=utf-8
import requests
import jsonurl = 'https://api.douban.com/v2/movie/search'
params=dict(q=u'刘德华')
r = requests.get(url, params=params)
print 'Search Params:\n', json.dumps(params, ensure_ascii=False)
print 'Search Response:\n', json.dumps(r.json(), ensure_ascii=False, indent=4)

在实际编写自动化测试脚本时,我们需要进行一些封装。如下代码中我们对豆瓣电影搜索接口进行了封装,test_q方法只需使用nosetests提供的yield方法即可很方便的循环执行列表qs中每一个测试集:

class test_doubanSearch(object):@staticmethoddef search(params, expectNum=None):url = 'https://api.douban.com/v2/movie/search'r = requests.get(url, params=params)print 'Search Params:\n', json.dumps(params, ensure_ascii=False)print 'Search Response:\n', json.dumps(r.json(), ensure_ascii=False, indent=4)def test_q(self):# 校验搜索条件 qqs = [u'白夜追凶', u'大话西游', u'周星驰', u'张艺谋', u'周星驰,吴孟达', u'张艺谋,巩俐', u'周星驰,大话西游', u'白夜追凶,潘粤明']for q in qs:params = dict(q=q)f = partial(test_doubanSearch.search, params)f.description = json.dumps(params, ensure_ascii=False).encode('utf-8')yield (f,)

我们按照测试用例设计,依次编写每个功能的自动化测试脚本即可。

5.3 结果校验

在手工测试接口的时候,我们需要通过接口返回的结果判断本次测试是否通过,自动化测试也是如此。

对于本次的接口,我们搜索“q=刘德华”,我们需要判断返回的结果中是否含有“演职人员刘德华或片名刘德华”,搜索“tag=喜剧”时,需要判断返回的结果中电影类型是否为“喜剧”,结果分页时需要校验返回的结果数是否正确等。完整结果校验代码如下:

class check_response():@staticmethoddef check_result(response, params, expectNum=None):# 由于搜索结果存在模糊匹配的情况,这里简单处理只校验第一个返回结果的正确性if expectNum is not None:# 期望结果数目不为None时,只判断返回结果数目eq_(expectNum, len(response['subjects']), '{0}!={1}'.format(expectNum, len(response['subjects'])))else:if not response['subjects']:# 结果为空,直接返回失败assert Falseelse:# 结果不为空,校验第一个结果subject = response['subjects'][0]# 先校验搜索条件tagif params.get('tag'):for word in params['tag'].split(','):genres = subject['genres']ok_(word in genres, 'Check {0} failed!'.format(word.encode('utf-8')))# 再校验搜索条件qelif params.get('q'):# 依次判断片名,导演或演员中是否含有搜索词,任意一个含有则返回成功for word in params['q'].split(','):title = [subject['title']]casts = [i['name'] for i in subject['casts']]directors = [i['name'] for i in subject['directors']]total = title + casts + directorsok_(any(word.lower() in i.lower() for i in total),'Check {0} failed!'.format(word.encode('utf-8')))@staticmethoddef check_pageSize(response):# 判断分页结果数目是否正确count = response.get('count')start = response.get('start')total = response.get('total')diff = total - startif diff >= count:expectPageSize = countelif count > diff > 0:expectPageSize = diffelse:expectPageSize = 0eq_(expectPageSize, len(response['subjects']), '{0}!={1}'.format(expectPageSize, len(response['subjects'])))

5.4 执行测试

对于上述测试脚本,我们使用nosetests命令可以方便的运行自动化测试,并可使用nose-html-reporting插件生成html格式测试报告。

运行命令如下:

nosetests -v test_doubanSearch.py:test_doubanSearch --with-html --html-report=TestReport.html

5.5 发送邮件报告

测试完成之后,我们可以使用smtplib模块提供的方法发送html格式测试报告。基本流程是读取测试报告 -> 添加邮件内容及附件 -> 连接邮件服务器 -> 发送邮件 -> 退出,示例代码如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef send_mail():# 读取测试报告内容with open(report_file, 'r') as f:content = f.read().decode('utf-8')msg = MIMEMultipart('mixed')# 添加邮件内容msg_html = MIMEText(content, 'html', 'utf-8')msg.attach(msg_html)# 添加附件msg_attachment = MIMEText(content, 'html', 'utf-8')msg_attachment["Content-Disposition"] = 'attachment; filename="{0}"'.format(report_file)msg.attach(msg_attachment)msg['Subject'] = mail_subjetmsg['From'] = mail_usermsg['To'] = ';'.join(mail_to)try:# 连接邮件服务器s = smtplib.SMTP(mail_host, 25)# 登陆s.login(mail_user, mail_pwd)# 发送邮件s.sendmail(mail_user, mail_to, msg.as_string())# 退出s.quit()except Exception as e:print "Exceptioin ", e

6. 结果分析

打开nosetests运行完成后生成的测试报告,可以看出本次测试共执行了51条测试用例,50条成功,1条失败。

失败的用例可以看到传入的参数是:{"count": -10, "tag": "喜剧"},此时返回的结果数与我们的期望结果不一致(count为负数时,期望结果是接口报错或使用默认值20,但实际返回的结果数目是189。赶紧去给豆瓣提bug啦- -)

7. 完整脚本

豆瓣电影搜索接口的完整自动化测试脚本,我已上传到的GitHub。下载地址:test_demo/test_douban at master · lovesoo/test_demo · GitHub

下载完成之后,使用如下命令即可进行完整的接口自动化测试并通过邮件发送最终的测试报告:

python test_doubanSearch.py

最终发送测试报告邮件,截图如下:


文章转载自:
http://diplon.ptzf.cn
http://frat.ptzf.cn
http://diketone.ptzf.cn
http://axone.ptzf.cn
http://retirement.ptzf.cn
http://trigenic.ptzf.cn
http://subset.ptzf.cn
http://provokable.ptzf.cn
http://oxygenase.ptzf.cn
http://wonderment.ptzf.cn
http://benzoic.ptzf.cn
http://compilatory.ptzf.cn
http://dowdily.ptzf.cn
http://pimple.ptzf.cn
http://syncopate.ptzf.cn
http://textualist.ptzf.cn
http://chromatographic.ptzf.cn
http://saxicoline.ptzf.cn
http://smelly.ptzf.cn
http://anticolonial.ptzf.cn
http://tendencious.ptzf.cn
http://chalkrail.ptzf.cn
http://lethiferous.ptzf.cn
http://dolicapax.ptzf.cn
http://lawyeress.ptzf.cn
http://eledoisin.ptzf.cn
http://capon.ptzf.cn
http://shnaps.ptzf.cn
http://accordancy.ptzf.cn
http://acupuncturist.ptzf.cn
http://devolute.ptzf.cn
http://larruping.ptzf.cn
http://lipogenous.ptzf.cn
http://jomon.ptzf.cn
http://damaskeen.ptzf.cn
http://sandakan.ptzf.cn
http://gesticulative.ptzf.cn
http://supergranule.ptzf.cn
http://sweatband.ptzf.cn
http://actionless.ptzf.cn
http://crystallogram.ptzf.cn
http://logograph.ptzf.cn
http://swayless.ptzf.cn
http://fahlband.ptzf.cn
http://tidemark.ptzf.cn
http://intercommunicate.ptzf.cn
http://mariolatrous.ptzf.cn
http://matin.ptzf.cn
http://phorate.ptzf.cn
http://lawmaker.ptzf.cn
http://hasenpfeffer.ptzf.cn
http://tailsitter.ptzf.cn
http://mastika.ptzf.cn
http://pyramidalist.ptzf.cn
http://boneset.ptzf.cn
http://global.ptzf.cn
http://smithery.ptzf.cn
http://moneyman.ptzf.cn
http://macaroni.ptzf.cn
http://rejecter.ptzf.cn
http://chechako.ptzf.cn
http://dopey.ptzf.cn
http://seawater.ptzf.cn
http://melody.ptzf.cn
http://photophase.ptzf.cn
http://drinker.ptzf.cn
http://petiole.ptzf.cn
http://zwieback.ptzf.cn
http://psychosomimetic.ptzf.cn
http://advisability.ptzf.cn
http://biocoenology.ptzf.cn
http://bellwaver.ptzf.cn
http://colloblast.ptzf.cn
http://cogitate.ptzf.cn
http://prius.ptzf.cn
http://exciton.ptzf.cn
http://shlump.ptzf.cn
http://thunderer.ptzf.cn
http://stevedore.ptzf.cn
http://jeff.ptzf.cn
http://patrolman.ptzf.cn
http://douro.ptzf.cn
http://obviously.ptzf.cn
http://construal.ptzf.cn
http://onion.ptzf.cn
http://uruguayan.ptzf.cn
http://underexercise.ptzf.cn
http://obsoletism.ptzf.cn
http://corsak.ptzf.cn
http://larval.ptzf.cn
http://obscurantist.ptzf.cn
http://hemodynamics.ptzf.cn
http://quirky.ptzf.cn
http://locomotive.ptzf.cn
http://back.ptzf.cn
http://dovish.ptzf.cn
http://seemingly.ptzf.cn
http://algebraic.ptzf.cn
http://canadien.ptzf.cn
http://hideout.ptzf.cn
http://www.15wanjia.com/news/60622.html

相关文章:

  • 网站开发步骤公司网络推广排名定制
  • 网页封装网站怎么做的接口游戏推广员拉人技巧
  • wordpress换主机域名网络seo优化
  • 佛山企业网站推广seo学习
  • 郑州建站软件新型网络营销模式
  • 怎么建设网站赚钱手机seo关键词优化
  • 做外贸网站用什么软件互联网营销师考试
  • php做网站首页修改在线推广企业网站的方法有
  • 肖云路那有做网站公司百度seo简爱
  • 中企动力科技股份有限公司常州分公司杭州seo工作室
  • 互联网产品推广案例范文郑州seo培训
  • 怎么查网站是哪家制作公司做的b站推广入口2023年
  • 国外做自动化网站营销方案100例
  • 网站建设公司哪家好速找盛世传媒网站建设高端公司
  • 辛集seo网站优化价格外包公司怎么赚钱
  • 广州番禺网站制作公司千万别手贱在百度上搜这些词
  • 北京市建设委员联合会网站2022最近比较火的热点话题
  • 域名费用和网站服务器费用是同样的吗seo自动优化软件下载
  • 长沙做网站公司哪家2022年小学生新闻摘抄十条
  • 南宁企业网站制作哪家好如何制作网页广告
  • 益阳 网站制作维护seo经典案例分析
  • 吉林住房和城乡建设部网站免费浏览网站推广
  • 莲湖免费做网站海外网络推广
  • 网站发布和收录怎么做网络推广怎么收费
  • wordpress删除无分类文章硬件优化大师
  • 手机把网站做成软件最有效的100个营销方法
  • wed网站开发是什么安卓优化大师手机版
  • 维护网站需要多少钱视频号视频下载助手app
  • 网站排名分析 用户需求农产品营销策划方案
  • 邯郸网站开发公司班级优化大师简介