自动化测试开源策略

简介:

序言:不知道有多少人对开源社区真的很有了解,个人以为在自动化测试中,开源也是一个很好的利器,往往商业性的工具针对普遍人群,而自动化测试是“定制型”的,不一定特别适合,而且自动化测试是预言型的,所以一般而言,可以考虑开源。因为可以快速应用其提高效率,我个人觉得:自动化测试在追求发展过程中,要学会借助各种工具提高效率,而不是仅仅局限于一种。还是那句话,能提高测试效率和工作效率的才是王道,“摘花折草即可伤人也”。

  一、自动化测试中的开源软件分类

  开源工具因为其零许可费以及开放和自由的理念逐渐得到了大家的认可和广泛的传播,而且由于自动化测试的差异性,其开源软件的灵活性更能在自动化测试中很好的体现,而且随着开源软件和自动化测试的发展,其开源工具在自动化测试中也形成了一股应用的趋势。其实,在工作中,我们都在不断的与自动化测试打着交道。

  在自动化测试过程中,我们与之打交道的开源工具,可以分为

  1、编程语言与平台,即在自动化测试过程中应用的语言和操作系统

  1)Andriod,大家应该都有所了解,其是以Liunx为内核底层来支持不同硬件,并在其上搭建一个类java的运行环境,其大概有几层,包括:linux内核、底层库、JAVA框架(包括其API)、Andriod应用程序。

  2)LINUX,大家熟知的开源操作系统。

  3)脚本语言:Python、ruby、perl等,这些都是在自动化测试中因为其简便性与动态性多有用到的编程语言。这些语言的维护、开发和发展都是通过开源社区和开源标准组织(例如ISO和Ecma)进行的,所以它们称为开源语言。而java因为受Oracle支配,所以称得上开源不开源,我也不是很清楚…

  4)Flex:是在FLASH基础上做的一层封装,提供了组件库,开发人员可以直接编写MXML,即在FLEX中布局用户界面组件的一种XML语言来搭建用户界面。同时,完成负责数据逻辑的ActionScript脚本,最好编程成FLASH文件。所以,有些用户界面是用FLEX开发的。

  ……

  2、开源开发工具

  1)Eclipse,这个用过java的一般都很熟悉吧,是一款很好的IDE。其是基于”OSGi”的“即插即用”理念,所有功能以组件形式存在。其理念我觉得非常好,其插件只要遵循其平台的规范,就能集成到其中应用。例如:Pydev是一款python的插件,jython是一款Java与python集成的插件,还有andriod、ant等集成的插件,当然,我觉得可以的话,最好先应用一下独立版,再去在eclipse中应用,这样,可以更好的了解其运作原理。

  而且,我觉得这种理念在自动化测试中也可以很好的应用,使得各个工具之间能够在一个平台上作为模块互相通用,而且也能独自使用。其IBM rational开发的jazz平台也是基于一种这么理念的。

  2)Ant,这个大家也许不是很熟悉,但是开发过java应用程序或者做个持续集成的也有有所了解,它就是一款构建的工具,即用XML描述任务的形式,自动完成其定义的工作,例如:可以帮助开发人员自动完成编译、单元测试、打包、发布等工作。

  3)Maven,Java开源项目的开发管理工具,涵盖了项目构建、文档管理、报告生成等方面,与Ant功能类似,其差别在于ant每一个项目需要独立维护一个XML构建描述文件,而Maven能够帮助快速搭建一个项目框架,而无需从头编写,其是一种“约定胜于配置”的理念,即先抽象出一个原型。这理念也可应用在自动化测试中的,即先提供一个脚本模板,然后根据这个模板,搭建一定的测试流程。

  4)版本管理工具,例如:SVN和CVS,其都能够应用脚本控制其代码版本的签入和签出,在其自动化测试中也能有一定应用,方便管理脚本与代码程序。

  5)Bugzilla,缺陷管理工具,可以管理和跟踪缺陷,即,可以在自动化测试中应用来管理相应结果或者缺陷跟踪等。

  6)Junit,大家都恨熟知的吧,单元测试的一款工具,即事先规定好单元测试模板,开发人员只需去根据被测试代码,搭建其测试代码即可。

  7)TestNG,与junit类似。在自动化测试中也能有所应用。

  3、编程及测试框架与库

  1)在J2EE开发中,大家熟知的SSH,即Spring、Struts、Hibernate。具体的大家可以去查阅相关资料,我想说的是,如果大家深入学习的话,会发现,其开发理念和自动化测试思想很相似,像Struts的MVC思想,与自动化测试的分层理念可以很好的结合。Hibernate的数据库持久层思想也可以用于自动化测试的数据管理应用,总之,了解这些软件设计框架,对于加强自动化测试思想的理解很有帮助。

  2)Selenium,大家都很清楚的web自动化测试框架,很多人都说这是一种工具,其实说工具也行,框架也一样,其提供了一种测试web的自动化思想,即采用绕过web中“同源策略”的方法,用JS来控制web的操作。你可以编写脚本应用其API,来控制web的相应控件的操作。一般是集成在你的自动化测试管理框架或者系统平台中的。

  3)Robutium,andriod UI测试的一个自动化测试框架,理念类似,只是应用场合不一样。

 4)Abbot,测试java UI的一个自动化测试框架,其录制的测试用例是用XML进行描述,其只能用录制的方式生成XML文件,而且其abbot只能去读取XML,所以你可以自己写一个脚本库去生成相应的XML去控制aboot,其在测试java UI方面的稳定性还是不错的。

  当然,还有各种各样的编程框架与自动化测试框架,但是随着接触的多了,你会发现其理念都是一样的,所以要学会自己从各个工具中提炼其思想与共性。

  4、应用服务器软件

  1)web服务器,举一个例子,大家熟知的Tomcat,其中也继承了J2EE中的servlet,其web服务器的作用主要是提供HTTP协议操作,将web客户端提交的页面请求进行处理后,然后动态返回相应的HTML页面即可。

  2)数据库,MySQL,开源的关系数据库系统,在一般的中小型项目还是很好用的,数据库设计在自动化测试中,个人认为也很重要,如果将自动化测试设计成一个平台的话,需要涉及大量的测试用例与脚本、测试用户权限的管理等。所以,数据库设计需要在自动化测试平台设计之前,定义好表以及表之间的联系,方便以后拓展使用。

  二、如何去保证开源工具的应用

  1、在自动化测试开展过程中,首先要对其测试需求以及对自动化测试的开展程度进行分析,包括自动化测试的规模、自动化测试的紧急程度以及实际需要应用程度、自动化测试的成本考虑等因素。

  2、之后,就去根据相应的需求,在不同方面采用不同的测试软件或者工具,不需要局限和死专于一种,哪种能提高效率,就尽快采用。

  3、总之,在这些软件或者工具的基础上,如果要规模化的话,你需要有一个自己定义好的平台进行规范,各个工具软件框架都可以以模块化的形式存在,当然,我建议最好要慎重考虑其“高内聚、低耦合”的思想。

  三、开源工具的应用策略

  我大概想了一下,其在自动化测试应用中,这些工具都扮演着不同的角色,对推动这个测试,甚至说软件行业都起到很大作用。

  1)常规的开发和测试流程

  当然这个自动化测试不会起到主要性的作用,但是能提高一定的效率。

  2)持续集成的流程

  需要搭配单元测试框架、构建工具、以及持续集成管理工具(例如:cruisecontrol)

  3)敏捷开发与测试流程

  敏捷开发中我觉得自动化测试是很重要的一个角色,其能够快速保证其发布周期。

  4)云端测试流程

  现在出来的云端提交测试,需要自动化形式提交以及进行相应的处理,其都是在web上面进行提交与返回的。

  总之,“预先善其事,必先利其器”,但是,在众多的自动化测试软件工具和框架中,我们要保持一个清醒的思想,要能够去抓到本质,真正能为我所用,就像武侠小说里面似的,侠客之路,从手中有剑到手中无剑、从有招到无招,从无心到有心。共勉之。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
