我是Test Automation的一个完整的初学者,在Web上找不到一个好的答案。

一些自动化工程师在eclipse中的硒Web驱动程序项目中使用底层自动化框架作为jar依赖项。他们然后使用该框架编写AUT的功能脚本。

我已经开始在webdriver中学习脚本并学习一些有关TestNG的知识,但是我的同事建议我学习并创建一个功能齐全的功能。 -任何团队都可以使用的通用框架?

什么是框架?是否有在线课程/书籍可以学习Java的自动化框架设计?

评论

请注意,“任何人都可以使用的工具”不存在。创建测试是该领域的一个很好的例子,在该领域中,可发现性(易于学习新工具)与流利性(高效的“高级用户”如何获得)之间的权衡非常紧张。 Geb需要一点点学习,但是与点击式记录仪相比,它可以带来更加可维护和可靠的测试。正确的选择取决于许多因素。 (而且,存在许多框架,因此请选择适当的框架,而不要编写自己的框架。)

#1 楼


我的同事建议我学习并创建一个功能全面的-
通用框架,任何团队都可以使用?


我建议您不要。您的同事建议您开始过度设计。实验很好。

自动化测试,自动化另一个测试。也许出现了可重用的抽象。也许这成为可重用的框架。练习YAGNI(不需要)和KISS(保持愚蠢的简单)原则。

我看到许多测试人员将其目标定为构建框架,但是软件测试是关于理解和维护角色角色的行为。自动化和框架只是一种工具。因此,可以练习工具,但不要使其成为目标。

评论


我很喜欢这个答案,因为它的实用性。只是不要把婴儿和洗澡水一起扔出去。框架的目标是促进可重用性和约定(如何做某些事情)。约定总是有约束力的。很好地定义它们是一个单独的野兽,我将不在这里讨论。但是可重用性可以包含在您的流程中,而无需构建整个框架。例如,我尝试遵循三个规则,即当相同的代码被使用三次或多次时,我将其提取到单独的过程或帮助程序类中。这样,您的软件结构就会有机地增长。

– dzieciou
20 Jan 28'在8:53



#2 楼

我认为您错过了“框架”的定义


https://smartbear.com/learn/automated-testing/test-automation-frameworks/

/>框架由旨在帮助QA专业人员更有效地测试的实践和工具的组合组成。

这些准则可能包括编码标准,测试数据处理方法,对象存储库,存储测试结果的过程或有关如何访问外部资源的信息。

虽然这些不是强制性规则,并且测试人员仍可以编写脚本或
记录测试而无需遵循它们,使用组织化的框架
通常会带来其他好处,否则会被遗漏



所以测试框架不仅仅是文件夹结构,它定义了一个整体流程,工具,规则,技术,编码标准以及许多其他内容

为什么需要框架?

它使代码的可维护性降低了很容易。一旦有了有效的框架,就可以高效并行编码。例如,您编写用于下拉选择的代码,其他工程师可以重用该代码。

如果您没有高效的框架(命名约定和目录结构),则工程师应将精力浪费在寻找已经找到的解决方案上。

为什么我们不能重用框架?

这就是所有框架的构建方式,我们采用现有框架并利用它来创建适合我们项目的框架和团队。例如TestNG,机器人框架等。用于UI测试的所有测试目录结构几乎都是相似的。大多数使用具有文件夹结构的页面对象模型,例如util,common,resource,report等。我们只是根据不同的项目进行更改。

为什么我们找不到合适的解决方案?

该框架取决于组织决策和项目复杂性。例如,组织希望通过从VMS迁移到容器来节省资金。他们希望在容器中而不是在VM中运行硒网格测试,或者有时决定是使用云。

因此,您必须研究如何准备将测试框架放入CI / CD或交付其他要求。

但是在所有情况下,我们都会从那里开始构建一个基础框架。

测试框架也是公司的专有资产,属于知识产权。您不能像其他任何源代码一样与公众共享它。

如何创建有效的框架?

从基础框架开始,学习错误,不断发展解决方案。

最重要的是,快速失败,这意味着您应该更快地意识到框架的低效率。分析缺点并快速进行更改,慢慢增加测试套件,直到对实现有信心为止。

是否有任何有关框架的建议?

