【软件测试】银行项目具体操作流程

编程入门 行业动态 更新时间:2024-10-08 18:37:30

【软件测试】银行项目具体<a href=https://www.elefans.com/category/jswz/34/1761774.html style=操作流程"/>

【软件测试】银行项目具体操作流程

项目背景:

  XXXX银行项目采用的是B/S架构,主要是为了解决银行业务中的柜员、凭证、现金、账务等来自存款、贷款、会计模块的管理。

手工弊端:

1.项目业务复杂度高,回归测试工作量大
2.单个接口功能比较简单,容易实现自动化集成,且相对UI更稳定,更能达到监控项目质量的目的
3.从前后端分离的角度说,只依赖前端限制并不能满足安全要求

优化方案及工具选择:

Postman:

  功能强大Chrome插件,界面好看响应格式自主选择,缺点支持的协议单一且不能数据分离,比较麻烦的还有不是所有的公司都能上谷歌

SoupUI:

  支持多协议(http\soup\rest等),能实现功能和性能测试的开源接口测试工具,灵活性高可在此基础上开发脚本,缺点上手比较难
Jmeter:

Java御用的接口压力测试工具,做接口功能测试有点大材小用,缺点不能生成可视化的接口测试报告

综上:手动开发比较合适

框架原理:

采用数据驱动模式,将数据和业务逻辑分离,完成测试用例编写-》测试用例执行-》测试报告发送的目的

测试用例格式编写如下:

代码实现:

注:为了数据脱敏,以百度翻译接口为例

1.读取测试用例数据data.py

# coding=utf-8
import json
import xlrd
import sys
reload(sys)
sys.setdefaultencoding('utf-8')def tableToJson():source = xlrd.open_workbook(r"C:\Users\HP\Desktop\0608\InterfaceData.xlsx")table = source.sheet_by_index(0)list = []  # 字典列表totalList = []  # json列表for i in xrange(1,2):         #获取第i个表第2行起的值作为用例的参数keys = table.col_values(1)  # 获取第i个表第2列的值keys.pop(0)for j in xrange(3, table.ncols):test_value = table.col_values(j)  # 获取第i个表第4列起的值作为用例的参数值test_value.pop(0)for k in range(len(test_value)):s = test_value[k]# print sdata = dict(zip(keys, test_value))  # 等长两列表转为字典list.append(data)data = {}data[table.name] = listlist = []data_to_json = json.dumps(data, ensure_ascii=False, encoding="gb2312")  # 将列表中的unicode转中文print u"用例数据:", data_to_jsontotalList.append(data_to_json)return totalListif __name__ == '__main__':jsonData = tableToJson()# 写入文件f = open(r"F:\TestData0618.json", 'w+')for i in jsonData:f.write(i)f.write('\n')f.close()

 

运行结果:

2.执行测试用例test.py

#coding=utf-8
import requests
import unittest
import jsonclass MyTest(unittest.TestCase):  # 封装测试环境的初始化和还原的类def setUp(self):print("start test")def tearDown(self):print("end test")class Test_transapi(MyTest):  # 一个接口封装一个类@staticmethoddef getParams():Data = open(r"F:\TestData0618.json").read()temp = eval(Data)   #type(Data)为str,type(temp)为dictdata = temp['2100']return datadef test_transapi(self):self.url = ""self.headers = {'Host': 'fanyi.baidu','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Encoding': 'gzip, deflate, sdch, br','Accept-Language': 'zh-CN,zh;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive'}data = self.getParams()for i in data:print iself.params = i#print u'参数:',self.paramsr = requests.get(url=self.url, params=self.params,headers=self.headers)#print (r.text)print (r.status_code)self.assertEqual(200,r.status_code)if __name__=="__main__":unittest.main()    

运行结果:

3.构建测试报告run.py

#coding=utf-8
from HTMLTestRunner import HTMLTestRunner  
import time  
import unittest#定义测试用例的目录为当前目录  
test_dir = r'C:\Users\HP\Desktop\0608'  
discover = unittest.defaultTestLoader.discover(test_dir,pattern = 'test*.py')  if __name__=="__main__":  #按照一定的格式获取当前的时间  now = time.strftime("%Y-%m-%d %H-%M-%S")  #定义报告存放路径  filename =test_dir + '/' + now + 'test_result.html'  fp = open(filename,"wb")  #定义测试报告  runner = HTMLTestRunner(stream =  fp,  title = u"2100接口测试报告",  description = u"测试用例执行情况:")  #运行测试  runner.run(discover)  fp.close() #关闭报告文件

运行结果:

4.发送测试报告send.py

 
  1.  
    #coding=utf-8import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipartdef SendMail(subject,msg,to_addrs,from_addr,smtp_addr,password):'''@subject:邮件主题@msg:邮件内容@to_addrs:收信人的邮箱地址@from_addr:发信人的邮箱地址@smtp_addr:smtp服务地址,可以在邮箱看,比如163邮箱为smtp.163@password:发信人的邮箱密码'''mail_msg = MIMEMultipart()      #创建一个带附件实例#构造附件test.docxatt1 = MIMEText(open(r'C:\Users\HP\Desktop\0608\2017-06-18 22-33-24test_result.html','rb').read(), 'base64', 'gb2312')att1["Content-Type"] = 'application/octet-stream'att1.add_header('Content-Disposition', 'attachment', filename=u'测试报告.html'.encode('gbk')) mail_msg.attach(att1)#构建MIMEText纯文本内容txt = MIMEText(msg,'plain', 'utf-8')mail_msg.attach(txt)mail_msg['Subject'] = subjectmail_msg['From'] =from_addrmail_msg['To'] = ','.join(to_addrs)try:s = smtplib.SMTP()s.connect(smtp_addr)  #连接smtp服务器s.login(from_addr,password)  #登录邮箱s.sendmail(from_addr, to_addrs, mail_msg.as_string()) #发送邮件s.quit()print "success"except Exception,e:print str(e)if __name__ == '__main__':from_addr = "XXX"smtp_addr = "XXX"to_addrs = ["XXX"]subject = "send test"password = "XXX"msg = "hello,this is just a send test"SendMail(subject,msg,to_addrs,from_addr,smtp_addr,password)

    运行结果:

    5.定时执行测试用例

    问题和挑战:

    1.接口文档更新不及时,导致用例数据可能与实际需要的有所出入。推荐使用SwaggerUI工具管理接口测试文档

    2.大部分用例执行之前为了安全需要保证已登录,简单的将cookie加入请求头不管用,用session

    3.测试报告用的是通用版(一个脚本一条记录),所有现状将一个接口下所有用例都写在一个脚本里只会有一条记录

    4.邮件中文附件名称乱码

 感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

更多推荐

【软件测试】银行项目具体操作流程

本文发布于:2023-11-17 00:15:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1635344.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:操作流程   银行   测试   项目   软件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!