16天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
2天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
4天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试策略
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和效率的关键工具。本文将探讨自动化测试的重要性、实施策略以及面临的挑战,旨在为软件开发团队提供实用的指导和建议。
|
4天前
|
测试技术 持续交付
探索软件测试的艺术:从基础到高级策略
【10月更文挑战第31天】本文是一篇深入探讨软件测试领域的指南,旨在为读者提供一个结构化的框架来理解并应用各种测试技术。文章将通过浅显易懂的语言和实际代码示例,带领读者从测试的基础概念出发,逐步深入到更复杂的测试策略。无论你是测试新手还是希望提升技能的专业人士,这篇文章都将为你揭示如何通过有效的软件测试保证产品质量和用户满意度。
|
6天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
12天前
|
编解码 人工智能 自然语言处理
迈向多语言医疗大模型:大规模预训练语料、开源模型与全面基准测试
【10月更文挑战第23天】Oryx 是一种新型多模态架构,能够灵活处理各种分辨率的图像和视频数据,无需标准化。其核心创新包括任意分辨率编码和动态压缩器模块,适用于从微小图标到长时间视频的多种应用场景。Oryx 在长上下文检索和空间感知数据方面表现出色,并且已开源,为多模态研究提供了强大工具。然而,选择合适的分辨率和压缩率仍需谨慎,以平衡处理效率和识别精度。论文地址:https://www.nature.com/articles/s41467-024-52417-z
34 2
|
13天前
|
测试技术
探索软件测试中的“思维侧翼”——如何以创新思维引领测试策略###
本文旨在探讨软件测试领域中,如何通过培养与运用创新思维,提升测试策略的有效性与效率。不同于传统的技术解析或理论阐述,本文将以“思维侧翼”为喻,启发读者从不同维度审视软件测试,寻找突破常规的思路与方法。我们相信,在快速迭代的软件开发周期中,灵活多变且富有创造力的测试思维,是发现潜在缺陷、保障产品质量的关键。 ###
|
20天前
|
监控 测试技术 持续交付
掌握跨平台测试策略:确保应用的无缝体验
【10月更文挑战第14天】在多元化设备和操作系统的今天,跨平台测试策略成为确保应用质量和性能的关键。本文探讨了跨平台测试的重要性、核心优势及实施步骤,涵盖Web、移动和桌面应用的测试方法,帮助开发者提高应用的无缝体验。
|
3天前
|
测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
【10月更文挑战第31天】 在当今快速迭代的软件开发环境中,自动化测试成为确保软件质量和加速产品上市的关键。本文探讨了自动化测试的重要性、实施策略以及一些最佳实践。通过分析不同类型的自动化测试工具和框架,本文旨在为软件开发团队提供一套实用的指导方案,以提高测试效率和质量。
|
6天前
|
NoSQL 测试技术 Go
自动化测试在 Go 开源库中的应用与实践
本文介绍了 Go 语言的自动化测试及其在 `go mongox` 库中的实践。Go 语言通过 `testing` 库和 `go test` 命令提供了简洁高效的测试框架,支持单元测试、集成测试和基准测试。`go mongox` 库通过单元测试和集成测试确保与 MongoDB 交互的正确性和稳定性,使用 Docker Compose 快速搭建测试环境。文章还探讨了表驱动测试、覆盖率检查和 Mock 工具的使用,强调了自动化测试在开源库中的重要性。

热门文章

最新文章

下一篇
无影云桌面