怎么认知架构那个词
不论是在智能化试验课堂教学,还是日常生活沟通交流中,时常听见两个词:架构。之前自学智能化试验的过程中,一直对“架构”那个词索韦泰Churu。
前段时间看了许多智能化有关的数据资料,加之自己的许多课堂教学,算是对“架构”有了许多认知,这篇网志,就谈谈智能化架构的许多事吧。。。
一、甚么是架构
架构(framework)是两个套套——指其硬性,也是两个门边——指其支撑力性。是两个基本原理上的结构,用于去化解或者处置繁杂的难题。
在应用计算机科学中,架构(Framework)是整个或部分系统的可宠信结构设计,表现为几组抽象化梁柱及梁柱示例间可视化的方法;
另一种表述认为,架构是可被应用领域合作开发人员订制的应用领域金属结构,前者从应用领域各方面而后者从目地各方面得出的表述。
上面的基本概念比较抽象化,换另两个视角说明:
1、架构这类一般不完备到能化解某一难题;
2、架构与生俱来就是为扩充而结构设计的;
3、架构里头能为先期扩充的模块提供许多临时性、支撑力性的方便快捷易用的辅助工具,换句话说架构是基础建设了许多协助化解一般而言难题的库(libraries)或辅助工具(tools)。
硬性:特别针对化解某一难题的应用软件架构会具体来说表述难题的边界线,从而将有关的应用软件模块束缚在那个边界线内,保持架构在化解难题各方面上的收敛性。
支撑力性:架构这类不化解甚么难题,但给了化解难题的有关模块两个女团基本功,那个基本功的有效性和可用性直接影响在此其内进一步合作开发的有效性和便利性。
—— chan上面的2个对架构的说明和表述,看上去也并没有很单纯隐晦的说确切甚么是架构,上面是我的许多认知:
表述:为化解这类某一难题而束缚边界线,支撑力整个难题化解方案,基础建设了许多化解难题的模块而构成的辅助工具。
某一难题:甚么难题?——智能化试验
束缚边界线:为甚么束缚?——明确试验范围和目地
化解方案:用甚么方案化解难题?——编程语言+辅助工具+其他
构成辅助工具的模块:哪些模块?—— 用例、脚本、数据、日志、报告、通知
辅助工具:特点是甚么?—— 灵活性、可扩充性、高内聚低耦合
二、智能化试验
1、为甚么要进行智能化试验?
①、黑盒试验回归效率低
②、手动试验的偶然性和不确定性
③、回归的覆盖率不足
④、交付的产品质量无法保证,全靠评估
⑤、系统越繁杂,难题越多
⑥、上线时间长、梁柱失败率高导致的蝴蝶效应(迭代快,加班多)
2、智能化试验能化解甚么难题?
①、提高出现难题后的响应速率
②、降低回归成本
③、提高回归覆盖率
④、提高回归效率
⑤、提高回归的稳定性
3、智能化试验的不足有哪些?
①、无法减少成本投入,而是为了加快试验结果反馈,提升试验质量
②、智能化适用于回归和冒烟,而不是发现BUG
③、录制回放功能是鸡肋,可视化并不是两个很好的做法
④、不是所有所有系统所有功能都适合做智能化试验
三、智能化试验架构
构成架构的模块,最起码应该具备以下的功能:
Log:日志记录和管理功能,特别针对不同的情况,设置不同的日志级别,方便快捷定位难题;
Report:试验报告生成和管理以及即时通知,试验结果快速响应;
Source:配置文件、静态资源的管理,遵循高内聚低耦合原则;
Common:公共函数、方法以及通用操作的管理,遵循高内聚低耦合原则;
TestCase:试验用例管理功能,两个功能点对应两个或者多个case,尽可能的提高覆盖率;
TestData:试验数据管理功能,数据与脚本分离,降低维护成本,提高可移植性;
TestSuite:试验模块管理功能,特别针对不同场景不同需求,组装构建不同的试验架构,遵循框架的灵活性和扩充性;
Statistics:试验结果统计管理功能,每次执行试验的结果统计、分析、对比以及反馈,数据驱动,为应用软件优化和流程改进,提供参考;
Continuous:持续集成环境,即CI环境,包括试验文件提交、扫描编译、执行试验、生成报告及时通知等功能,持续集成是智能化试验的核心!
四、常见的智能化试验架构
1、接口智能化架构:
①、java+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine
②、python+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
③、python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
④、jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine
2、UI智能化试验架构
①、java+selenium/appium+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine
②、python+selenium/appium+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
③、python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
通过上面的许多常见架构,你发现了甚么?
它们都拥有共同特性:编程语言+单元试验架构+扫描编译辅助工具+持续集成辅助工具+数据库+项目管理辅助工具。
编程语言:编写试验脚本、日志记录和输出;
单元试验架构:提供试验脚本运行、异常校验等许多列的配置;
扫描编译辅助工具:试验文件扫描编译,一般配合持续集成辅助工具使用效果更佳;
持续集成辅助工具:Jenkins,经典的持续集成辅助工具;
数据库:试验数据管理;
项目管理辅助工具:试验结果统计管理;
PS:智能化试验辅助工具太多,上面只是列举了使用率较高以及我个人还算了解的许多开源辅助工具,具体的架构选型,需要根据具体项目特点和团队、个人技术特点来决定!
关于智能化试验架构的许多认知和思考总结,就是上面这些内容,提到的许多架构模块可能存在不合理的地方,仅供参考,如有更好的建议,请指出,不胜感激。。。
我个人也在这几年整理了许多在试验生涯的数据资料,包含电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在自学或工作中遇到难题能直接进群询问,群里也会有老师帮忙解答。
群号321255410 备注777即可