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 测试可以在 Windows、Linux 和 MacintoshAnd 上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。
使用 Selenium 和在浏览器中运行测试还有很多其他好处。下面是主要的两大好处:
Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。
在下面的情况下,可以选择SeleniumRC进行功能测试。
首先要下载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进行测试。