【Junit】Web测试

因为只写过一个Junit测试,又测试项目逻辑比较复杂,以下只介绍几个测试中遇到问题的解决思路。

Web服务器:Linux

客户端:Linux/Windows(只要能执行java程序就行,测试java -jar Test_Client.jar)

问题

1、因为测试项目不同,需要执行部署不同的测试环境,怎么在客户端执行部署操作?

答:可以在java中通过SSH远程执行服务器中的命令,例如。(注,我引用的是网上随便找的包,当然你也可以自己写一个)

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
    @After
    public void tearDown() throws Exception {
        try {
            Connection conn = new Connection(TestConfig.SERVER_IP);
            conn.connect();
            conn.authenticateWithPassword(TestConfig.USERNAME,
                    TestConfig.PASSWORD);
            Session session = conn.openSession();
            String execCommandString = TestConfig.DELETE_APPLICATION;
            session.execCommand(execCommandString);
            Thread.sleep(TestConfig.DELETE_APPLICATION_SLEEPTIME);
            session.close();
            conn.close();
        } catch (Exception e) {
            System.out.println("Delete application error!");
            throw new Exception();
        }
    }

2、怎么模仿浏览器访问网站?

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
// Run test.
        Client client = ClientBuilder.newClient();
        WebTarget target = client.target(TestConfig.TESTURL);
        String response = null;
                for (int i = 0; i < TestConfig.REQUEST_TIMES; i++) {
                   // If there‘s only request,response may be 404.
                   response = target.request().get(String.class).toString();
                }
        client.close();

3、junit4默认测试所有使用@Test注解的Case,如果想根据测试环境决定测试哪些怎么办?

import junit.framework.TestSuite;
public class TestAll {
    public static void main(String[] args) {
        try {
            //初始化,获取参数等。。。
            TestConfig.init();
        } catch (Exception e) {
            System.out.println("TestConfig init fail.");
            System.out.println("Test over.");
            System.exit(1);
        }
        TestSuite suite = new TestSuite();
        //判断环境XFF
        String XFF = TestUtil.getOriginXFF();
        if (XFF != null) {
            switch (XFF) {
            case TestConfig.XFF2TT:
                //TestConfig.XFF2TT_TESTS是字符串数组,包括当前环境下需要测试的序列号。
                for (int i = 0; i < TestConfig.XFF2TT_TESTS.length; i++) {
                    suite.addTest(new XFF_2_TT("test"
                            + TestConfig.XFF2TT_TESTS[i]));
                }
                break;
            case TestConfig.XFF2TF:
                //TestConfig.XFF2TF_TESTS是字符串数组,包括当前环境下需要测试的序列号。
                for (int i = 0; i < TestConfig.XFF2TF_TESTS.length; i++) {
                    suite.addTest(new XFF_2_TF("test"
                            + TestConfig.XFF2TF_TESTS[i]));
                }
                break;
            default:
                break;
            }
        } else {
            System.out.println("Did not find any tests fit with the environment.");
            System.out.println("Test over.");
            System.exit(0);
        }
        TestUtil.createBuildpack();
        junit.textui.TestRunner.run(suite);
        TestUtil.deleteBuildpack();
    }
}

4、怎么获取配置参数,且用户直接修改文件中的值,而不需要修改测试程序?

在测试的jar包同一目录下创建配置文件,如下所示。

#server系统配置
#======================================================
#分别表示主机名、Server的IP、用户名和密码,必须指定。
host = remote
server.ip = 0.0.0.0
username = root
password = toor
#======================================================

