因此,在过去的四年左右的时间里,我一直使用主要的手动技术来测试基于Web的分析软件。但是对于2015年,我已经设定了自己的目标,即开始设置并开始编写自动化测试,并将自动化测试引入我的公司。

我做了一些研究,看来Selenium相当在编写自动化测试方面非常重要,但是我遇到的大多数教程都引用Java语言。

一些问题:


Java是硒测试使用的主要语言?
您是否推荐使用C#?
编写测试脚本的过程是怎样的?
我是否应该使用可以使该过程更加容易的框架?


评论

软件QA人员(本质上)执行工作需要知道什么的可能副本?
这个问题与想要开始测试/质量检查的人有关。

我已经在两家不同的公司中使用C#来开发Selenium,但效果很好。您可以深入了解UI交互,不必担心。

对于选择的语言,通常会尝试使用公司使用的开发语言。这样,您就可以在需要时伸出援助之手,并在您不再在公司任职时由他人来接管您的工作。

您介意我是否将其清理干净,并使其成为规范的“如何开始使用Selenium”问题?我可以开始全面的答案了

#1 楼

为了广泛地解决您的问题,只需选择一些不是很动态的简单交互的测试用例就可以使它们自动化。试用,错误和练习将带您到那里。


Java是否主要用于Selenium测试?您是否在C#上推荐它?


根据StackOverflow,Java中带有Selenium标记的问题比其他任何语言都多(截至撰写本文时)。

话虽这么说,但是进入编程非常困难,您应该选择一种易于学习的语言(Python和Ruby都有Selenium)。使用Selenium进行Java / C#的边际改进远远超过了它们学习的困难。


另外,编写测试脚本的过程是什么?


老实说,很多艰巨的工作正在让Selectors供您的代码使用。 Selenium需要一种方法来知道要与哪个元素交互,因此您可以使用选择器来标识该元素。 xpath和/或css将使您变得一目了然。

随着您的改进,代码维护将更加困难,这是一个好问题(您编写了足够的自动化测试,需要更好的方法来管理它们)


是否有我应该使用的框架使该过程更加容易?


很难了解框架是否为您节省了比创建更多的工作。为什么不尝试编写一些简单的测试用例,直到您开始自问:“我希望有一个可以完成____的框架”。

最后,不要因编写完美的代码而被束缚。只要继续这样做,您就会变得更好。

#2 楼

如何开始使用Selenium:概述
所以您想自动化浏览器驱动的测试,并且不确定从哪里开始。您已经听说过这种“硒”的事情,并且您认为这就是您想要的,但是不能确定。不用担心!这是您正在查看的内容以及操作方法的简要概述。这主要是从以下两个来源改编而成:官方文档和我不久前有关该主题的博客文章。
Selenium IDE,Selenium RC和Selenium Webdriver
有三种产品,名称为“ Selenium ”。如果您刚刚入门,则可以放心地忽略旧的Selenium RC产品,因为它已被新的“ Selenium Webdriver”产品所取代。剩下的就是Webdriver和Selenium IDE。
Selenium IDE
Selenium IDE是一个firefox插件,可以在浏览器中记录简单的自动化任务并将其保存为XML,以便可以对其进行回放。对于一次性任务(例如记录重复的错误报告的步骤)非常有用,但是从长远来看,它产生的输出很难维护,因此您不想将其用作大型自动化项目的唯一工具就像完整的回归套件一样。
WebDriver
WebDriver具有两个组件:客户端和服务器。如果您总是要在运行代码的同一台计算机上执行任务,则可以将它们捆绑在一起,也可以使用RemoteWebDriver设置专用于测试执行的计算机,而不是用于执行代码的计算机。实际上,如果您想在VM中运行测试,以免在尝试调试某些东西时没有弹出浏览器窗口并在桌面上关闭所有窗口的情况,那么这很有用,所以我总是使用如果我仅在一台计算机上运行,​​请使用RemoteWebDriver并仅启动服务器的本地实例。但是您可以随心所欲。
我使用哪种语言?
因此,您决定使用Webdriver,而不是Selenium IDE。对你有好处!现在,您必须决定要使用哪种语言来自动化测试。
我在这里也有个好消息:最终,这无关紧要。选择一种适合您过程的工具的语言,或者除非您愿意,否则请选择一种您个人熟悉的语言。许多人使用C#.net绑定或Java绑定,但更多人使用python绑定。所有绑定的库都相同。唯一改变的是调用方法的确切语法。
我该如何自动化?
Webdriver非常擅长驱动浏览器,但是遗憾的是,基于GUI的自动化与之相比慢且脆弱无头自动化。尽可能尝试在较低级别进行自动化,例如,单元测试或集成测试。这将提供更加稳定,快速的测试。
话说,针对GUI自动化当然具有价值。您应该自动化稳定的功能测试并为您的组织提供价值。最终,只有您(和您的团队)才能决定什么值得自动化。我建议从更简单的测试用例开始,这样您就可以了解自动化脚本所需的工作量。
如何构造项目?
我的第一个功能测试框架是针对台式机和ATM软件的。我从没听说过PageObject的概念,但是我通过示例了解到,如果您有一个详细的框架,这些测试将更容易阅读。这也使工作人员的关注点分离:让那些擅长编程的人在框架上工作,让那些对测试用例有良好了解的人通过调用框架方法来在测试代码本身上工作。该框架应包含与被测软件交互所需的所有内容,并以清晰易读的方法打包,例如mainWindow.openHelp()或fileDialog.chooseFile(filename)。测试作者不必为了编写测试就知道诸如按钮名称,窗口句柄或xpath定位器之类的知识;他们应该使用非常接近人类语言的语言,因此很容易验证自动化测试是否符合手动测试用例。
在Webdriver中,这是通过使用PageObjects完成的。本质上,PageObject是一个类,表示Web应用程序中的单个页面或页面的一部分,类似于表示桌面自动化中的屏幕或对话框的类。有一个PageFactory类,可以在需要时根据注释自动在PageObject中自动创建元素。我建议您通读文档,因为这对于创建您的框架来说确实节省了一点时间。我还喜欢创建一个辅助方法,该方法将接收一个url并返回该URL表示的PageObject,因此允许测试找出错误将其错误地放在错误的页面上的原因。我需要什么信息有关该应用程序?
好消息是您可能不需要开发人员来了解如何与页面进行交互!坏消息是您将非常熟悉CSS选择器,xpath和DOM的结构。如果您不太了解网络,则可能需要与开发人员合作,以帮助您确定可用于选择元素的选择器。如果使用jQuery,通常可以通过将css选择器传递给jQuery对象并查看是否返回了任何元素来对其进行测试。
遇到困难时,在哪里可以找到更多信息?
在此站点和StackOverflow上搜索问题(或者询问是否还没有涵盖该信息),但是您还需要非常熟悉文档。如果您从书本上学得更好,那么也有很多关于该主题的书(如果是本学科的话),并且如果您以这种方式学得更好,则可以找到在线网络课程(如这一本)。最终,测试自动化是您将始终学习新技巧的主题之一,并且每个项目都将基于前一个项目的成功和失败。祝你好运!

