Advertisement

聊聊什么是自动化测试,什么是自动化测试框架

阅读量:

在自动化测试实践和日常交流的过程中,我们经常使用一个术语:框架.在学习自动化测试的过程中,我们了解了这一工具的功能但不清楚其背后的设计理念.

最近对自动化相关领域的大量资料进行了深入研读,并结合自己的实践经验点滴,这段经历让我对自动化领域的架构程度上有所认识。这篇博客就深入探讨自动化领域中的关键点吧!

一、什么是自动化测试

将人为驱动的实验行为转换为由机器自动执行的过程被称为自动化测验。通常情况下,在经过评审并设计好测验用例后, 测验人员将依照测验方案依次实行测验动作, 并对比实际效果与预期效果之间的差异。在这一流程中, 为了提高效率并减少资源消耗, 自动化测验的概念由此提出。

优点:

①对回归测试更方便:

实施回归测试时必须涵盖系统所有功能模块,在周期较长的情况下会导致回测工作量显著增大;且具有较高的频率适合自动化处理;因为所有的脚本与用例均为预先设计好的因此相应的预期结果也是可预判的;将之实现自动化处理后不仅能够大幅提高效率还能有效缩短回测周期

②模拟真实情况:

可进行手动测试而非自动化的测试, 例如通过同时接入数千名用户来检验系统承载能力.

③有效的利用人力物力资源:

高度自动化的过程可以通过实现自动化测试流程来减少错误的发生,并更加高效地利用人力资源。

④测试的重复利用:

由于自动测试

常用自动化脚本技术来处理测试需求,在不同测试场景下只需完成少量甚至无需更改即可确保相同用例的有效执行

⑤减少人为的错误:

自动化测试由机器自动完成,在执行过程中不会因执行过程中的疏忽或错误而受到影响。其质量完全由测试设计决定,并能有效降低由于人为失误导致的错误。

缺点:

自动化测试作为一种执行手段不具有智能,并且不具备自主判断能力;它难以察觉界面的色彩、布局问题以及系统的崩溃现象;这些问题对于人类的眼睛来说非常容易被察觉。

自动化测试工具本身是一个产品,在其运行过程中可能会因所运行的系统平台或硬件设备的不同而受到影响,在测试过程中其运行环境的变化可能导致被测程序的测试结果受到干扰

③对于需求更改频繁的软件,测试脚本的维护和设计比较空难。

自动化测试由机器执行,在发现问题数量上显著少于人工测试的效率。然而,在使用测试工具未识别出任何缺陷的情况下,并不能断定系统实际上不存在缺陷。相反地,我们只能评估实际效果与预期目标之间的差异程度。

自动化测试涉及编写测试脚本与搭建场景等任务,这些技能对测试人员的要求相对较高,并且对测试结果直接关系到。

二、什么是框架

框架(framework)既可以被视为一种容器——强调其约束力的作用域与边界限制;也可以被视为一种支撑架构——突出其提供稳定性的功能。作为一个基于基本概念的系统结构,在处理复杂问题时展现出显著的组织与协调能力。

architextural base for software systems in the field of software engineering, representing a reusable design pattern composed of abstract components and their interactions.

从另一个角度来看,在软件领域中存在两种不同的对框架的定义:一种是基于应用场景的应用程序架构设计;另一种则是侧重于功能需求的具体实现方式。

上面的概念比较抽象,换另一个角度解释:

1、框架本身一般不完整到可以解决特定问题;

2、框架天生就是为扩展而设计的;

框架包含了许多辅助功能、支持功能的方便易用工具,并配备了一系列用于解决特定问题的库和工具集合。

约束性: 该软件框架通过明确划分问题边界来限定相关组件的工作范围,并将这些组件限定在这一范围内以维持其在解决问题方面的高度内聚性。

支撑性:框架自身不具备直接解决问题的能力,但为相关组件提供一个整合的基础架构。该基础架构的科学性和易用性将直接影响后续开发过程中的科学性和便利性。

前文提到的两个概念阐述中,并没有非常简单明了地说明什么是框架的过程。实际上,并没有非常简单明了地阐述这一问题的具体内容。我的一些初步认识是:

