接口自动化测试总结
一、什么项目适合做自动化测试?
软件需求变动不频繁
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。
项目周期较长
? ? 由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
自动化测试脚本可重复使用
自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。
二、web 接口测试分类与测试要点
web 接口测试分类:
服务器接口测试,是测试浏览器与服务器的接口
外部接口测试,典型例子是第三方登录
web接口测试测试要点:
1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等
2、检查返回数据的正确性与格式;json是一种非常常见的格式
3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证
4、接口的性能,web接口同样注重性能,这影响用户的使用体验
三、基于python 自带的单元测试框架unittest 编写的接口测试框架特点:
a . 支持简单易用的表格型语法,使得可以用统一方式创建测试用例(.yml / .json 文件)
b . 提供HTML的简单易读的report 和日志结果文件
c . 平台和应用相互独立(平台:测试框架本身;应用:被测程序)
d . 提供XML格式的输出文件,非常容易进行持续集成
e . 支持创建数据驱动的测试用例?
f . 支持代码驱动(比如有关联的接口)
g . 提供test case和test suite级别的setup和teardown
注:
数据驱动:因为数据的改变导致结果的改变(参数化)
数据的改变(更新)驱动自动化的执行,从而引起结果改变
四、基于python 自带的单元测试框架unittest 编写的接口测试架构
分为三层,分别是用例层、控制层、引擎层(驱动层)
用例层:用例层支持 yml文件 json文件 用它来写用例的好处是灵活,字段不需要像excel里面那样
控制层:控制层用来发邮件与 产生报告
引擎层(驱动层):用python 自带的requests 模块调用接口,封装了各种方法,支持加cookie header 等的各种入参类型
?五、完整的测试流程
A . 编写测试用例
直接使用Python自带的单元测试框架unittest来编写自动化测试用例,利用其组织测试用例,断言预期结果,以及批量执行测试用例等功能,可以很好的进行Web自动化测试的开发
代码参考个人git 仓库:https://coding.net/u/chendai21/p/llq-code/git
B. 执行测用例,?执行完毕后自动生成测试报告,发送邮件
整个代码执行过程可以分成二个步骤:
? ? 1.通过unittest框架的discover()找到匹配的测试用例(以test_开头的脚本),由BeautifulReport 的BeautifulReport 方法执行测试用例并生成最新的测试报告。
前置条件:把BeautifulReport文件解压后拷贝到External Libraries—>site-packages里面,主要用于生成HTML测试报告,以便生成一份通俗易懂的测试报告来展示自动化测试成果。
? ? 2.先封装sendmail类再定义send_report()函数(发送指定路径下某文件的邮件),将得到的最新测试报告的完整路径传给sendmail,实现发邮件功能。
代码如下:
import sys,os
BASE_PATH = os.path.dirname(os.path.dirname(
os.path.abspath(__file__)))
sys.path.insert(0,BASE_PATH)
from common.tools import GetCase
from conf.setting import PY_PATH,REPORT_PATH
import unittest,BeautifulReport
def send_report(all_count, pass_count, report_file=None):
title = time.strftime('%Y-%m%d %H%M%S') + '接口测试报告'
content = '''
Dear all:
本次接口测试共运行{all}条测试用例,通过{ok}条,失败{fail}条。
测试报告详细见附件。
'''.format(all=all_count, ok=pass_count, fail=(all_count - pass_count))
# 发送测试报告
m = SendMail(MAIL_USER_INFO, MAIL_PASSWD, RECV, title, content, file=report_file)
m.send_mail()
def run():
g = GetCase()
g.creat_py() #生成测试文件
suite = unittest.TestSuite() #创建测试套装
all_cases = unittest.defaultTestLoader.discover(PY_PATH,'Test*.py') #读取测试用例
[suite.addTests(case) for case in all_cases]
report_html = BeautifulReport.BeautifulReport(suite)
report_filename = '{date}_TestReport.html'.format(date=time.strftime('%Y%m%d%H%M%S'))
# 生成报告的文件名格式20180329190544_TestReport.html
report_html.report(filename=report_filename, description='用例描述', log_path=REPORT_PATH)
send_report((report_html.failure_count + report_html.success_count), report_html.success_count,
os.path.join(REPORT_PATH, report_filename))
# BeautifulReport 生成的报告 用点就能看到它的属性了(success_count、failure_count)
# 实际上BeautifulReport是一个类 然后实例化后有对应的实例变量
run()
生成的测试报告如下图:
收到的邮件如下图:
????????????? 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】
一、Python编程入门到精通
二、接口自动化项目实战??
三、Web自动化项目实战
四、App自动化项目实战??
五、一线大厂简历
六、测试开发DevOps体系??
七、常用自动化测试工具
八、JMeter性能测试??
九、总结(文末尾部小惊喜)
生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!
生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!
只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!?
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!