评论


这应该是公认的答案。

– Dan Dascalescu
15年8月5日在10:58

#3 楼

首先,寻找需要大量手动工作并且不会从一个版本更改到另一个版本的测试任务。这对于UI自动化尤为重要。如果网页频繁更改,您将花费大量时间更新自动测试,以至于手动测试页面的速度会更快。

请注意,使用自动化的方法通常不涉及测试网页。例如,测试通常需要创建测试数据。如果您可以编写一些将数据直接插入数据库的方法,而不是通过Web界面创建数据,则可以节省时间并减少错误。

#4 楼

开始自动化测试的最佳方法是掌握以下知识:-

1)熟练的语言知识(Java / C#....... etc)
2)很好的理解理想情况下,定位器是XPath,而不是从FireBug复制的定位器,而是自定义的手写定位器。
3)稳定的框架设计,从基本设计开始,然后使用最佳实践进行改进。尝试并使用嵌入在函数/方法中的xpath,就像这样。

JAVA:

  protected void selectElementByVisibleTextAndFielsetName(WebElement parentElement  , String visibleText , String fieldsetName){
        try {
            WebElement element = parentElement.findElement(By.xpath(".//div/label[contains(.,'"+fieldsetName+"')]/../../div/div/select"));
            Select select = new Select(element);
            select.selectByVisibleText(visibleText);
            logger.info("Selected text is :" + visibleText);
        }catch (Exception e ){
            e.printStackTrace();
            takeScreenshot();
            logger.info("Screen shot has been taken !");
        }
    }


#5 楼

Java是Selenium测试中使用的主要语言吗?
您推荐使用C#而不是C#吗?

我更喜欢C#而不是Java,主要是因为Eclipse与Visual Studio不太接近。对于专业的测试人员/测试架构师/测试程序员,Visual Studio Ultimate是最好的。但是,终极版和专业版都与TFS 100%集成在一起,这使ALM(应用生命周期管理)成为现实。这意味着QA团队可以通过出色的Bug队列,首先将TFS用作Bug队列,从而进行有纪律的开发工作。

从那里,每个人都将看到TFS的敏捷性,并且一开始会像瀑布式商店那样拒绝它。但是,如果质量检查团队可以带动整个车间敏捷发展,那么质量检查团队将受益匪浅。

Visual Studio通过NUGET软件包下载“说出”硒。如果您想要最好的IDE,那么C#是唯一的选择。