作为支撑整个解决方案的关键部分,在解决某些特定问题时整合了一系列解决问题的组件形成工具

特定问题:什么问题?——自动化测试

约束边界:为什么约束?——明确测试范围和目的

解决方案:用什么方案解决问题?——编程语言+工具+其他

构成工具的组件:哪些组件?—— 用例、脚本、数据、日志、报告、通知

工具:特点是什么?—— 灵活性、可扩展性、高内聚低耦合

三、自动化测试框架

构成框架的组件,最起码应该具备以下的功能:

Log功能: 该系统具备全面的日志记录与管理系统。根据具体情况设定合适的日志级别分级策略, 以便实现灵活的日志管理。通过分级策略实现灵活管理的同时, 能够便于迅速识别和处理异常事件

Report: 测试报告生成和管理以及即时通知,测试结果快速响应;

Source: 配置文件、静态资源的管理,遵循高内聚低耦合原则;

Common: 公共函数、方法以及通用操作的管理,遵循高内聚低耦合原则;

测试用例管理模块中,每个功能点对应一个或多个test 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、Robo Framework、Test框架(如unittest/pytest)、版本控制系统(如Git)、Jenkins CI服务器以及MySQL数据库系统,并结合TestLink/Redmine测试管理平台进行集成

④、jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine

2、UI自动化测试框架

Java开发语言 + Selenium(Selenium自动化测试框架)/Appium(Appium跨平台移动应用开发框架) + TestNG(TestNG单元测试框架)/JUnit(JUnit自动化测试框架) + Maven(Maven构建工具)/Ant(Ant构建工具) + Gradle(Gradle构建工具) + Jenkins(Jenkins持续集成系统) + MySQL数据库 + TestLink(TestLink测试管理工具)/Redmine(Redmine项目管理平台)

以下是经过同义改写的文本

基于Python 3.8及以上版本的开发环境搭建,请确保所有依赖项已正确安装并配置完毕;同时建议优先选择基于Linux的操作系统环境下进行开发以获得最佳性能体验;请确保所有软件安装路径与配置参数均与官方文档一致;请按照官方指导文档中的步骤逐一完成各项设置工作;请确保系统资源满足以下要求:处理器频率不低于2GHz、内存不少于8GB、存储空间至少512GB;请勿随意更改系统或程序的安全参数设置;请严格按照操作规范执行各项操作步骤

通过上面的一些常见框架,你发现了什么?

它们都具备独特的特征:多种编程语言支持的多平台开发环境通常配备一套完整的功能集合。这些功能包括一个强大的单元测试框架系统(用于确保代码质量),一种自动化代码扫描与编译工具(用于检测潜在问题),一种持续集成自动化部署工具(用于快速构建和部署应用),以及一套先进的数据库系统(用于存储和管理数据),最后配上一个现代化的项目管理平台(用于协调团队工作)。

编程语言:编写测试脚本、日志记录和输出;

单元测试框架:提供测试脚本运行、异常校验等一些列的配置;

扫描编译工具:测试文件扫描编译,一般配合持续集成工具使用效果更佳;

持续集成工具:Jenkins,经典的持续集成工具;

数据库:测试数据管理;

项目管理工具:测试结果统计管理;

PS: 自动化测试工具种类繁多,在这里只是列举了一些应用广泛且我较为熟悉的开源工具。在进行具体的框架选择时,请结合项目的具体情况以及团队和个人的技术水平来综合考虑。

对自动化测试框架的一系列理解和思考进行了归纳总结。即上述所述的内容中所提及的某些框架组件在设计上可能存在不合理之处,请作为参考意见提出宝贵建议如无更好的意见,请指正

最后,在我的QQ技术交流群里进行了系统地整理和归纳我过去10年积累的软件测试经验所得的技术资源库中包含了丰富的宝贵资源具体包括一些宝贵的技术资源这些资源涵盖广泛的内容如电子书简历模块各类工作相关的模板面试宝典以及一些自学项目等

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

全部评论 (0)

还没有任何评论哟~