目前,针对此类需求最经济、最有效的方法便是:履行基于云的自动化浏览器测试。个中,业界最常用的手段便是采取Selenium测试。下面,让我们一起深入理解采取Selenium云端测试对付跨浏览器性能检测的主要性。
本地测试的局限性众所周知,针对本地托管网站的相应式测试,是成功实现在线业务的关键。为了确保网站的内容能够恰当地呈现在不同种类的设备、及其屏幕上,测试职员须要供应一台配置高真个打算机,并在上面安装不同的操作系统和Web浏览器版本(例如Chrome、Firefox、Safari等)的组合。显然,这种本地测试的方法不但费时费力,而且无法担保测试的覆盖率。测试职员亟待通过自动化测试,来覆盖各种可能性的测试用例。
Selenium简介与特点作为一种非常盛行的开源测试框架,Selenium可以被用来创建各种可扩展的测试用例。它不但能够仿照用户与目标网站之间的交互,而且可以利用由Java、Python、PHP、Ruby、C#等多种措辞编写的测试脚本,实现自动化的跨浏览器测试。
归纳起来,Selenium框架的紧张特点包括如下方面:
Selenium是开源的,可以被免费利用。诸如C#、Python、JavaScript、以及Ruby on Rails等盛行编程措辞,可以被无缝地用于Selenium框架。Selenium拥有弘大且持续的社区,能够为用户供应支持。用户可以针对自动化的GUI测试,下载各种WebDriver,以支持诸如Chrome、Firefox、Microsoft Edge等时下流行的Web浏览器。诸如Hypothesis、Robot Framework等盛行且适用于Python的框架,可以通过利用它的各种输入值,来实行测试。更多有关Selenium的详细先容
在云端利用Selenium测试的优点总的说来,利用Selenium进行跨浏览器测试,可以在吞吐量、测试性能、并行性、覆盖范围等方面供应上风。详细而言,在云端利用Selenium测试的好处紧张表示在如下方面:
通过基于云的跨浏览器自动化测试平台,我们能够得到更广阔的浏览器与平台覆盖率。SaaS(软件即做事)模型能够供应按资源利用付费的本钱效益与扩展模式。云做事赋能了并行测试(请拜会--https://www.lambdatest.com/blog/what-is-parallel-testing-and-why-to-adopt-it/),且测试实行的速率更快。可以在新版、或旧版的Web浏览器、操作系统、以及设备上开展功能测试。通过利用缺点跟踪、沟通和项目管理工具,来跟踪测试的全体进程,并实现团队成员的及时沟通。可利用Jenkins(请拜会--https://www.lambdatest.com/blog/what-is-jenkins/)、TeamCity、Travis、Bamboo等CI/CD工具的上风,来实现构建、打包、以及测试过程的自动化。下表总结了Selenium的功能种别与对应的工具:
云端Selenium测试的准备
为了动手在云端开展Selenium测试,我们选择LambdaTest(请拜会--https://www.lambdatest.com/)作为基于云的跨浏览器测试平台。您可以在该平台上实行以下任务:
在线对2000多种真实的浏览器和操作系统,进行基于Selenium的自动化和实时交互式跨浏览器测试。只需变动最少量的代码,即可将既有的测试移植到LambdaTest平台上。利用并发会话和并行实行的办法,来更快获取测试结果。通过查看LambdaTest做事器上针对某项测试的调试日志,来跟踪自动化测试,并剖析失落败的缘故原由。利用Remote Selenium WebDriver,为那些强大的编程措辞(如C#、Python、Ruby on Rails等),天生并实现跨浏览器的功能。利用详细的报告机制,来剖析待测系统的性能。下面是利用LambdaTest在云端进行Selenium测试的详细步骤:
步骤1:建立帐户
首先,您须要先在LambdaTest上完成注册。如上图所示,您可以通过访问注书页面--https://accounts.lambdatest.com/register,来创建一个新的帐户。完成后,请保存用户名和访问令牌,以便在登录LambdaTest仪表板时利用。
步骤2:选择定价方案
根据测试的哀求,您可以选择适当的定价方案。目前,LambdaTest有Lite、Live、Web与移动浏览器自动化、以及Web自动化四种方案可供选择。您虽然可以随时对已选定的方案进行升/降级,但是其变动只能反响不才一个结算周期中。有关这四种方案的详细解释,请拜会定价页面--https://www.lambdatest.com/pricing。
步骤3:浏览器功能天生器(Browser Capabilities Generator)
由于要在云端实行测试,因此您须要在Selenium Grid云上配置各种属性,个中包括:选择编程措辞,指定用于测试的操作系统、浏览器类型、分辨率、以及版本号。
如上图所示,您可以登录平台,利用功能天生器来天生干系功能,以便实行跨浏览器的各种测试。之后,您须要转到“自动化”选项卡,以监视自动化浏览器的测试状态。同时,每一个测试都将具有与之干系联的测试ID和内部版本ID。其格式为--https://automation.lambdatest.com/logs/?testID=< test-id >&build=< build-id >。
实行云端Selenium测试有了前面的根本,下面让我们来看一个Python示例,它演示了如何利用LambdaTest上的远程Selenium Grid,在云端进行Selenium测试。
串行测试串行测试(Serial testing)是一种以串行办法(即,逐个顺次进行)实行测试的实践。它会在上一个测试完成之后,再实行下一个测试。利用串行测试的缺陷是:由于没有充分利用Selenium测试框架和云根本架构的资源,因此它增加了测试实行的韶光。针对此类测试,我们来谈论如下的测试步骤:
在Firefox浏览器中打开DuckDuckGo。找到搜索框。输入查询的内容,即LambdaTest。实行搜索操作。开释资源。详细实当代码为:
Python
1#PythonexampledemonstratesSeleniumtestingontheCloudusingLambdaTestplatform2importtime3importunittest4importselenium5importurllib36importtime7importwarnings8fromtimeimportsleep9fromseleniumimportwebdriver1011test_url=34;https://www.duckduckgo.com"1213#DesiredbrowsercapabilitiesgeneratedusingLambdaTestCapabilitiesGenerator14#https://www.lambdatest.com/capabilities-generator/1516desired_capabilities={17"build":"SeleniumtestingontheCloudusingLambdaTest",18"name":"SeleniumtestingontheCloudusingLambdaTest",19"platform":"Windows10",20"browserName":"Chrome",21"version":"72.0"22}2324classSeachTest(unittest.TestCase):25defsetUp(self):26print("Start-SetUp")2728#IgnoreResourceWarningrelatedwarnings29warnings.filterwarnings(action="ignore",message="unclosed",category=ResourceWarning)3031urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)32user_name="user-name"33app_key="app_key"3435#UsernameandAccessTokentousetheLambdaTestplatform36remote_url="https://"+user_name+":"+app_key+"@hub.lambdatest.com/wd/hub"37self.driver=webdriver.Remote(command_executor=remote_url,desired_capabilities=desired_capabilities)3839print("End-SetUp")4041deftest_selenium_on_cloud(self):42print("Start-test_selenium_on_cloud")43self.driver.maximize_window()44self.driver.get(test_url)4546#time.sleep(5)47sleep(5)4849#LocatetheelementusingtheInspecttoolofthebrowser50elem=self.driver.find_element_by_xpath("//[@id='search_form_input_homepage']")51elem.send_keys("Lambdatest")5253#Executethesearch54elem.submit()5556#Sleepfor10secondsinordertoseetheresults57sleep(5)5859print("End-test_selenium_on_cloud")6061deftearDown(self):62print("Start-tearDown")63#Closethebrowser.64self.driver.quit()6566print("End-tearDown")6768if__name__=='__main__':69unittest.main()
而如下代码供应了:可登录平台的用户名和访问令牌的组合。
user_name="user-name"2app_key="app_key"34#UsernameandAccessTokentousetheLambdaTestplatform5remote_url="https://"+user_name+":"+app_key+"@hub.lambdatest.com/wd/hub"
我们利用LambdaTest Capabilities Generator来天生浏览器和平台的功能,同时须要选择用于实现的编程措辞,以及浏览器规格。在此,我们的Python代码为:
desired_capabilities={2"build":"SeleniumtestingontheCloud",3"name":"SeleniumtestingontheCloudusingLambdaTest",4"platform":"Windows10",5"browserName":"Chrome",6"version":"72.0"7}89………………………………………………………………………10………………………………………………………………………11self.driver=webdriver.Remote(command_executor=remote_url,desired_capabilities=desired_capabilities)
利用浏览器的检讨工具,我们可以找到Web元素的详细信息,在该例子中,即为DuckDuckGo主页上的搜索框。
我们在Selenium中、以及代码中都利用到了XPath元素的属性。
#LocatetheelementusingtheInspecttoolofthebrowser2elem=self.driver.find_element_by_xpath("//[@id='search_form_input_homepage']")3elem.send_keys("Lambdatest")
为了演示云端Selenium测试,我们利用了unittest框架,以及Selenium测试套件,从终端调用python命令—“python ”来实行。
您可以通过导航到相应的测试ID和内部版本ID,以检讨该自动化测试的状态。
并行测试
Selenium中的并行测试(Parallel testing)是指:通过并发运行自动化测试套件或用例,来减少测试的实行韶光。虽然测试套件的组合是在多台做事器上被并行实行,但是每台做事器一次仍旧只运行一个测试。
为了在LambdaTest上快速实行,我们在不同做事器上,以并发的办法来触发会话。如下图所示,我们调用了两个并发的会话。有关并行实行的测试案例、以及详细的定价方案,请拜会:https://www.lambdatest.com/pricing。
我们设计了在Chrome和IE两种浏览器中开展并行测试的案例,它们屈服上述串行测试的步骤。因此,在LambdaTest做事器上的并发会话为2比2。
在详细实现中,我们利用LambdaTest Capabilities Generator天生了针对Chrome和IE浏览器的两种浏览器功能。
个中,测试1的Chrome浏览器功能代码为:
desired_capabilities={2"build":"ParallelTesting-SeleniumtestingontheCloud[Chrome]",3"name":"ParallelTesting-SeleniumtestingontheCloud[Chrome]",4"platform":"Windows10",5"browserName":"Chrome",6"version":"72.0"7}
测试2的IE浏览器功能代码为:
desired_capabilities={2"build":"ParallelTesting-SeleniumtestingontheCloud[IE]",3"name":"ParallelTesting-SeleniumtestingontheCloud[IE]",4"platform":"Windows7",5"browserName":"InternetExplorer",6"version":"11.0",7"ie.compatibility":110018}
别的的实当代码与串行测试相同。下面展示的是针对IE浏览器的实当代码:
#PythonexampledemonstratesSeleniumtestingontheCloudusingLambdaTestplatform2importtime3importunittest4importselenium5importurllib36importtime7importwarnings8fromtimeimportsleep9fromseleniumimportwebdriver1011test_url="https://www.duckduckgo.com"1213#DesiredbrowsercapabilitiesgeneratedusingLambdaTestCapabilitiesGenerator14#https://www.lambdatest.com/capabilities-generator/1516desired_capabilities={17"build":"ParallelTesting-SeleniumtestingontheCloud[IE]",18"name":"ParallelTesting-SeleniumtestingontheCloud[ChromeIE]",19"platform":"Windows7",20"browserName":"InternetExplorer",21"version":"11.0",22"ie.compatibility":1100123}2425classSeachTest(unittest.TestCase):26defsetUp(self):27print("Start-SetUp")2829#IgnoreResourceWarningrelatedwarnings30warnings.filterwarnings(action="ignore",message="unclosed",category=ResourceWarning)3132urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)33#user_name="user-name"34#app_key="app_key"35user_name="himanshu.sheth@gmail.com"36app_key="fbI6kxucn5iRzwt5GWYiNvaPb4Olu9R8lwBsXWTSaIOebXn4x9"3738#UsernameandAccessTokentousetheLambdaTestplatform39remote_url="https://"+user_name+":"+app_key+"@hub.lambdatest.com/wd/hub"40self.driver=webdriver.Remote(command_executor=remote_url,desired_capabilities=desired_capabilities)4142print("End-SetUp")4344deftest_selenium_on_cloud(self):45print("Start-test_selenium_on_cloud")46self.driver.maximize_window()47self.driver.get(test_url)4849#time.sleep(5)50sleep(5)5152#LocatetheelementusingtheInspecttoolofthebrowser53elem=self.driver.find_element_by_xpath("//[@id='search_form_input_homepage']")54elem.send_keys("Lambdatest")5556#Executethesearch57elem.submit()5859#Sleepfor10secondsinordertoseetheresults60sleep(5)6162print("End-test_selenium_on_cloud")6364deftearDown(self):65print("Start-tearDown")66#Closethebrowser.67self.driver.quit()6869print("End-tearDown")7071if__name__=='__main__':72unittest.main()
如下图所示,在并行实行中,针对不同浏览器的两个.py文件,都会在同一处被终端所调用。
从LambdaTest的实行快照中,我们可以看出:并行测试的并发会话数越多,总体实行韶光就越短。
小结
虽然Selenium是用于自动化Web浏览器测试的强大框架,但是如果我们将其用于本地根本架构的测试,那么测试设备的性能、可扩展性、以及吞吐量都会受到限定。因此,企业须要在云端针对Web运用、网站和移动运用进行Selenium测试。而并行测试的办法,每每能够加速全体实行的进程。为了得到更好的可扩展性和更优胜的性能,我们可以利用LambdaTest之类的云平台,在Selenium中进行各种跨浏览器的功能性测试。
文章来源:https://developer.51cto.com/art/202012/636453.htm