软件测试中使用开源工具SeleniumRC进行功能测试

发表于:2011-05-02来源:作者:点击数: 标签:软件测试小米用户浏览器应用程序
软件测试中使用 开源 工具SeleniumRC进行功能测试 Functional testing (功能测试),也称为behavioral testing(行为测试),根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计 需求 。 本地化 软件的功能测试,用于验证

软件测试中使用开源工具SeleniumRC进行功能测试

Functional testing (功能测试),也称为behavioral testing(行为测试),根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。

 

  功能测试也叫黑盒子测试或数据驱动测试,只需考虑各个功能,不需要考虑整个软件的内部结构及代码.一般从软件产品的界面、架构出发,按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。

 

  以上是属于程序软件类的测试,下面介绍应用电子技术方面的测试

 

  印刷电路板,又称印制电路板,印刷线路板,常使用英文缩写PCB(Printed circuit board),是重要的电子部件,是电子元件的支撑体,是电子元器件线路连接的提供者。由于它是采用电子印刷技术制作的,故被称为“印刷”电路板。

 

  在印制电路板出现之前,电子元件之间的互连都是依靠电线直接连接而组成完整的线路。现在,电路面包板只是作为有效的实验工具而存在,而印刷电路板在电子工业中已经成了占据了绝对统治的地位。

 

  20世纪初,人们为了简化电子机器的制作,减少电子零件间的配线,降低制作成本等优点,于是开始钻研以印刷的方式取代配线的方法。三十年间,不断有工程师提出在绝缘的基板上加以金属导体作配线。而最成功的是1925年,美国的Charles Ducas 在绝缘的基板上印刷出线路图案,再以电镀的方式,成功建立导体作配线。[1]

 

  直至1936年,奥地利人保罗·爱斯勒(Paul Eisler)在英国发表了箔膜技术[1],他在一个收音机装置内采用了印刷电路板;而在日本,宫本喜之助以喷附配线法“メタリコン法吹着配线方法(特许119384号)”成功申请专利。[2]而两者中Paul Eisler 的方法与现今的印刷电路板最为相似,这类做法称为减去法,是把不需要的金属除去;而Charles Ducas、宫本喜之助的做法是只加上所需的配线,称为加成法。虽然如此,但因为当时的电子零件发热量大,两者的基板也难以配合使用[1],以致未有正式的实用作,不过也使印刷电路技术更进一步。

 

  1941年,美国在滑石上漆上铜膏作配线,以制作近接信管。

 

  1943年,美国人将该技术大量使用于军用收音机内。

 

  1947年,环氧树脂开始用作制造基板。同时NBS开始研究以印刷电路技术形成线圈、电容器、电阻器等制造技术。

 

  1948年,美国正式认可这个发明用于商业用途。

 

  自20世纪50年代起,发热量较低的晶体管大量取代了真空管的地位,印刷电路版技术才开始被广泛采用。而当时以蚀刻箔膜技术为主流[1]。

 

  1950年,日本使用玻璃基板上以银漆作配线;和以酚醛树脂制的纸质酚醛基板(CCL)上以铜箔作配线。[1]

 

  1951年,聚酰亚胺的出现,便树脂的耐热性再进一步,也制造了聚亚酰胺基板。[1]

 

  1953年,Motorola开发出电镀贯穿孔法的双面板。这方法也应用到后期的多层电路板上。[1]

 

  印刷电路板广泛被使用10年后的60年代,其技术也日益成熟。而自从Motorola的双面板面世,多层印刷电路板开始出现,使配线与基板面积之比更为提高。

 

  1960年,V. Dahlgreen以印有电路的金属箔膜贴在热可塑性的塑胶中,造出软性印刷电路板。[1]

 

  1961年,美国的Hazeltine Corporation参考了电镀贯穿孔法,制作出多层板。[1]

 

  1967年,发表了增层法之一的“Plated-up technology”。[1][3]

 

  1969年,FD-R以聚酰亚胺制造了软性印刷电路板。[1]

 

  1979年,Pactel发表了增层法之一的“Pactel法”。[1]

 

  1984年,NTT开发了薄膜回路的“Copper Polyimide法”。[1]

 

  1988年,西门子公司开发了Microwiring Substrate的增层印刷电路板。[1]

 

  1990年,IBM开发了“表面增层线路”(Surface Laminar Circuit,SLC)的增层印刷电路板。[1]

 

  1995年,松下电器开发了ALIVH的增层印刷电路板。[1]

 

  1996年,东芝开发了B2it的增层印刷电路板。[1]

 

  就在众多的增层印刷电路板方案被提出的1990年代末期,增层印刷电路板也正式大量地被实用化,直至现在。

 

  为大型、高密度的印刷电路板装配(PCBA, printed circuit board assembly)发展一个稳健的测试策略是重要的,以保证与设计的符合与功能。除了这些复杂装配的建立与测试之外,单单投入在电子零件中的金钱可能是很高的 - 当一个单元到最后测试时可能达到25,000美元。由于这样的高成本,查找与修理装配的问题现在比其过去甚至是更为重要的步骤。今天更复杂的装配大约18平方英寸,18层;在顶面和底面有2900多个元件;含有6000个电路节点;有超过20000个焊接点需要测试。

 

  在朗讯加速的制造工厂(N. Andover, MA),制造和测试艺术级的PCBA和完整的传送系统。超过5000节点数的装配对我们是一个关注,因为它们已经接近我们现有的在线测试(ICT, in circuit test)设备的资源极限(图一)。我们现在制造大约800种不同的PCBA或“节点”。在这800种节点中,大约20种在5000~6000个节点范围。可是,这个数迅速增长。

 

  新的开发项目要求更加复杂、更大的PCBA和更紧密的包装。这些要求挑战我们建造和测试这些单元的能力。更进一步,具有更小元件和更高节点数的更大电路板可能将会继续。例如,现在正在画电路板图的一个设计,有大约116000个节点、超过5100个元件和超过37800个要求测试或确认的焊接点。这个单元还有BGA在顶面与底面,BGA是紧接着的。使用传统的针床测试这个尺寸和复杂性的板,ICT一种方法是不可能的。

 

  在制造工艺,特别是在测试中,不断增加的PCBA复杂性和密度不是一个新的问题。意识到的增加ICT测试夹具内的测试针数量不是要走的方向,我们开始观察可代替的电路确认方法。看到每百万探针不接触的数量,我们发现在5000个节点时,许多发现的错误(少于31)可能是由于探针接触问题而不是实际制造的缺陷(表一)。因此,我们着手将测试针的数量减少,而不是上升。尽管如此,我们制造工艺的品质还是评估到整个PCBA。我们决定使用传统的ICT与X射线分层法相结合是一个可行的解决方案