框架取决于项目,预算,组织决定和很多这样的事情。就像提到的那样,框架不仅仅是目录结构。

对目录结构的建议可以来自GitHub或任何此类开放源代码存储库。但是您必须按照需要的方式进行开发

摘要:


因此,在您的情况下,您拥有的基本框架为testng + selelnium
您可以通过隔离可重复使用的代码,将其用于通用的可重复使用的通用框架。

例如:在一个测试文件中,您具有读取CSV的代码,而不是将其保存在该特定文件中,而是保存在称为commons的单独程序包中,以便其他人在需要时可以重用您的逻辑。


尝试查看是否可以在其中添加数据驱动的测试
将项目分离到Page对象中
使用第三方工具时,将代码保存在名为utils的其他程序包中,以便其他人可以重复使用它。

大多数情况下,您在开始做事和失败时会学到更多。框架不是最终的,它总是在不断发展,因此不要害怕使事情出错。

#3 楼

我认为Wikipedia上的第一句话很清楚:


在计算机编程中,软件框架是一种抽象,其中可以通过其他用户编写的代码选择性地更改提供通用功能的软件。 ,从而提供了特定于应用程序的软件。您的同事希望您编写可在多个测试自动化项目中使用的通用代码,因此无需为特定项目再次编写某些代码。

您可以进一步查看本教程中的一些通用Java代码。例如。创建可以与任何数据类型一起使用的排序功能是通用代码的示例。在测试中,它看起来像这样:您创建了一个单击按钮的函数,但是单击的特定按钮不会被硬编码,而是作为参数传递,因此允许您在具有以下功能的多个项目上使用此函数:不同的DOM定位器。

评论


感谢您的详细回答。您能否参考一些您在自动化体验中亲自阅读的书?

– jonas56
20年1月22日在13:07

@ jonas56:我对Java和基于Java的测试自动化框架的了解是有限的/被动的。我目前使用基于Python和Javascript的工具/框架。因此,我在这里无法具体说明。总的来说,我对在线教程/文章的追求要比对书籍的追求更高。我还参加了在城市学习的基础知识的离线研讨会,然后我可以使用在线资源在此基础上进行开发。我还使用官方文档,这通常是查找信息的最佳位置。

–pavelsaman
20 Jan 22 '13:27

#4 楼

作为一种简短的方法,它是为不同组件(Web,移动电话等)编写自动化测试脚本的基础构造者或基础。
一个好的框架将为以下某些局限性或问题提供解决方案。


分别处理脚本和数据。
创建库。
可扩展性问题。
维护问题。
报告问题。


#5 楼


是否有在线课程或书籍来学习Java的自动化框架设计?


就我而言,我开始学习有关Java(专注于硒)的在线视频。就我而言,它从Angie Jones Courses的链接开始很有帮助(老实说,通过在线视频工具进行学习更方便)。在这里,您会找到优质的在线视频。还可以从AngieJonesTech主页开始,并对其进行概述。大多数主题都与Java有关,并且与DOM结构有关,这对我而言有助于理解Java的测试自动化过程。当您掌握了更多知识之后,也许您决定开始使用Java和Selenium时,可以看看ToolsQa

我不确定您是否会说德语,但对于说德语的人,您也可以在此页面上找到更多信息TestingBoard

您可以看到,学习Java要做的事情很多。我想说的是,我将如上所述学习与测试相关主题的Java。

评论


希望在Udemy上找到这门课程,希望对您有所帮助。 www.udemy.com/course/build-test-automation-framework-using-java-from-scratch/

– Kitanga Nday
20年1月23日在22:55



#6 楼

由于您刚刚开始测试自动化之旅,因此可以想象您将获得一个应用程序和一些自动化测试场景。您将使用Selenium和TestNG的知识,并开始创建一些类和方法来根据测试用例在UI控件上执行操作。

使用TestNG,您可以执行这些测试,并获得测试结果。瞧!您已经自动化了测试用例(TC)。

现在,应用程序中的功能不断增长,因此测试用例也实现了自动化。您将继续创建越来越多的类和方法来自动化新的TC。现在大约3-4个月后,您发现已经创建了几个类和方法,某些地方有重复的代码,没有用于分类/组织类文件的包结构,并且每当需要更新对象定位符时,您都会发现困难可以找到需要更新的代码,因为您没有为如何在自动化项目中组织代码制定任何规则。

