| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> Premo测试框架详解 -> 正文阅读 |
|
[开发测试]Premo测试框架详解 |
BitXHub 是趣链科技自主研发的跨链技术平台,提供基于异构联盟链间的账本互操作解决方案。为保证BitXHub跨链平台在日常迭代过程中的功能符合用户需求,并尽可能多的把问题在发布或交付之前发现并改正,Premo测试工具应运而生。Premo主要基于BitXHub自身的gosdk实现,具有易于扩展和维护的特点。本文主要围绕功能测试、性能测试以及自动化测试三个方面来概述Premo的测试框架。 【功能测试】 功能测试模块主要依托于BitXHub项目自身的gosdk,testify开源库和testing库实现。功能测试模块根据测试的功能点分为多个测试文件,每一个测试文件内的测试用例都包含于一个测试套件中,在日常测试可以基于你所需要测试的功能点来运行不同的套件,如下图所示。例如model1001_chain_test.go内的所有测试用例都包含在model1这个套件中,如果需要运行chain相关的测试用例只需运行model1的套件即可。 ▲并行化测试 随着项目的不断扩展,测试用例的数目也在不断增加,回归全量测试用例所消耗的时间也越来越长,顺序测试的方法在快速迭代的版本开发中显得越来越低效。采用并行化测试可以有效解决这个问题,然而这又会引入一个新的问题,也就是测试用例之间的耦合性。很多用例在串行测试的过程中不会暴露问题,一旦进行并行化测试就会出现并发上的问题。 以BitXHub跨链平台为例,BitXHub跨链平台在接收跨链交易的过程中会根据账户地址维护一个nonce值用于实现跨链交易的有序性,每收到一笔交易nonce值就会增加1,如果收到的nonce值小于预期的nonce值,BitXHub跨链平台就会丢掉这笔交易,反之,如果大于预期的nonce,BitXHub跨链平台就会暂存这笔交易,直至nonce达到预期。这就会要求我们在并行化测试的用例中人为的去维护这个nonce值。因此,并行化测试中很重要的一点就是需要维护用例之间的相对独立性,如何维护用例的相对独立性则需要根据项目自身因地制宜。 【性能测试】 衡量一个跨链服务系统是否可靠稳定很重要的一点便是跨链自身的性能指标。Premo根据上述需求,基于BitXHub自身的gosdk实现了一套完整的性能测试方案用于检验BitXHub跨链平台的性能是否满足需求。Premo中进行的性能测试主要是压力测试,通过向BitXHub跨链平台发送大量的跨链交易来验证BitXHub处理跨链交易的性能。整体性能测试主要分3个步骤进行,分别是应用链准备、发送跨链交易和统计TPS。 ▲应用链准备 在发送跨链交易前,需要预先根据不同的交易类型注册一定数量的应用链到中继链,以便后续Premo通过SDK使用这些应用链的身份向中继链发送跨链交易。应用链注册成功后还需要部署相应的验证规则,用于中继链验证交易的有效性。 ▲统计TPS 统计TPS是通过订阅BitXHub跨链平台的区块事件实现。订阅区块事件后,BitXHub跨链平台每出一个块就会推送到Premo中,Premo通过统计区块内的交易数量来计算TPS,每笔交易的延时 = 收到区块的时间搓 - 交易的时间搓。Premo根据上述信息每秒打印TPS和交易的平均延时。 【自动化测试】 ▲Make命令 Premo将功能测试加入make命令中,通过make命令就能进行全量的功能测试。同时make命令根据测试的结果生成相应的测试报告。 ▲GitHubActions GitHub Actions是GitHub的持续集成服务。在任意一个分支提PR到master分支或者release*分支时会触发对应的action,action将根据目的分支名拉取对应的Premo分支进行功能测试,同时将成的测试报告发布到指定的服务器上,并将测试报告的连接通过邮件的形式发送给PR的提交者。 ▲allure-server GitHub上开源的Allure Report Server,支持通过GitHub Actions的方式发布测试报告,并且allure-server支持docker。 (1)根据PR触发action: 具体参考github actions的官方文档Eventsthat trigger workflows相关章节; (2)根据目的分支功能测试: 在action中我们可以获取目的分支名,Premo的测试用例是根据BitXHub跨链平台的版本维护的,所以只需根据目的分支名拉取Premo进行功能测试即可; (3)发布测试报告: 发布测试报告主要通过allure-server进行,allure-server在上文已经提过。需要注意的一点是allure-server对应的服务器的地址不能暴露,否则会给服务器带来不稳定因素,通过仓库[Setting]中设置[Secrets]来可以解决这个问题; (4)邮箱通知: 邮件通知在GitHub Actions中较为常见,使用对应的action即可。需要注意是由于使用的SMTP的形式所以邮箱的账号和密码不能公开。通过仓库[Setting]中设置[Secrets]可以解决这个问题。在邮箱通知的过程中需要知道目的邮箱的账目密码,同时还需要邮箱开启SMTP服务,这种情况下在action中配置PR提交者的邮箱变的不可取。 一个合适的解决方式是:通过邮箱自身的收发信规则。以腾讯企业邮箱为例,邮箱支持根据邮件的内容进行自动转发。我们只需要在邮件中携带提交者的github的名称(或者其他身份信息),收发信规则根据名称过滤,将邮件自动转发给PR提交者。通过上述方式在action中不需要根据不同的PR提交者指定不同的邮箱地址,只需要将邮件发送给"中转站"即可。 完成上述工作后,只需要根据BitXHub的分支维护Premo功能测试用例即可完成相应的自动化测试。具体流程如下图所示: 【总结】 作者简介 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:34:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |