资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

java代码的测试用例 java代码的测试用例有哪些

selenium 怎么使用java编写测试用例

control-1.0.1-dist.zip。 解压。

公司主营业务:成都网站制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出洛川免费做网站回馈大家。

2. 用命令行来到解压的文件夹下: \selenium-remote-control-0.9.2\selenium-server-0.9.2

3. 运行: java -jar selenium-server.jar 启动selenium server (务必启动!!)

4. 在Eclipse创建一个项目,在项目的build path里面加上junit.jar和selenium-java-client-driver.jar(这个在刚解压的包里面)

5. 先利用firefox selenium IDE来录制检测页面检测功能用的junit代码。

6. 在项目里面新建一个class(junit用例):将上面的junit代码帖于此。

7. 根据eclipse的错误提示来增加相应要import的类

8. 在进行测试前,最好将对应浏览器关闭,否则容易出错。

9. 然后在Eclipse里运行 “Run As - unit Test”即可看到自动化的范例.

10.运行期间,会弹出ie窗口,自动进 行操作测试。检测完后,若junit显示为“绿色”则表示成功。

下面粘贴一下那个测试小程序

import com.thoughtworks.selenium.SeleneseTestCase;public class Untitled extends SeleneseTestCase {

public void setUp() throws Exception {

//由于selenium 对*firefox不支持3.6版本的.只能支持3.0版本.所以,最好将selenium IDE录制的代码中的firefox改为ie进行测试。

//setUp("", "*firefox");

setUp("", "*iexplore");

}

public void testUntitled() throws Exception {

selenium.open("/");

selenium.type("q", "baidu");

selenium.click("btnG");

selenium.waitForPageToLoad("30000");

selenium.click("link= 百度一下,你就知道");

//添加断言进行测试:

// assertTrue(selenium.isTextPresent("OpenQA: Selenium")); //测试出错,程序退出

assertTrue(selenium.isTextPresent("百度一 下,你就知道")); //测试成功,程序继续

}

//用于让测试的页面关闭.若不写,则页面不会关闭

public void tearDown() throws Exception {

selenium.stop();

}

}

(7)

7.1

selenium 常用操作有:open,type,click,select,selectFrame:

1. open("/")打开的是当前的网址;selenium.open("/dmmc/"):在当前的网址后面追回/dmmc/;

2. type,click,select,selectFrame各方法使用时,对元素的定位都可采用元素ID 或 xpath方式;

3. type,click,select,selectFrame去选择元素时,可以直接用元素的ID作为标 记.

4. 如:selenium.type("loginName", "coship")采用xpath方式时,则格式如://元素名1[元素属性名1='元素属性值1']/元素名2[元素属性名2='元素 属 性值2']/....

如:selenium.type("//input[@name='admin.password']", "coship")7.2

常用命令用法:

1)

type的两种不同定位方式:

selenium.type("loginName", "coship");

//以下语句的"xpath="可以省略

selenium.type("xpath=//input[@name='admin.password']", "coship");

2)

click的两种不同定位方式:

selenium.click("imageField"); 即是通过ID定位:input type="submit" value=" " id="imageField"

selenium.click("//input[@type='submit']"); (通过属性input-type)

selenium.click("//input[@value='确定']"); (通过属性input-value)

selenium.click("//input[@name='devTypeIds' and @value='000002']") (还可通过属性@id)

3)

点击链接方式:

对于动态内容的获取,尽量避 免采用第一种方式(若内容变了,则出错),而采用第二种方式.

实现方式一:

点击链接:a href=..801830456628/a

selenium.click("link=801830456628");

实现方式二:

获取id=adminList的table中的tbody下的第三行,第二列中的a href元素。

selenium.click("//table[@id='adminsList']/tbody/tr[3]/td[2]/a");

4)

选 择下拉框:

实现方式一:

selenium.select("status", "label=启用");

即 是:select id="status"option value="1"启用/option/select

实现方式二:

selenium.select("xpath=//SELECT[@id='status']", "index=1");

具体应用,请见以下实例。7.3

实例:

用于检测abmc系统各模块功能是否正常。

方式:

用selenium IDE录制abmc系统各模块功能操作.(前提是:这些操作,这些功能都是正确成功),以后当abmc系统升级,更改后,即可运行此脚本,来检查升级是否 影响系统功能实现。若系统更改有错,则selenium中运行中某一步骤时,会出错退出。

如:

系统更改后导致某一页面打不开,这时 selenium运行到此页面时,就不能继续往下操作,就会出错而退出。注意:

1.同时,也可在测试代码中添加一些断言判断来判断成功,失败。

2.

对于firefox selenium IDE录制的脚本要进行适当的修改,尽量让selenium用元素ID来定位操作元素,而不通过元素名(元素名易变化)。

3.

若selenium RC检测代码出错,也不一定是系统升级有问题,可能是系统升级后,有些数据删除,修改了,selenium RC在回放操作时,找到原来录制时对应的数据而出错。具体代码如下:

//对于click,select,selectFrame去选择元素时,可以直接用元素的ID作为标记.// 如:selenium.click("元素ID");public class AbmcSeleniumTest extends SeleneseTestCase {

public void setUp() throws Exception {

setUp("", "*iexplore");

}

public void testUntitled() throws Exception {

selenium.open("/abmc/");

//type的两种不同定位方式

selenium.type("loginName", "coship");

//以下语句 的"xpath="可以省略

selenium.type("xpath=//input[@name='admin.password']", "coship");

// selenium.click("imageField"); 即是通过ID 定位:input type="submit" value=" " id="imageField"

selenium.click("//input[@type='submit']");

//等待一个新的页面加载。 以毫秒为单位,超过后该命令将返回错误。

selenium.waitForPageToLoad("30000");

//即选择frame src="device/index.jsp" id="mainFrame"

selenium.selectFrame("mainFrame");

//对于动态内容的获取,尽量避免采用第一种方式 (若内容变了,则出错),而采用第二种方式

//点击链接:a href=..801830456628/a

// selenium.click("link=801830456628");

//实现方式二:获取id=adminList的table中的tbody下的第三行,第二列中的a href元素。

selenium.click("//table[@id='adminsList']/tbody/tr[3]/td[2]/a");

selenium.waitForPageToLoad("30000");

selenium.click("//input[@value=' 返回']");

selenium.waitForPageToLoad("30000");

//因为有多个“查看应用列表”,若不指定,默认获取第一个

selenium.click("link=查看应用列表");

selenium.click("btn_dsure");

// 方式一:

//selenium.click(" //a[@onclick=\"showPage('应用列表','deviceAppList.action?device.swType=2device.deviceId=0000257device.deviceName=801830456628device.specName=DevTyp',750,400)\"]");

//方式二:

selenium.click("//table[@id='adminsList']/tbody/tr[3]/td[5]/span[1]/a");

selenium.click("btn_dsure");

selenium.selectFrame("relative=up");

selenium.selectFrame("leftFrame");

selenium.click("link=应用文件管理");

selenium.click("link=应用文件信息");

selenium.selectFrame("relative=up");

selenium.selectFrame("mainFrame");

selenium.click("//a[@onclick=\"showPage('匹配终端类型','appTypeList.action?application.appId=01application.appName=maliao',750,400)\"]");

selenium.click("btn_dsure");

selenium.click("//table[@id='adminsList']/tbody/tr[7]/td[8]/span[2]/a");

selenium.waitForPageToLoad("30000");

selenium.click("//input[@name='devTypeIds' and @value='000002']");

selenium.click("//input[@value='确定']");

selenium.waitForPageToLoad("30000");

selenium.click("//a[@onclick=\"showPage('匹配终端类型','appTypeList.action?application.appId=01application.appName=maliao',750,400)\"]");

selenium.click("btn_dsure");

selenium.selectFrame("relative=up");

selenium.selectFrame("leftFrame");

selenium.click("link=终端应用管理");

selenium.click("link=终端应用许可");

selenium.selectFrame("relative=up");

selenium.selectFrame("mainFrame");

// selenium.select("status", "label=启用"); 即是:select id="status"option value="1"启 用/option/select

selenium.select("xpath=//SELECT[@id='status']", "index=1");

selenium.click("//input[@type='image']");

selenium.waitForPageToLoad("30000");

selenium.click("//input[@type='image']");

selenium.waitForPageToLoad("30000");

selenium.selectFrame("relative=up");

//即 选择frame src="device/index.jsp" id="mainFrame"

selenium.selectFrame("topFrame");

selenium.click("link=注销");

//若要测试其 它的网页,可以继续selenium.open(..)

}

}

#web测试技术

如何写测试用例 java

测试用例设计和执行是测试工作的核心,也是工作量最大的任务之一。

测试用例(Test Case)目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。

测试用例编写准备

1

从配置管理员处申请软件配置:《需求规格说明书》和《设计说明书》;

2

根据需求规格说明书和设计说明书,详细理解用户的真正需求,并且对软件所实现的功能已经准确理解,然后着手制订测试用例。

测试用例制定的原则

1测试用例要包括欲测试的功能、应输入的数据和预期的输出结果。

2测试数据应该选用少量、高效的测试数据进行尽可能完备的测试。

用例覆盖

1正确性测试:输入用户实际数据以验证系统是满足需求规格说明书的要求;测试用 例中的测试点应首先保证要至少覆盖需求规格说明书中的各项功能,并且正常。

2容错性(健壮性)测试:程序能够接收正确数据输入并且产生正确(预期)的输出, 输入非法数据(非法类型、不符合要求的数据、溢出数据等),程序应能给出提示 并进行相应处理。把自己想象成一名对产品操作一点也不懂的客户,在进行任意操作。

3完整(安全)性测试:对未经授权的人使用软件系统或数据的企图,系统能够控制的程度,程序的数据处理能够保持外部信息(数据库或文件)的完整。

4接口间测试:测试各个模块相互间的协调和通信情况,数据输入输出的一致性和正确性。

5压力测试:输入10条记录运行各个功能,输入30条记录运行,输入50条记录进行测试。

6性能:完成预定的功能,系统的运行时间(主要是针对数据库而言)。

7可理解(操作)性:理解和使用该系统的难易程度(界面友好性)。

8可移植性:在不同操作系统及硬件配置情况下的运行性。

测试方法

1边界值分析法:确定边界情况(刚好等于、稍小于和稍大于和刚刚大于等价类边界值),针对我们的系统在测试过程中主要输入一些合法数据/非法数据,主要在边界值附近选取。

2等价划分:将所有可能的输入数据(有效的和无效的)划分成若干个等价类。

3错误推测:主要是根据测试经验和直觉,参照以往的软件系统出现错误之处。

测试用例的填写

1一个软件系统或项目共用一套完整的测试用例,整个系统测试过程测试完毕,将实际测试结果填写到测试用例中,操作步骤应尽可能的详细,测试结论是指最终的测试结果(结论为:通过或不通过)。

java 怎么写junit测试用例

java中Junit应用介绍:assertexp1;//exp1为boolean类型的值assertexp1:message;//message为如果exp1不是true的时候,要提示的错误消息断言一般作用:代码运行前写断言判断必须满足的条件;代码运行后判断必须符合的标准;确定代码运行过程中有无改变某些不应该变的东西2.junit中的Assert类提供了很多方法,替代断言,参照api:assertEquals、assertFalse、assertTrue、assertNotNull、assertNull、assertSame、fail3.注解@interface用来定义注解@Retention用来声明注解的保留策略,有CLASS(注解保存在class文件中)、RUNTIME(运行时可用)和SOURCE(仅在源代码中)这三种@Target用来声明注解可以被添加在哪些类型的元素上:注解、类、方法、方法参数、构造、字段、方法中的普通变量定义一个能在方法上使用的注解:@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public@interfaceKennethTest{}写一个测试类publicclassTest{@KennethTestpublicvoidtest1(){System.out.println("test1");}publicvoidtest2(){System.out.println("test2");}@KennethTestpublicvoidtest3(){System.out.println("test3");}}执行一个类中所有标记KennethTest的方法publicclassMain{publicstaticvoidmain(String[]args)throwsException{//反射ClassclassObj=Test.class;//获取Test的类对象Objectobj=classObj.newInstance();//调用无参数构造,新建一个Test的对象Method[]methods=classObj.getMethods();//获取Test类中所有public方法for(Methodmethod:methods){if(method.getAnnotation(KennethTest.class)!=null){//看这个方法是否有KennethTest注解method.invoke(obj);//如果这个方法有KennethTest注解,那么这个方法被调用执行}}}}4.junit中的注解@Test@Test(expected=IndexOutOfBoundsException.class)测试方法抛出这个异常就能通过测试@Test(timeout=10)测试方法不能超过10毫秒@Ignore忽略测试@Before每个测试方法之前执行@After每个测试方法之后执行@BeforeClass在加载类时执行@AfterClass在所有测试方法执行结束,如果有after的话,所有after也执行结束后执行5.通常写测试代码的规则:1)产品源代码和测试源代码要分开,包名类名一致例如org.ken.PersonDao对应测试代码可以为test.org.ken.PersonDaoTest2)一个有功能类要写至少一个测试类3)一个方法代表一个用例用例之间要保持独立(最好不要互相调用)


名称栏目:java代码的测试用例 java代码的测试用例有哪些
网页路径:http://cdkjz.cn/article/ddjgjgi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220