现在,根据您的经验,您知道需要设置一些通用的代码/ utility类用于通用功能,将对象定位器作为类变量适当地组织在一个位置,设置适当的包结构以将相关的类文件组织到相应的包中,依此类推。您将它们称为规则,任何刚开始在您的项目中工作的人也必须遵守这些规则。

测试自动化框架正是为此目的的-一组关于构建测试时如何进行的规则AUT的脚本。

从长远来看,这些规则可确保更好地维护项目工件。一个好的测试自动化框架的一般规则包括:


如何编写测试脚本? -编码,功能文件,...
如何管理测试数据? -硬编码数据,Excel工作表中的数据,...
如何管理对象定位器? -页面对象模型,XML文件,...
如何管理可重用组件? -实用程序类,...
如何组织所有测试工件(类,数据文件,配置文件等)? -文件夹和子文件夹,...
如何处理日志记录和报告? -log4j2,断言,...
要生成什么报告? -html,junit,testNG,...
如何触发执行? -Eclipse,命令提示符,...

创建一个好的框架是一种伴随经验的技能,并不是所有人都能做到的。互联网上可能会建议一些构建基本测试自动化框架的建议,但它们通常仅对简单的自动化任务有用。

最好的学习方法是通过使几种情况自动化来获得测试自动化方面的经验。在应用程序上,理解问题领域,考虑我上面提到的问题类型,并开始设计一个规则框架,该规则不仅可以帮助您,而且可以帮助其他人遵循为项目构建测试脚本的机制。

#7 楼

基本上,自动化测试框架用于编写一套自动化测试,运行这些自动化测试可以将可重复的结果尽快返回给开发人员。

要牢记以下几点:


您需要仔细查看AUT并尝试建立尽可能多的方法,例如单元测试,API,前端,数据库等。进入方法越多,选择就越多您将拥有,成功的机会就越大。
看看AUT中的风险到底在哪里,这通常是复杂性和建议的更改所在。尝试使您的框架尽可能靠近系统的那一部分。
学习Java并不是一种不好的语言,但是我会根据公司已经具备的技能来选择该语言。您可以根据需要在几乎所有方面构建测试框架,但是如果开发团队熟悉某项技术,那么您将获得更多支持。如果已经进行了单元测试,则您可能希望以此为基础构建框架。
WebDriver如今已成为传统,而不再是Cypress等其他框架,它们易于学习,易于使用,更快,更可靠,通常更强大。您可能想要在不做进一步的比较之前对它们进行并排比较。
也就是说,请尝试通过API进行测试。通过前端进行的测试非常昂贵,并且API测试往往可以快速运行,并提供更好的错误和更一致的结果。不要害怕在应用程序的各个层进行测试的多个框架,这样您就可以选择将测试放置在何处。
不要尝试精简框架或测试套件,因此手动测试仪可以使用它。如果手动测试人员想学习自动化,那么他们真的必须能够编写代码才能有效,尤其是在故障排除方面。
环境是测试工作的关键部分。不要小看这些正确的方法会浪费多少时间。也要习惯于有很多移动的棋子,这就是野兽的本质。
您进行测试的次数越多越好。避免在夜间运行大型测试套件或进行耗时的测试。如果人们无法获得快速反馈,他们将忽略结果。
您的测试必须完全可靠,否则人们将忽略结果。这一点的重要性不能高估。


#8 楼

尽管测试自动化仍是新事物,但企业仍希望集中化其测试环境,以使用单个工具有效地自动化其旧版,Web和移动应用程序。这是测试自动化模型的起点。它使我们能够集中化其所有测试自动化属性,而与使用的工具无关。
什么是自动化框架?
自动化平台是一组工具和过程,可实现对任何应用程序的自动化测试。 。它合并了不同的功能,例如库,测试数据和可重用模块。
该框架促进了自动化测试,以作为技术实施的参考。例如,考虑一种情况,其中测试团队涉及专注于不同自动化测试代码的成员。他们无法理解项目中团队成员修改过的标准代码和脚本。
自动化系统不仅具有在不同上下文中重用代码的优势,还使团队可以开发以标准化方式测试脚本。结果,测试自动化系统解决了所有问题。
有关测试自动化框架的书籍,您可以参考:
https://www.amazon.in/Hands-Automation-Testing-Java- Beginners / dp / 1789534607
https://www.goodreads.com/book/show/12563795-experiences-of-test-automation

