接口测试用例模板Excel
- 格式:xls
- 大小:72.00 KB
- 文档页数:2
excel⽤例接⼝⾃动化要求:根据excel中的测试⽤例,执⾏接⼝测试,并将结果录⼊excel,邮件发送给相关⼈思路如下:1.读取excel,保存测试⽤例中的内容2.根据excel中的请求url,method,data,调⽤接⼝,并保存返回报⽂3.读取返回报⽂,和检查点对⽐,不⼀致则不通过,⼀致则通过,并保存测试结果4.将测试结果和保存报⽂写⼊excel中5.测试结束后将excel变成附件发邮件需要⽤到xlrd,openpyxl,requests,json模块这是excelway,py⽂件,将读取excel⽤例和修改写⼊测试结果和返回报⽂的函数放在这个⽂件⾥import xlrd,openpyxl,jsondef readExcel(excel_path):'''读取excel表中测试⽤例的函数:param excel_path: 传⼊excel⽂件路径:return: 返回该excel中第⼀个sheet中全部的测试⽤例'''try:book = xlrd.open_workbook(excel_path) #打开excelexcept Exception as e:print('excel路径错误或⽂件⽆法打开')else:sheet = book.sheet_by_index(0) #取第⼀个sheet页all_test_cases = []for row_num in range(1,sheet.nrows): #从第2⾏开始获取所有⾏excel内容row=sheet.row_values(row_num)all_test_cases.append(row) #将excel的每⼀条测试⽤例添加到all_test_casesreturn all_test_casesdef updateExcel(excel_path,result_list,responses_list):book = openpyxl.load_workbook(excel_path)sheet = book.activefor col8 in range(len(result_list)): #将测试结果写⼊第⼋列sheet.cell(col8+2,8,result_list[col8])for col9 in range(len(responses_list)): #将返回报⽂写⼊第九列sheet.cell(col9+2,9,json.dumps(responses_list[col9],ensure_ascii=False))book.save(excel_path)这是HttpRequest.py⽂件,将post、get请求的操作放在这个⽂件下,定义为⼀个类import requestsclass MyRequest:def__init__(self,url,method='get',data=None,headers=None,is_json=False):method = method.lower()self.url = urlself.data = dataself.headers = headersself.is_json = is_jsonif hasattr(self,method):getattr(self,method)()def get(self):try:req = requests.get(self.url,self.data,headers=self.headers).json()except Exception as e:self.response = {"error":"接⼝请求出错%s"%e}else:self.response = reqdef post(self):try:if self.is_json:req = requests.post(self.url,json=self.data,headers=self.headers).json()else:req = requests.post(self.url, self.data, headers=self.headers).json()except Exception as e:self.response = {"error": "接⼝请求出错%s" % e}else:self.response = req这是mail.py⽂件,将发送邮件的函数放⼊⽂件中import yagmaildef send_mail():smtp = yagmail.SMTP(host='',user='xxx@',password='xxxxx',)smtp.send(to='xxxx@',cc='xxxx@',subject='测试报告',contents='请查收测试报告',attachments=[r'C:\Users\ght\PycharmProjects\untitled\homework\testcase.xlsx'] )send_mail()接⼝⾃动化脚本如下,执⾏脚本时,需导⼊excelway,HttpRequest,mail import excelwayimport HttpRequestimport mailimport json,threadpooldef get_data_dic(data):'''将测试⽤例中传⼊参数data'a=sdaf,b=1'这样格式的字符串转化为字典{'a':'1','b':'2'}:param data:传⼊测试数据,格式为a=1,b=2:return:返回字典格式'''str1 = []data_list = data.split(',')for d in data_list:str1.append(d.split('='))return dict(str1)def res_check(res,res_check):'''⽐对接⼝返回值是否和预期结果⼀致,⼀致则返回“通过”,不⼀致则返回“失败”:param res: 接⼝返回数据:param res_check: 检查值:return: 测试结果通过或不通过'''res =json.dumps(res,ensure_ascii=False) #字典转化为字符串res = res.replace('": "',"=").replace('": ',"=") #格式转换为a=1,b=2这样,⽅便与检查点匹配 res_check = res_check.split(',')for r in res_check:if r in res:passelse:return'失败'return'通过'def interfaceTest(all_test_cases):'''将测试⽤例逐条执⾏,获得返回报⽂和测试结果,并传⼊updateExcel函数:param all_test_cases: 传⼊所有的测试⽤例的list'''responses_list = [] #存返回报⽂的listresult_list =[] #存测试结果的listfor case in all_test_cases:try:test_project = case[0]test_module = case[1]url = case[2]method = case[3]data = get_data_dic(case[4])test_description = case[5]test_check = case[6]except Exception as e:return('测试⽤例格式不正确%s'%e)else:response = HttpRequest.MyRequest(url=url,method=method,data=data).response responses_list.append(response)res = res_check(response,test_check) #判断返回结果符合检查点if'通过'in res:result_list.append('通过')else:result_list.append('失败')excelway.updateExcel(excel_path, result_list, responses_list)if__name__ == '__main__':excel_path = 'testcase.xlsx'all_test_cases = excelway.readExcel(excel_path)interfaceTest(all_test_cases)mail.send_mail()print('完成')。
接⼝测试⽤例和接⼝测试模板简介 当今社会在测试领域,接⼝测试已经越来越多的被提及,被重视,⽽且现在好多招聘信息要对接⼝测试提出要求。
区别于传统意义上的系统级别测试,很多测试⼈员在接触到接⼝测试的时候,也许对测试执⾏还可以⽐较顺利的上⼿,但⼀提到相关的⽂档,⽐如测试⽤例和报告,就有些不知所措了。
这类问题在我加⼊的⼏个测试的群⾥,经常看到⼀些⼈在不断提问。
今天就⽤这篇⽂章来说说接⼝测试⽤例和报告。
接⼝功能测试⽤例模板 提到功能测试⽤例,我们知道,其中最重要的两个要素就是: 测试步骤 预期结果 其实对于接⼝功能测试也同样如此;接⼝测试的步骤中,最重要的是将实现向接⼝发送预设请求,结果则要关注响应信息及后续处理。
所以接⼝功能测试⽤例编排可以考虑下列两种形式: 接⼝其他⽅⾯测试⽤例模板: 要特别注意的是,实际⼯作场景中我们可能还会对接⼝之间的串联和混合场景进⾏测试。
就是上⼀个接⼝返回的数据有可能作为后边的接⼝的参数传⼊后边的接⼝。
测试报告模板 测试报告是指把测试的过程和结果写成⽂档,对发现的问题和缺陷进⾏分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。
测试报告是测试阶段最后的⽂档产出物。
优秀的测试经理或测试⼈员应该具备良好的⽂档编写能⼒。
接⼝测试报告很多时候会和接⼝性能测试报告⼀起,如果要单独报告的话,可以考虑以下内容:01 系统接⼝概况 简要描述与测试项⽬相关的⼀些背景资料,如被测系统简介,项⽬上线计划等。
对于系统接⼝的定义和设计做出介绍。
⽐如系统⼀共有多少个接⼝?采⽤哪种协议?都涉及到哪些发送⽅法?采⽤怎样的请求格式?使⽤怎样的返回标准?可⽤表格说明。
02 测试⽬的与范围 描述本次接⼝测试的⽬的、范围与⽬标,内容应与本次接⼝测试的《接⼝测试实施⽅案》中的对应内容保持⼀致。
测试⽬的 本测试报告的具体编写⽬的,指出预期的读者范围。
实例:本测试报告为XXX项⽬的测试报告,⽬的在于总结测试阶段的测试以及分析测试结果,描述系统是否符合需求(或达到XXX功能⽬标)。
⾃动化PYTHON接⼝⾃动化测试--使⽤EXCEL进⾏测试⽤例执⾏与测试结果写⼊1.为了更好的实现读取excel⽂件进⾏接⼝⾃动化测试,将操作excel⽂件⽅法封装:1. # coding:utf-82. import xlrd3. from xlutils.copy import copy # 导⼊xlutils的copy⽅法4.5. class HandleExcel:6. """封装操作excel的⽅法"""7. def __init__(self, file='E:/PyChram项⽬集合/interfacetest/excel/30.xls', sheet_id=0):8. self.file = file9. self.sheet_id = sheet_id10. self.data = self.get_data()11. # 为了在创建⼀个实例时就获得excel的sheet对象,可以在构造器中调⽤get_data()12. # 因为类在实例化时就会⾃动调⽤构造器,这样在创建⼀个实例时就会⾃动获得sheet对象了13.14. # 获取某⼀页sheet对象15. def get_data(self):16. data = xlrd.open_workbook(self.file)17. sheet = data.sheet_by_index(self.sheet_id)18. return sheet19.20. # 获取excel数据⾏数21. def get_rows(self):22. rows = self.data.nrows23. # t = self.get_data() # 调⽤get_data()取得sheet对象(如果不在构造器获取sheet对象,就需要在⽅法内先获取sheet对象,再进⾏下⼀步操作,每个⽅法都要这样,所以还是写在构造器中⽅便)24. # rows = t.nrows25. return rows26.27. # 获取某个单元格数据28. def get_value(self, row, col):29. value = self.data.cell_value(row, col)30. return value31.32. # 向某个单元格写⼊数据33. def write_value(self, row, col, value):34. data = xlrd.open_workbook(self.file) # 打开⽂件35. data_copy = copy(data) # 复制原⽂件36. sheet = data_copy.get_sheet(0) # 取得复制⽂件的sheet对象37. sheet.write(row, col, value) # 在某⼀单元格写⼊value38. data_copy.save(self.file) # 保存⽂件39.40. # 封装excel的列名常量41. def get_caseseq():42. """获取caseSeq"""43. caseSeq = 044. return caseSeq45.46.47. def get_apitype():48. """获取apiType"""49. apiType = 150. return apiType51.52.53. def get_apiseq():54. """获取apiSeq"""55. apiSeq = 256. return apiSeq57.58.59. def get_apiName():60. """获取apiName"""61. apiName = 362. return apiName63.64.65. def get_priority():66. """获取priority"""67. priority = 468. return priority69.70.71. def get_url():72. """获取url"""73. url = 574. return url75.76.77. def get_method():78. """获取method"""79. method = 680. return method81.82.83. def get_header():84. """获取header"""85. header = 786. return header87.88.89. def get_purpose():90. purpose = 891. return purpose92.93.94. def get_params():95. """获取params"""96. params = 997. return params98.99.100. def get_expectvalue():101. """获取expectValue"""102. expect = 10103. return expect104.105. def get_resultvalue():106. result = 11107. return result108.109. if __name__ == '__main__':110. test = HandleExcel()111. print(test.get_data())112. print(test.get_rows())113. print(test.get_value(0, 0))2.将操作excel的⽅法封装好后,准备接⼝⽤例来遍历循环其中:caseSeq:⽤例编号apiType:接⼝类型apiSeq:接⼝编号apiName:接⼝名称priority:优先级url:接⼝调⽤地址method:协议⽅法header:请求头purpose:⽤例描述params:接⼝参数expectValue:期望结果resultValue:测试结果3.编写主函数代码,实现接⼝⽤例遍历并将测试结果写⼊excel表中1. # coding:utf-82.3. from mylib.run_method import RunMain4. from mylib.handle_excel import *5. import json6.7. class RunTestCase:8. def __init__(self):9. self.Runmain = RunMain() # 实例化调⽤get/post请求基类10. self.data = HandleExcel() # 实例化操作excel⽂件类11.12. def go_run(self):13. rows_count = self.data.get_rows() # 获取excel⾏数14. for i in range(1,rows_count): # 利⽤⾏数进⾏迭代处理每个接⼝15. url = self.data.get_value(i, get_url()) # 循环获取url的值16. print(url)17. method = self.data.get_value(i, get_method()) # 循环获取method的值18. print(method)19. if self.data.get_value(i, get_params()) == '':20. data = None21. else:22. data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数,并将得到的数据反序列23. expect = self.data.get_value(i, get_expectvalue()) # 循环获取期望输出24. is_run = self.data.get_value(i, get_priority()) # 获取是否运⾏,即判断excel中priority是不是"H"25. if is_run == 'H':26. res = self.Runmain.run_main(url, method, data) # 调⽤get/post主函数27. print(res)28. if expect in res:29. print('测试成功')30. self.data.write_value(i, get_resultvalue(), 'pass')31. else:32. print('测试失败')33. self.data.write_value(i, get_resultvalue(), 'fail')34.35. if __name__ == '__main__':36. run = RunTestCase()37. run.go_run()运⾏结果如下:excel表格中填⼊如下:本篇简单的使⽤excel进⾏接⼝测试⽤例的执⾏,在测试过程中最重要的是测试⽤例的编写,在遇到不同的测试⽤例执⾏时会出现不同的问题,还需要多使⽤多练习,按照实际进⾏Python接⼝⾃动化测试⽤例编写。
注:1.一个模块对应一个Excel表 2.一条接口对应一张sheet表 3.表中一行对应一条测试用例
2.4 测试记录及结果分析
2.4.1. 单场景接口测试
测试结果数据
给出本次单场景接口测试的测试结果数据
结合测试中发现的问题对于整体测试结果进行分析,做出判断。
l 接口业务功能错误类缺陷情况
l 接口异常处理类缺陷情况
l 接口处理数据沉淀缺陷类情况
l 接口安全性缺陷情况
2.4.2. 混合场景接口测试2.4.2.1. 测试结果数据用例
场景描述
被测接口/user/login /commodity/search /commodity/pdp /user/login /user/personalInfo /user/personalInfo/portrait /upload ......2.5 测试结论
2.4.2.2. 测试问题及结果分析
结合测试中发现的问题对于整体测试结果进行分析,做出判断。
l 混合接口业务功能错误类缺陷情况;
l 混合接口业务数据传递类缺陷情况;
给出本次接口测试的测试总结论,一般以测试结果与测试目标的比较结果作为测试结论
APIm002
用户登录、修改个人信息、上传头像 给出本次混合场景接口测试的测试结果数据APIm001
用户登录、搜索、查看详情
测试结果备注
结论失败通过。
Python接⼝测试之Excel表格数据操作⽅法封装 引⾔ 我们在做接⼝测试,经常会⽤到excel去管理测试数据,对Excel的操作⽐较频繁,那么使⽤python如何操作Excel⽂件的读与写呢?由于之前讲的都是⼤的框框,没有讲这么⼩的模块使⽤,现在就化整为0的讲解。
读写模块介绍 python有三个模块是对Excel⽂件的操作,分别是:openpyxl,xlrd和xlwt。
下⾯简单的介绍⼀下各个模块的特点及使⽤案例。
xlrd xlrd是⽤来从Excel中读写数据的,但我平常只⽤它进⾏读操作,写操作会遇到些问题。
⽤xlrd进⾏读取⽐较⽅便,流程和平常⼿动操作Excel⼀样,打开⼯作簿(Workbook),选择⼯作表(sheets),然后操作单元格(cell)。
下⾯举个例⼦,例如要打开当前⽬录下名为”data.xlsx”的Excel⽂件,选择第⼀张⼯作表,然后读取第⼀⾏的全部内容并打印出来。
Python代码如下:import osimport xlrdfrom xlutils.copy import copy# 获取当前⽂件的绝对路径curPath = os.path.abspath(os.path.dirname(__file__))print(curPath)# 获取项⽬根⽬录rootPath = os.path.abspath(os.path.dirname(curPath))print(rootPath)# 获取⽂件路径file_path = r'APItest_ddt\data\data.xls'file_path = os.path.join(rootPath,file_path)print(file_path)#打开excel⽂件data=xlrd.open_workbook(file_path)#获取第⼀张⼯作表(通过索引的⽅式)table=data.sheets()[0]#data_list⽤来存放数据data_list=[]#将table中第⼀⾏的数据读取并添加到data_list中data_list.extend(table.row_values(0))#打印出第⼀⾏的全部数据for item in data_list:print(item)# 写⼊数据copy_data = copy(data)# 读取复制的excel的sheet页copy_data_to_sheet = copy_data.get_sheet(0)# 通过get_sheet()获取的sheet有write()⽅法,写⼊数据copy_data_to_sheet.write(5,5,"这是我写⼊的测试数据:哈哈")# 保存数据copy_data.save(file_path)运⾏结果:C:\Users\Administrator\Desktop\APItest_ddtC:\Users\Administrator\DesktopC:\Users\Administrator\Desktop\APItest_ddt/data/data.xls地址打开data.xls⽂件:在处理excel数据时发现了xlwt的局限性–不能写⼊超过65535⾏、256列的数据(因为它只⽀持Excel 2003及之前的版本,在这些版本的Excel中⾏数和列数有此限制),这对于实际应⽤还是不够的。
当前位置:首页 -> 资讯详细容最全面的测试用例模板{ 项目名称 }测试用例标题文件状态:[√] 草稿 [ ] 正式发布[ ] 正在修改文件标识:Company-Project-IT-PLAN 当前版本:X.Y作者:完成日期:Year-Month-Day版本历史版本/状态作者参与者起止日期备注目录0. 文档介绍0.1 文档目的0.2 文档围0.3 读者对象0.4 参考文献0.5 术语与缩写解释1. 接口-路径测试用例1.1 被测试对象(单元)的介绍1.2 测试围与目的1.3 测试环境与测试辅助工具的描述1.4 测试驱动程序的设计1.5 接口测试用例1.6 路径测试的检查表2. 功能测试用例2.1 被测试对象的介绍2.2 测试围与目的2.3 测试环境与测试辅助工具的描述2.4 测试驱动程序的设计2.5 功能测试用例3. 健壮性测试用例3.1 被测试对象的介绍3.2 测试围与目的3.3 测试环境与测试辅助工具的描述3.4 测试驱动程序的设计3.5 容错能力/恢复能力测试用例4. 性能测试用例4.1 被测试对象的介绍4.2 测试围与目的4.3 测试环境与测试辅助工具的描述4.4 测试驱动程序的设计4.5 性能测试用例5. 图形用户界面测试用例5.1 被测试对象的介绍5.2 测试围与目的5.3 测试环境与测试辅助工具的描述5.4 测试驱动程序的设计5.5 测试人员分类5.6 用户界面测试的检查表6. 信息安全性测试用例6.1 被测试对象的介绍6.2 测试围与目的6.3 测试环境与测试辅助工具的描述6.4 测试驱动程序的设计6.5 信息安全性测试用例7. 压力测试用例7.1 被测试对象的介绍7.2 测试围与目的7.3 测试环境与测试辅助工具的描述7.4 测试驱动程序的设计7.5 压力测试用例8. 可靠性测试用例8.1 被测试对象的介绍8.2 测试围与目的8.3 测试环境与测试辅助工具的描述8.4 测试驱动程序的设计8.5 可靠性测试用例9. 安装/反安装测试用例9.1 被测试对象的介绍9.2 测试围与目的9.3 测试环境与测试辅助工具的描述9.4 测试驱动程序的设计9.5 安装/反安装测试用例附录:评审意见0. 文档介绍。
当前位置:首页 -> 资讯详细内容最全面的测试用例模板{ 项目名称 }测试用例标题文件状态:[√] 草稿 [ ] 正式发布[ ] 正在修改文件标识:Company-Project-IT-PLAN 当前版本:X.Y作者:完成日期:Year-Month-Day版本历史版本/状态作者参与者起止日期备注目录0. 文档介绍0.1 文档目的0.2 文档范围0.3 读者对象0.4 参考文献0.5 术语与缩写解释1. 接口-路径测试用例1.1 被测试对象(单元)的介绍1.2 测试范围与目的1.3 测试环境与测试辅助工具的描述1.4 测试驱动程序的设计1.5 接口测试用例1.6 路径测试的检查表2. 功能测试用例2.1 被测试对象的介绍2.2 测试范围与目的2.3 测试环境与测试辅助工具的描述2.4 测试驱动程序的设计2.5 功能测试用例3. 健壮性测试用例3.1 被测试对象的介绍3.2 测试范围与目的3.3 测试环境与测试辅助工具的描述3.4 测试驱动程序的设计3.5 容错能力/恢复能力测试用例4. 性能测试用例4.1 被测试对象的介绍4.2 测试范围与目的4.3 测试环境与测试辅助工具的描述4.4 测试驱动程序的设计4.5 性能测试用例5. 图形用户界面测试用例5.1 被测试对象的介绍5.2 测试范围与目的5.3 测试环境与测试辅助工具的描述5.4 测试驱动程序的设计5.5 测试人员分类5.6 用户界面测试的检查表6. 信息安全性测试用例6.1 被测试对象的介绍6.2 测试范围与目的6.3 测试环境与测试辅助工具的描述6.4 测试驱动程序的设计6.5 信息安全性测试用例7. 压力测试用例7.1 被测试对象的介绍7.2 测试范围与目的7.3 测试环境与测试辅助工具的描述7.4 测试驱动程序的设计7.5 压力测试用例8. 可靠性测试用例8.1 被测试对象的介绍8.2 测试范围与目的8.3 测试环境与测试辅助工具的描述8.4 测试驱动程序的设计8.5 可靠性测试用例9. 安装/反安装测试用例9.1 被测试对象的介绍9.2 测试范围与目的9.3 测试环境与测试辅助工具的描述9.4 测试驱动程序的设计9.5 安装/反安装测试用例附录:评审意见0. 文档介绍。
接口测试用例模板和例子一、接口测试用例模板接口测试用例模板主要包括测试对象、测试数据、预期结果、实际结果、测试结论以及备注等信息,下面是一个简单的接口测试用例模板。
测试对象:接口名称:测试数据:请求参数:请求头:请求体:预期结果:响应码:响应头:响应体:实际结果:响应码:响应头:响应体:测试结论:测试通过/测试不通过备注:二、接口测试用例例子以下是一些常见的接口测试用例例子。
1.检查接口返回的响应码是否正确测试对象:登录接口测试数据:请求参数:{ "username": "user", "password": "123456" } 请求头: Content-Type: application/json 预期结果:响应码:200实际结果:响应码:200测试结论:测试通过备注:2.检查接口返回的响应头中是否含有指定信息测试对象:获取用户信息接口测试数据:请求参数: { "userId": "1" } 请求头: Authorization: Token xxxxxxxxx预期结果:响应头:含有"Content-Type: application/json"信息实际结果:响应头:含有"Content-Type: application/json"信息测试结论:测试通过备注:3.检查接口返回的响应体中是否包含指定数据测试对象:获取商品信息接口测试数据:请求参数: { "productId": "1" } 请求头: Content-Type: application/json预期结果:响应体:包含商品名称"XX"信息实际结果:响应体:包含商品名称"XX"信息测试结论:测试通过备注:4.检查接口返回的响应体中的数据格式是否正确测试对象:获取订单信息接口测试数据:请求参数: { "orderId": "1" } 请求头: Content-Type: application/json预期结果:响应体:数据格式正确实际结果:响应体:数据格式正确测试结论:测试通过备注:5.检查接口性能是否满足需求测试对象:获取用户列表接口测试数据:请求参数: { "offset": "0", "limit": "10" } 请求头: Content-Type: application/json预期结果:响应时间:不超过5秒实际结果:响应时间:3秒测试结论:测试通过备注:总结:以上是一些常见的接口测试用例例子和模板,但具体的测试用例还需要根据实际需求进行编写。
接⼝测试⽤例和报告模板⼀、接⼝⽤例模板提到测试⽤例,我们知道,其中最重要的两个要素就是:测试步骤预期结果其实对于接⼝测试也同样如此,接⼝测试的步骤中,最重要的是将实现向接⼝发送预设请求,结果则要关注响应信息及后续处理。
所以接⼝测试⽤例编排可以考虑下列两种形式:要注意的是,实际⼯作场景中我们可能还会对接⼝之间的串联和混合场景进⾏测试。
接⼝测试报告很多时候会和接⼝性能测试报告⼀起,如果要单独报告的话,可以考虑以下内容:01 系统接⼝概况简要描述与测试项⽬相关的⼀些背景资料,如被测系统简介,项⽬上线计划等。
对于系统接⼝的定义和设计做出介绍。
⽐如系统⼀共有多少个接⼝?采⽤哪种协议?都涉及到哪些发送⽅法?采⽤怎样的请求格式?使⽤怎样的返回标准?可⽤表格说明。
02 测试⽬的与范围描述本次接⼝测试的⽬的、范围与⽬标,内容应与本次接⼝测试的《接⼝测试实施⽅案》中的对应内容保持⼀致。
测试⽬的本次测试的⽬的在于确保系统接⼝功能和逻辑处理已验证,符合《接⼝定义说明书》的定义和要求,满⾜系统需要。
测试对象范围说明测试的对象是哪些单场景接⼝功能测试混合场景接⼝功能测试详见《项⽬接⼝测试⽤例》可考虑贴出x-mind图测试指标范围被测接⼝接收请求和返回报⽂被测接⼝返回状态被测接⼝对应业务逻辑处理涉及数据沉淀的处理复杂场景下多接⼝串联交互03 测试⼯具及资源测试⼯具说明本次测试使⽤到的测试⼯具和辅助⼯具测试⼯具:该测试将使⽤Postman(例)Postman是⾕歌的⼀款接⼝测试插件,它使⽤简单,⽀持⽤例管理,⽀持get、 post、⽂件上传、响应验证、变量管理、环境参数管理等功能,可以批量运⾏,并⽀持⽤例导出、导⼊。
辅助⼯具:略测试资源04 测试记录及结果分析单场景接⼝测试测试结果数据给出本次单场景接⼝测试的测试结果数据05 测试问题及结果分析结合测试中发现的问题对于整体测试结果进⾏分析,做出判断。
接⼝业务功能错误类缺陷情况接⼝异常处理类缺陷情况接⼝处理数据沉淀缺陷类情况接⼝安全性缺陷情况混合场景接⼝测试测试结果数据给出本次混合场景接⼝测试的测试结果数据测试问题及结果分析结合测试中发现的问题对于整体测试结果进⾏分析,做出判断。
接⼝测试⽤例模板接⼝测试⽤例模板⽤例标识标题模块优先级描述前置条件请求类型请求参数类型操作步骤预期结果API001请求使⽤正确的⽤户名和密码可以正确登录⽤户登录P1测试当向登录接⼝使⽤正确⽤户名和密码进⾏请求可以正确得到登录成功的响应⽆getusername string 1 打开测试⼯具2 发送请求信息3 查看反馈信息状态码:200响应主体:业务逻辑:登录成功后续处理:⽆password stringAPI002使⽤错误密码参数格式登录失败⽤户登录P2测试当向登录接⼝使⽤正确⽤户名和错误的密码格式进⾏请求登录不能成功,接⼝做出正确的异常处理响应⽆getusername string状态码:200响应主体:业务逻辑:登录失败后续处理:⽆password string⽤例名称登录⽤例编号API001接⼝地址/user/login请求⽅式post前置条件已创建可登录⽤户描述请求头部请求参数状态码期望返回结果数据沉淀⽤户正常登录ContenType:Application/jason {"username:vincentpassword:123456"}200{"id:0012"}⽆密码错误拒绝登录ContenType:Application/jason {"username:vincentpassword:password"}400{"message:passwordmismatch"}⽆。
当前位置:首页 -> 资讯详细内容最全面的测试用例模板{ 项目名称 }测试用例标题文件状态:[√] 草稿 [ ] 正式发布[ ] 正在修改文件标识:Company-Project-IT-PLAN 当前版本:X.Y作者:完成日期:Year-Month-Day版本历史版本/状态作者参与者起止日期备注目录0. 文档介绍0.1 文档目的0.2 文档范围0.3 读者对象0.4 参考文献0.5 术语与缩写解释1. 接口-路径测试用例1.1 被测试对象(单元)的介绍1.2 测试范围与目的1.3 测试环境与测试辅助工具的描述1.4 测试驱动程序的设计1.5 接口测试用例1.6 路径测试的检查表2. 功能测试用例2.1 被测试对象的介绍2.2 测试范围与目的2.3 测试环境与测试辅助工具的描述2.4 测试驱动程序的设计2.5 功能测试用例3. 健壮性测试用例3.1 被测试对象的介绍3.2 测试范围与目的3.3 测试环境与测试辅助工具的描述3.4 测试驱动程序的设计3.5 容错能力/恢复能力测试用例4. 性能测试用例4.1 被测试对象的介绍4.2 测试范围与目的4.3 测试环境与测试辅助工具的描述4.4 测试驱动程序的设计4.5 性能测试用例5. 图形用户界面测试用例5.1 被测试对象的介绍5.2 测试范围与目的5.3 测试环境与测试辅助工具的描述5.4 测试驱动程序的设计5.5 测试人员分类5.6 用户界面测试的检查表6. 信息安全性测试用例6.1 被测试对象的介绍6.2 测试范围与目的6.3 测试环境与测试辅助工具的描述6.4 测试驱动程序的设计6.5 信息安全性测试用例7. 压力测试用例7.1 被测试对象的介绍7.2 测试范围与目的7.3 测试环境与测试辅助工具的描述7.4 测试驱动程序的设计7.5 压力测试用例8. 可靠性测试用例8.1 被测试对象的介绍8.2 测试范围与目的8.3 测试环境与测试辅助工具的描述8.4 测试驱动程序的设计8.5 可靠性测试用例9. 安装/反安装测试用例9.1 被测试对象的介绍9.2 测试范围与目的9.3 测试环境与测试辅助工具的描述9.4 测试驱动程序的设计9.5 安装/反安装测试用例附录:评审意见。
接⼝测试⽤例
1、接⼝测试⽤例要素:请求接⼝的参数,请求⽅式,请求的头⽂件,等这些因素都是必需的,对于响应的response, 返回的状态码,返回的数据的检查点,都是必须要事先说明好的,⽤例完善后,我们的脚本在写起来就会效率很⾼,在脚本中,我们需要保证的⼀点,就是稳定,因为请求的响应时间也是我们要考虑的⽅⾯。
2、输⼊参数测试:针对输⼊的参数进⾏测试,也可以说是假定接⼝参数的不正确性进⾏的测试,确保接⼝对任意类型的输⼊都做了相应的处理:输⼊参数合法,输⼊参数不合法,输⼊参数为空,输⼊参数为null,输⼊参数超长;
3、功能测试:接⼝是否满⾜了所提供的功能,相当于是正常情况测试,如果⼀个接⼝功能复杂时推荐对接⼝⽤例进⾏结构划分,这样⼦⽤例具有更好的可读性和维护性。
4、逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接⼝测试界限并不是那么清楚,所以我们也可以从给出的设计⽂档中考虑内部逻辑错误的分⽀情况和异常;
5、异常情况测试:接⼝实现是否对异常情况都进⾏了处理,接⼝输⼊参数虽然合法,但是在接⼝实现中,也会出现异常,因为内部的异常不⼀定是输⼊的数据造成的,⽽有可能是其他逻辑造成的,程序需要对任何的异常都进⾏处理。
主要说明调⽤的接⼝传递的数据以及应该对应返回的内容:。
Java接⼝⾃动化测试(四)—使⽤Excel做数据驱动⼀、说明1. 数据驱动测试的核⼼:是测试数据与测试脚本分离,实现测试脚本的参数化,例如:在使⽤⼯具测试时,常常会使⽤到参数化设置;2. 使⽤数据驱动测试⽅便后期维护,提⾼脚本的可重⽤性;3. 做数据驱动的⽅式有多种例如:Excel、CSV、MySQL等⼆、使⽤Excel实现数据驱动1、在pom⽂件添加POI依赖<!--操作Excel数据--><!-- https:///artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><!-- https:///artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><!-- https:///artifact/org.apache.poi/poi-ooxml-schemas --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17</version></dependency>2、新建⼀个Class命名为ExcelUtilspackage com.test.excel;import ermodel.Cell;import ermodel.XSSFCell;import ermodel.XSSFRow;import ermodel.XSSFSheet;import ermodel.XSSFWorkbook;import java.io.FileInputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/*** @author lh* @date 2020/7/3* @description*/public class ExcelUtils {/*** 读取Excel数据* @return List* @throws Exception*/public static List<Map<String ,Object>> readExcle() throws Exception{//⽤流的⽅式读取Excel⽂件FileInputStream fis = new FileInputStream("C:\\Users\\Think\\Desktop\\test.xlsx");//获取Excel⼯作簿XSSFWorkbook xf = new XSSFWorkbook(fis);//获取第⼀个sheetXSSFSheet sheet = xf.getSheetAt(0);//获取第⼀⾏int firstRow = sheet.getFirstRowNum();//获取最后⼀⾏int lastRow = sheet.getLastRowNum();// System.out.println(lastRow);//⽤于map设置key值,⾃定义String columns[] = {"username", "password"};List< Map<String ,Object>> list = new ArrayList<>();for (int i = 0;i<=lastRow;i++){XSSFRow row = sheet.getRow(i);if (row!=null){//获取第⼀⾏,第⼀列int firstcell = row.getFirstCellNum();//获取最后⼀⾏,最后⼀列int lastcell = row.getLastCellNum();Map<String ,Object> map = new HashMap<>();for (int j = 0;j<columns.length;j++){XSSFCell cell = row.getCell(j);if (cell == null){continue;}//封装成mapmap.put(columns[j], getCellFormatValue(cell));}//System.out.println(map);//将map放⼊Listlist.add(map);}fis.close();xf.close();}return list;}//格式化数值类型public static Object getCellFormatValue(Cell cell){Object cellValue = null;/*** getCellTypeEnum()⽅法是枚举类型,⽤于判断单元格值类型,有以下五种格式:* _NONE(-1),* NUMERIC(0),* STRING(1),* FORMULA(2),* BLANK(3),* BOOLEAN(4),* ERROR(5);*/switch(cell.getCellTypeEnum()){case STRING:cellValue = cell.getStringCellValue();break;case NUMERIC:/**如果是数字类型转换成数字类型,但是初始化数字加的.0,因此可以转换成int类型去掉.0* cell.getNumericCellValue()*/cellValue = new Double(cell.getNumericCellValue()).intValue();break;case BOOLEAN:break;case FORMULA:break;}return cellValue;}//测试public static void main(String[] arg) throws Exception{ExcelUtils excelTest = new ExcelUtils();excelTest.readExcle();}}三、在测试⽤例中使⽤1. 在testng中使⽤需要新创建⼀个⽅法getDataMethod(),返回Object[][]类型2. 使⽤注解@DataProvider,为测试⽅法提供数据3. 在测试⽅法上使⽤@Test(dataProvider = "getDataMethod")接收数据4. 使⽤数据驱动有⼀个好处,测试⽅法可以写⼀个,根据参数频繁调⽤⼀个⽅法(和上⼀篇对⽐)package com.test.httpclient;import com.alibaba.fastjson.JSONObject;import com.test.excel.ExcelUtils;import org.testng.Assert;import org.testng.annotations.AfterTest;import org.testng.annotations.BeforeTest;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import java.util.List;import java.util.Map;/*** @author lh* @date 2020/6/8* @description*/@Testpublic class LoginCase {HttpClientPost httpClientPost = new HttpClientPost();@DataProviderpublic Object[][] getDataMethod() throws Exception{ //读取Excel中的数据List<Map<String,Object>> result = ExcelUtils.readExcle();Object[][] params = new Object[result.size()][];for (int i = 0; i < result.size(); i++) {params[i] = new Object[]{result.get(i)};}return params;}@BeforeTestpublic void setup(){System.out.println("⽤例执⾏前执⾏");} //⼀个测试⽅法@Test(dataProvider = "getDataMethod")public void test1(Map<String, Object> param) throws Exception {JSONObject result = httpClientPost.LoginPost(param);Assert.assertEquals(result.get("code"),200);}@AfterTestpublic void teardown(){System.out.println("⽤例执⾏完后执⾏");}}四、查看运⾏结果。
Excel表格导入测试用例Excel表格导入测试用例:一、导入成功1、数据符合规则,并且前后无空格2、数据符合规则,但是前后有空格3、某行存在空格,并且无有效数据(或者将原来存在的数据的单元格中的数据直接删除,excel中对直接删除数据以及删除行之后的结果还是不一样的,有时直接删除数据会被认为改行仍存在只是数据为空)4、数据从word文档或者外部拷贝5、大数据量导入(在运行范围以内)6、仅输入必填项7、模板最后一列后面存在多余列二、导入失败-模板个税有误1、模板文件的格式不正确2、模板列名错误3、模板列的位置不正确4、缺少列5、列名不正确6、模板所在工作表位置或名称不正确预期结果:导入失败,并给出提示:导入失败,模板格式有误三、导入失败-数据为空预期结果:导入失败,并给出提示:导入失败,导入模板中无任何数据四、导入失败-必填项为空预期结果:导入失败,并给出提示:导入失败,并说明具体某一行的某个字段为空五、导入失败-数据不符合规则1、所有行均存在格式不符合规则的数据2、所有含均存在超出长度范围的数据3、部分符合规则,部分不符合规则预期结果:导入失败,并给出提示:导入失败,并给出每一行对应的错误原因六、导入失败-模板内的数据之间存在重复预期结果:导入失败,并给出失败对应的错误原因七、导入失败-模板内的数据与系统中已经存在的数据冲突预期结果:导入失败,并给出失败行对应的错误原因八、导入失败-数据超出可以导入的范围(跟具体业务相关)预期结果:导入失败,并给出失败行对应的错误原因九、导入失败-不选择正确的导入文件预期结果:无法导入,提示:请选择正确的导入文件十、取消导入预期结果:取消导入操作成功,并不执行导入操作十一、导入失败-模板累得数据存在冲突(比如:结束日期小于开始日期)预期结果:导入失败,并给出失败行对应的错误原因其他:1、模板是否正确2、是否对必填项做了说明3、是否对字段长度的约束做了说明4、是否对特殊字段格式做了说明。