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

大连 网站建设 有限公司广州做网站公司排名

大连 网站建设 有限公司,广州做网站公司排名,如何做转运网站,松江信息科技有限公司网站1. 什么是接口测试 顾名思义#xff0c;接口测试是对系统或组件之间的接口进行测试#xff0c;主要是校验数据的交换#xff0c;传递和控制管理过程#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型#xff0c;测试类型又主…1. 什么是接口测试 顾名思义接口测试是对系统或组件之间的接口进行测试主要是校验数据的交换传递和控制管理过程以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型测试类型又主要分为功能测试性能测试稳定性测试安全性测试等。 在分层测试的“金字塔”模型中接口测试属于第二层服务集成测试范畴。相比UI层主要是WEB或APP自动化测试而言接口自动化测试收益更大且容易实现维护成本低有着更高的投入产出比是每个公司开展自动化测试的首选。 下面我们以一个HTTP接口为例完整的介绍接口自动化测试流程从需求分析到用例设计从脚本编写、测试执行到结果分析并提供完整的用例设计及测试脚本。 2. 基本流程 基本的接口功能自动化测试流程如下 需求分析 - 用例设计 - 脚本开发 - 测试执行 - 结果分析 2.1 示例接口 接口名称豆瓣电影搜索 接口文档地址https://developers.douban.com/wiki/?titlemovie_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. 脚本开发 依据上面编写的测试用例设计我们使用pythonnosetests框架编写了相关自动化测试脚本。可以完整实现接口自动化测试、自动执行及邮件发送测试报告功能。 5.1 相关lib安装 必要的lib库如下使用pip命令安装即可 pip install nose pip install nose-html-reporting pip install requests 5.2 接口调用 使用requests库我们可以很方便的编写上述接口调用方法如搜索q刘德华示例代码如下 #codingutf-8 import requests import jsonurl https://api.douban.com/v2/movie/search paramsdict(qu刘德华) r requests.get(url, paramsparams) print Search Params:\n, json.dumps(params, ensure_asciiFalse) print Search Response:\n, json.dumps(r.json(), ensure_asciiFalse, indent4) 在实际编写自动化测试脚本时我们需要进行一些封装。如下代码中我们对豆瓣电影搜索接口进行了封装test_q方法只需使用nosetests提供的yield方法即可很方便的循环执行列表qs中每一个测试集 class test_doubanSearch(object):staticmethoddef search(params, expectNumNone):url https://api.douban.com/v2/movie/searchr requests.get(url, paramsparams)print Search Params:\n, json.dumps(params, ensure_asciiFalse)print Search Response:\n, json.dumps(r.json(), ensure_asciiFalse, indent4)def test_q(self):# 校验搜索条件 qqs [u白夜追凶, u大话西游, u周星驰, u张艺谋, u周星驰,吴孟达, u张艺谋,巩俐, u周星驰,大话西游, u白夜追凶,潘粤明]for q in qs:params dict(qq)f partial(test_doubanSearch.search, params)f.description json.dumps(params, ensure_asciiFalse).encode(utf-8)yield (f,) 我们按照测试用例设计依次编写每个功能的自动化测试脚本即可。 5.3 结果校验 在手工测试接口的时候我们需要通过接口返回的结果判断本次测试是否通过自动化测试也是如此。 对于本次的接口我们搜索“q刘德华”我们需要判断返回的结果中是否含有“演职人员刘德华或片名刘德华”搜索“tag喜剧”时需要判断返回的结果中电影类型是否为“喜剧”结果分页时需要校验返回的结果数是否正确等。完整结果校验代码如下 class check_response():staticmethoddef check_result(response, params, expectNumNone):# 由于搜索结果存在模糊匹配的情况这里简单处理只校验第一个返回结果的正确性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-reportTestReport.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://www.dnsts.com.cn/news/249721.html

相关文章:

  • wordpress exploit scanner厦门seo建站
  • 建设网站预期效果怎么写支付宝网站开发流程
  • 广州微网站建设机构南京seo排名优化
  • 多用户商城系统哪里有seo排名优化有哪些
  • 石家庄站建设费用多少俄罗斯乌克兰死亡人数
  • 帝国手机网站cms系统wordpress访问不了
  • 淄博公司网站建设价格电脑安装免费的wordpress
  • 网络建站平台哪个视频网站做视频最赚钱的
  • 建站赚钱灰色网站开发公司比较有名
  • 网站 永久关停 请示阳光家园广州网站
  • 页网站四川网站建设设计
  • 成都网站建设兼职泉州网站建设是什么意思
  • 专门做中式服装平台的网站wordpress文章显示时间
  • 怎样开自己的网站二手手表交易平台哪个好
  • 青州网站建设 258游戏攻略网站怎么做
  • 果合gohe网站建设沈阳市建设工程项目管理中心
  • 网站建设哪些网站可以网上营销渠道的功能
  • 唐山cms模板建站手机网站首页怎么做
  • 关键词优化排名易下拉稳定全能优化型网站
  • 企业 网站 建设 规范室内装修设计软件培训
  • 怎样做音乐网站公司简历模板图片
  • 做商品网站去掉wordpress版权
  • 中国建设银行网站公积金查询拼多多商品关键词搜索排名
  • 模板网站对排名的影响flash属于网页制作平台吗
  • 大连旅顺网站制作闵行区网站建设
  • 怎么看出是模板网站马云不会代码怎么做的网站
  • 网站延迟加载龙炎电商软件
  • 哪个网站的理财频道做的比较好网站常见故障
  • 嘉兴网站建设维护jsp电商购物网站开发
  • 天津做胎儿鉴定网站网站的作用有哪些