#9 楼

按照定义:

用于设计自动化的一组实践,假设和概念
使用用于自动化的测试工具的框架
测试

。 “
自动化框架的主要好处:

测试脚本的可重用性
适应变化的灵活性
培训新手的舒适性
更好的维护性

参考:https://www.google.co.uk/books/edition/Software_Automation_Testing_Secrets_Reve/AK44DwAAQBAJ?hl=zh-CN&gbpv=1&printsec=frontcover
自动化框架示例:
https:// github.com/webdriverio/cucumber-boilerplate
CypressIO中的示例测试框架:
https://github.com/narayananpalani/cypress-test-techniques
关于自动化框架的神话:

误解一:自动化工具只不过是一个框架

自动化工具本身不是一个框架-UFT One或Selenium等工具只是工具,而不是框架本身。和Te一起stNG,Cucumber在第一个测试中,在其中测试了功能,将其转换为在自动化框架内使用。在此之前,它只是一种工具

神话2:任何自动化工具集成都可以是一个框架。 ALM不是自动化框架。这只是一组工具。
作为真正的自动化框架,真正使与众不同的是什么?
本书应将框架归为以下框架列表中的至少一个类别:

误解三:所有框架都是可重用的
这是一个错误的概念。许多框架仅取决于许可证的使用,并限制用户适应未来的项目。在编写框架脚本时,要考虑某些功能。
框架应该假定满足了目标列表,例如测试管理,测试设计,测试执行和测试适应性
好的框架和gTAA(通用测试自动化架构)中的功能列表可以在以下网址中找到:
https://engineers-hub.teachable.com/p/istqb-advanced-level-test-automation-engineer- professional-training-with-qa
https://www.istqb.org/certification-path-root/test-automation-engineer.html
https://labs.sogeti.com/benefits-通用测试自动化架构/


#10 楼

据我所知,在您艰难的阶段中,我会遇到很多类似的问题。我只想提出一个简短的解决方案,该解决方案对我有用,并进一步让我进入一家基于产品的MNC公司,并提供超棒的包装。我了解您的知识有限,但不用担心。只有编码知识有限的IT员工才能参加测试。休息取决于他们是否想要改善,他们需要动手实践。.记住“实践使人变得完美”。按照我的指示,按照我的指示去做以下事情,我保证您会在20天内注意到结果。
最后。.如果您正在阅读,请相信我:

1 )投资自己:到此,我的意思是开始购买一些重要的东西。您知道在办公室工作了一整天后,您的眼睛需要休息,但耳朵始终会张开。笔记本。只要确保打开笔记本和笔帽并坐下即可。做任何您想在手机上执行的操作,但同时会打开笔记本电脑。
c)如果可能,请从亚马逊购买任何Java书籍。人们倾向于寻求投资回报,这是一种普遍的人道本质。因此,如果您要买书,那是还是要确保即使不阅读也可以翻书。

2)首先从Java开始:记住至少要在IT领域取得成功需要了解循环知识。无论是任何程序,但循环都很重要。从书中阅读Java并在需要时获取在线帮助。进行10天。从第11天开始,您将开始享受它。

3)Java可以理解之后,说20%。收听youtube并直接观看核心Java面试问题视频。扬声器在这里开始使用。将其插入笔记本电脑,至少收听视频中所说的内容。此外,如果您要记下它的重要性,也请在笔记本中写一些,并在eclipse中练习代码。

4)第15天>收听youtube并在youtube上搜索硒课程。

5)第19天>再次在youtube上,搜索自动化框架完整教程,然后选择任何较长的视频(说超过2小时)。始终使用扬声器而不是耳机演奏,因为它可以帮助您再次注意笔记本电脑。

6)练习练习。

最好的伴侣!

评论


那有什么意义呢?找到一些Java资源并向他们学习?是否还需要其他所有东西(购买笔记本和笔,耳机等)?时间线似乎也很主观。对您有效的方法可能不是对其他人的最佳建议。

–pavelsaman
20年1月22日在20:32