然后在程序中获取参数,如下所示。

 public static void init() throws Exception {
         String propertiesFile = null;
         Properties properties = null;
         try {
              propertiesFile = "TestConfig.properties";
              properties = new Properties();
              properties.load(new FileInputStream(propertiesFile));
              } catch (Exception e) { 
                   System.out.println("Load propertiesfile fail.");
                   throw new Exception();
              }      
              try {
                HOST = properties.getProperty("host", "");
                SERVER_IP = properties.getProperty("server.ip");
                USERNAME = properties.getProperty("username");
                PASSWORD = properties.getProperty("password");
                if ("".equals(HOST) || "".equals(SERVER_IP) || "".equals(USERNAME) || "".equals(PASSWORD)) {
                    throw new Exception();
                }
              } catch (Exception e) {
                System.out.println("There are no configuration parameters or  parameter analysis error.");
                throw new Exception();
              }
时间: 2024-10-28 16:31:15

【Junit】Web测试的相关文章

Spring测试框架JUnit搭建测试环境 不通过web服务器 初始化spring bean对象

直接使用 JUnit 测试 Spring 程序存在的不足 需要使用硬编码方式手工获取 Bean:在测试用例中,我们需要通过 ApplicationContext.getBean() 的方法从 Spirng 容器中获取需要测试的目标 Bean,并且还要进行造型操作. 数据库现场容易遭受破坏:测 试方法可能会对数据库记录进行更改操作,破坏数据库现场.虽然是针对开发数据库进行测试工作的,但如果数据操作的影响是持久的,将会形成积累效应并影响到 测试用例的再次执行.举个例子,假设在某个测试方法中往数据库插

JAVAEE——spring02:使用注解配置spring、sts插件、junit整合测试和aop演示

一.使用注解配置spring 1.步骤 1.1 导包4+2+spring-aop 1.2 为主配置文件引入新的命名空间(约束) 1.3 开启使用注解代替配置文件 1.4 在类中使用注解完成配置 2.将对象注册到容器 //<bean name="user" class="cn.itcast.bean.User" /> //@Component("user") // @Service("user") // servic

web测试与app测试的区别

看过了千里大腿的blog,再加上最近也有一些同学问我web与app测试的区别.所以在这里也献丑,写一篇随笔.希望对大家有所帮助. 笔者做了快三年的测试了.大部分时间都在做app的测试,web测试也做了半年左右.其实我觉得这两者并没有什么大的区别. 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的.那么区别在哪里呢? 我个人觉得就是由于载体不一样,所以系统测试和一些细节可能会不一样. 那么我们就要先来了解,web和app的区别. web项目,一般都是b/s架构,基于浏览器的,而app

web测试一般分为那几个阶段,哪些阶段是可以用工具实现的,都有些什么工具,哪些阶段必须要人工手动来实现呢?

这是我在知乎上遇到的一个问题: 首先这个提问本身就是有问题的, 没有哪个阶段是用工具实现的,每个阶段都是“人”用“工具”来“实现的”,每个阶段都需要“人“,也需要”工具”. 下面是我的原回答: 首先说分几个阶段:1.学习.了解产品2.计划/设计测试3.执行测试4.测试结果分析和报告 然后说工具,首先,每个阶段都可以使用工具,其次,每个阶段都需要人工介入,最后,强烈地指出,工具不可替代人类,人类使用工具. 不得不指出,有的人把测试的阶段理解成了测试的种类,题主问的可不是web测试包括哪些种类. 下

Junit指定测试执行顺序

原文链接: Test execution order原文日期: 2012年12月06日翻译日期: 2014年7月2日翻译人员: 铁锚 说明: Junit4.11版本及以后才支持,建议升级到最新版本. 按照设计原则,JUnit是不指定测试方法调用执行顺序的.目前为止,这些方法只是简单地按照反射(reflection) API返回的顺序执行.但是,使用JVM默认提供的排序是很不明智的,因为Java平台没有指定任何有规律的顺序,而事实上JDK 7可能会返回一个随机的顺序.当然,精心编写的测试代码之间并

BadBoy+JMeter来录制Web测试脚本

参考: http://jingyan.baidu.com/article/5d368d1ef548d43f61c05761.html 1.简介 JMeter是纯Java编写的软件功能和性能测试工具,其录制脚本过于笨拙和复杂. 而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放功能,同时提供图形结果分析功能,刚好弥补了JMeter的不足之处.同时Badboy录制的脚本可导出为JMeter支持的jmx格式脚本. 因此这里的web测试结合这两个工具来完成. 2.下载. http

关于JUnit的测试

把以前的笔记整理一下,做个备份方便以后查阅: 要测试的代码如下: package dao.jdbc; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet; import util.DBUtil; import dao.IAccountDAO;import entity.Account; public class AccountDAOImpl implements IAccou

eclipes使用junit进行测试

任务一,Install Junit(4.12), Hamcrest(1.3) with Eclipse 首先在网上下载Junit和Hamcrest的jar文件,Right click on the project root directory - > build path - > configure build path - > library the junit. Jar, hamcrest. Jar added 任务二,Install Eclemma with Eclipse 在my

web测试常用的用例及知识

  1.      Web测试中关于登录的测试... 1 2.      搜索功能测试用例设计... 2 3.      翻页功能测试用例... 3 4.      输入框的测试... 5 5.      Web测试的常用的检查点... 6 6.      用户及权限管理功能常规测试方法... 8 7.      Web测试之兼容性测试... 9 8.      Web测试-sql注入... 10 9.      Web测试中书写用例时要考虑的检查点... 11 10.        手机电子邮

户外物理渗透:终端机,客户端的web测试思路

现在的客户端界面越做越好看了,很多用到了web技术,轻便.界面炫.更新快,但是这样web的缺点也就出来了,就是不稳定,容易受用户等因素影响. 因为很多客户端web是内嵌的,内部通信,所以很多对安全的考虑就很少,漏洞亦较多.在此,我想跟大家分享一下客户端的web测试思路,让大家找到更多的高质量漏洞. 首先打开一个客户端界面,如腾讯的群介绍界面. 方法一:测试F5键.大家都知道F5是刷新键,按f5测试界面是否全部或部分刷新,如果刷新,很大的可能就是嵌入的web. 方法二:测试右键.网页自己特有的右键