什么是 Selenium?

Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是:

Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 WindowsLinux 和 MacintoshAnd 上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。

使用 Selenium 和在浏览器中运行测试还有很多其他好处。下面是主要的两大好处:

  • 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。
  • 通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性

Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。

在下面的情况下,可以选择SeleniumRC进行功能测试。

  • condition statements
  • iteration
  • logging and reporting of test results
  • error handling, particularly unexpected errors
  • database testing
  • test case grouping
  • re-execution of failed tests
  • test case dependency
  • screenshot capture of test failures

首先要下载SeleniumRC,不用安装,解压即可,可以看到这样几个目录,下图示:

selenium-server-1.0.1目录,是服务器端,他可以接受测试程序指令,并将测试结果返回测试程序。
在测试前必须先启动他,启动过程:开始-运行-cmd-cd <服务器端目录>-java -jar selenium-server.jar
(服务器端其实就是个Jar文件)

 

然后就可以进行客户端,本文用C#来进行测试,首先建立一个C#类库工程,添加引用selenium-dotnet-client-driver-1.0.1目录下的所有DLL,具体如下图示。

下面,新建类SeleniumTest,具体代码如下:

 

代码

		
 1     [TestFixture]
 2     public class SeleniumTest
 3     {
 4         private ISelenium selenium;
 5         private StringBuilder verificationErrors;
 6 
 7         [SetUp]
 8         public void SetupTest()
 9         {
10             selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://localhost:2896/WebTestSite/");
11             selenium.Start();
12            
13             verificationErrors = new StringBuilder();
14         }
15 
16         [TearDown]
17         public void TeardownTest()
18         {
19             try
20             {
21                 selenium.Stop();
22             }
23             catch (Exception)
24             {
25                 // Ignore errors if unable to close the browser
26              }
27             Assert.AreEqual("", verificationErrors.ToString());
28         }
29 
30         [Test]
31         public void TheSeleniumTest()
32         {
33             selenium.Open("/WebTestSite/");
34             selenium.Type("TextBox1", "qeq");
35             selenium.Type("TextBox2", "qwe");
36             selenium.Click("Button1");
37 
38            //判断是否出现alert("fail")
39              Assert.AreEqual("fail", selenium.GetAlert());
40           
41             selenium.Type("TextBox1", "123");
42             selenium.Type("TextBox2", "123");
43             selenium.Click("Button1");
44             Assert.AreEqual("fail", selenium.GetAlert());
45 
46          //点击链接
47              selenium.Click("link=2");
48          //等待
49              selenium.WaitForPageToLoad("30000");
50             selenium.Click("link=3");
51             selenium.WaitForPageToLoad("30000");
52            
53         }
54         [Test]
55         public void TestTitle()
56         {
57             selenium.Open("/WebTestSite/**.aspx");
58             Assert.AreEqual("yourtitle", selenium.GetTitle());
59           
60         }
61     }

 

这样,就建好了,可以打开NUit进行测试,也可以直接写个main进行测试。

原文转自:http://www.ltesting.net