如何选择自动化测试框架

随着软件规模的日益庞大,对软件测试也提出了更高的要求,当软件经过前期的单元测试,集成测试,系统测试后,已经达到了一个相对稳定的版本后,我们就可以考虑引入自动化测试,这对于后续bug修复,软件细微改动后的回归测试尤为重要,不仅可以节约人力成本,更重要的可以大大缩短软件发布的周期。

如何选择一款自动化测试框架,对于每个测试负责人来说,都具有一定的挑战,首先自动化测试框架没有万能的,不是任何一款自动化测试框架都可以直接引入到项目中,也不是流行的或者优秀的自动化测试框架就一定适合当前的项目。

我们可以从以下几个维度去选择一款适合项目的自动化测试框架。

项目的技术类型

自动化测试框架必须适应当前项目的技术类型,如,web UI,web Service,desktop应用程序,移动应用程序, 嵌入式应用程序。

项目测试需求

引入自动化测试框架是为了完成哪方面的测试需求,比如功能测试,系统测试,性能测试,可靠性测试。

测试人员代码能力

作为自动化测试人员,首先还是应该具有一定的代码能力,虽然现在有一些自动化测试工具可以通过录制,或者通过一些简单参数配置来实现自动化用例的编写,但这种框架灵活性就大大的降低,也不利于更深层次的开发自动化用例,比如做一些逻辑性层面的处理。

不同的自动化测试框架特点分析

分析每种自动化测试框架的优劣性,选中一种自动化框架擅长领域正是我们需要的,那最好不过了。

测试框架的扩展能力

因为每个项目的具有不同的特点,所以我们很难去找到一款完全满足需求的测试框架,因此测试框架的扩张能力就显得尤为重要,选择一款具有一定扩展能力的框架,在框架不能很好的满足项目需求的时候,我们可以主动去做一些修改。

测试框架的成熟度

测试框架在满足当前项目测试需求的情况,优选那些相对成熟,稳定的,这样在项目实施过程中遇到问题,也能及时找到解决方案。


常见的自动化测试框架及特点:

RobotFramework

基于Python的可扩展关键字驱动的自动化框架,用于接受测试,接受测试驱动开发(ATDD),行为驱动开发(BDD)和机器人流程自动化(RPA)。它可用于分布式,异构环境,在这些环境中,自动化需要使用不同的技术和接口。

官网:http://robotframework.org

启用易于使用的表格语法,以统一的方式创建测试用例;

提供从现有关键字创建可重用的高级关键字的功能;

提供易于阅读的结果报告和HTML格式的日志;

是平台和应用程序独立的;

提供了一个简单的库API,用于创建自定义的测试库,该库可以使用Python或Java本地实现;

提供命令行界面和基于XML的输出文件, 以集成到现有的构建基础结构(连续集成系统)中;

提供对Selenium的支持,以进行Web测试,Java GUI测试,正在运行的进程,Telnet,SSH等;

支持创建数据驱动的测试用例;

具有对变量的内置支持,特别适用于在不同环境中进行测试;

提供标记以分类和选择要执行的测试用例;

支持与源代码控制的轻松集成:测试套件只是可以使用生产代码进行版本控制的文件和目录;

提供测试用例和测试套件级别的设置和拆卸;

模块化体系结构甚至支持为具有多个不同接口的应用程序创建测试。


AutoTest Studio

基于Python的可扩展的通用自动化测试框架,直接使用python编写测试用例,继承了python语言的优雅和灵活性,借助于python社区提供的大量丰富的python包,使得该框架可以应用于多种复杂的测试场景,

官网:https://www.autoteststudio.com

提供一个强大的自动化测试用例集成开发环境,可以完成代码补全,代码格式化,python debug等操作;

高性能的数据字典管理器,可以轻松管理上百万条数据;

框架拥有一个可视化的python包管理器,可以轻松的管理项目中的python包;

支持创建python虚拟环境,可以将同一台电脑上的不同项目的python运行环境完全隔离;

灵活的任务调度引擎提供了多种细粒度控制,如超时终止用例执行,失败后重试,运行失败用例等;

框架提供了断言,日志,数据字典等通用API;

提供命令行调用,可以灵活的集成到现有的CI/CI系统中;

提供html格式测试报告和日志文件,如果需要,你还可以将报告发送到指定邮箱。

TestNG

TestNG是基于Java的一个自动化测试框架,拥有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试。

官网:https://testng.org

在具有各种可用策略的任意大线程池中运行测试(所有方法都在各自的线程中,每个测试类一个线程,等等)。

测试您的代码是多线程安全的;

灵活的测试配置;

支持数据驱动的测试(使用@DataProvider);

支持参数;

强大的执行模型(不再需要TestSuite);

由各种工具和插件(Eclipse,IDEA,Maven等)支持;

嵌入BeanShell以获得更高的灵活性;

用于运行时和日志记录的默认JDK函数(无依赖项);

应用程序服务器测试的相关方法。


Unittest

Python内置单元测试框架,该试框架最初是由JUnit的启发,也有类似的味道在其他语言主要单元测试框架。它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中以及测试与报告框架的独立性。

        官网:https://docs.python.org/3/library/unittest.html#module-unittest

Python语言编写测试用例;

基于TestSuite测试用例组织结构;

支持命令行启动,可以于CI/CD系统集成;

以html格式输出测试报告和测试日志。


Pytest

基于python的轻量级自动化测试框架,该pytest框架使编写小型测试变得容易,但可以扩展以支持针对应用程序和库的复杂功能测试。

官网:https://docs.pytest.org/en/6.2.x/

简单灵活,容易上手,文档丰富;

支持参数化,可以细粒度地控制要测试的测试用例;

自动发现测试模块和功能;

测试用例的skip和xfail处理;

可以很好的和CI工具结合,例如jenkins;

丰富的插件架构,拥有超过315个以上的外部插件和繁荣的社区。


总结了一些常用的自动化测试方案,供参考。

Web UI

AutoTest Studio + Selenium

Robot Framework + Selenium

TestNG+Selenium

Web Service

Postman

AutoTest Studio + requests

Robot Framework + requests

App

AutoTest Studio + Appium

Robot Framework + Appium

桌面应用

Robot Framework + pywinauto

AutoTest Studio + pywinauto

总之,自动化测试框架没有最好的,只有最适合的,主要还是取决于项目的测试需求及系统的特点。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 简介 1. 单元测试框架 几乎所有的主流语言,都会有其对应的单元测试框架,下面简单介绍一下python,java,...
    阿呆0412阅读 31,576评论 0 15
  • Web项目的 UI 自动化测试方案 有用的链接: 自动化Selenium的Python文档http://www.j...
    厲铆兄阅读 10,976评论 1 42
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,520评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,178评论 4 8
  • 怎么对待生活,它也会怎么对你 人都是哭着来到这个美丽的人间。每个人从来到尘寰到升入天堂,整个生命的历程都是一本书,...
    静静在等你阅读 4,956评论 1 6