精华内容
下载资源
问答
  • 我先介绍一下 jmeter 吧,jmeter 是 Apache 组织开发的基于 java 的压力测试工具,支持接口测试,压力测试,还可以做录制回放操作,操作比较简便。 2、Jmeter-How 2.1、整体流程 我先说一下 JMeter 的操作的整体...

    1、Jmeter-What
    一般情况下,我们提压力测试,通常指是指负载测试和压力测试.
    我们做压力测试,基本上会使用到工具进行测试,我常用的工具,一个是 jmeter,另外一个是 loadRunner。
    我先介绍一下 jmeter 吧,jmeter 是 Apache 组织开发的基于 java 的压力测试工具,支持接口测试,压力测试,还可以做录制回放操作,操作比较简便。

     

    2、Jmeter-How
    2.1、整体流程
    我先说一下 JMeter 的操作的整体流程吧,我们测试的时候,通常是创建一个线程组,指定并发的线程数量,然后指定要测试的接口,创建相应的监听器,比如表格结果,结果树和聚合报告信息,通过监听器来监听测试是否通过或者接口是否存在什么问题
    其中在结果树中可以监测到整体的请求信息,就拿 Http 请求这种来讲,其实就是整个 http 协议的所有信息,包括请求头,请求参数,请求路径,还有响应头,响应结果等信息。 对于表格查看结果,可以看到每个请求的简单信息,本次请求的时间,以及平均的时间。
    在聚合报告中,我们就可以看到整体的信息了。比如可以看到平均响应时间,90%Line  也就是 90%的用户请求低于的时间。还有吞吐量  TPS,还有错误率,还有用流量来计算的吞吐量。这些都可以看到。通常,聚合报告就是反应整体的数据。

    2.2、Jmeter 参数化
    做压力测试时,我们经常需要替换参数,在 Jmeter 中,有多种参数化的形式。可以在测试计划中设置全局参数,可以设置用户参数,还可以在前置处理器中设置用户参数。在进行多线程并发的时候,如果需要多个参数,可以使用 csv 配置元件。比如做登陆操作,后台有可能会限制一个用户不能重复登陆多次,如果
    演示登陆的并发操作,可以使用 Jmeter 中 csv 配置元件,将用户信息导出来,放到文件中,就可以让线程共享这些数据。另外,对于一些随机变化的参数,可以使用 Jmeter 中的函数助手,生成随机函数,进行参数化测试。比如注册这样的操作,用户名要求唯一的,那就可以使用随机函数来模拟出来。

    2.3、Jmeter 断言-检查点
    在测试中,断言操作经常用到,jmeter 的断言操作可以在请求后边设置一个断言结果,判断响应结果或者是响应状态码是否和预期的一致。

    2.4、Jmeter 逻辑控制器
    在 Jmeter 中,逻辑控制器的应用比较广泛,我们可以把一组操作放到简答控制器中,用来声明范围。也可以设置循环控制器,比如我们注册 1 次,登陆 10 次,就可以使用循环控制器。还有事务控制器,对于一个完整的事务,可以使用事务控制器来控制。

    2.5、Jmeter 定时器
    在 Jmeter 中定时器类型也比较多,我们会经常用到固定定时器,可以设置启动线程组的延迟时间是固定的。
    还有高斯定时器,这种时间是可以设置随机值。另外,还有同步定时器,同步定时器可以用来做集合点,比如设置某个线程数,等并发到了该线程值的时候,才开始执行并发任务。

    2.6、Jmeter 后置处理器,
    我们常用到的是正则表达式提取器,可以用来提取上一个请求的响应结果,用在
    下一个请求中。比如项目中会有条目展示,如果我们想要继续查看详情,就需要提取条目 id,用来做下一个请求。这里还可以用到 foreach 循环控制器来完成。

    2.7、Jmeter 插件
    对于 Jmeter 插件,常用的有场景设计插件,这个还是非常不错的一个功能。我们创建线程的时候,会设置线程组,而线程组太死板,不灵活。可以安装场景控制的插件,比如一开始延迟启动多少线程,如何递增启动线程,线程总数多少,总的测试时间多长,都可以使用场景控制插件来完成。
    对于结果监听,结果树,表格,聚合报告都不够直观,我们可以通过安装图表插件来进行结果收集。看起来更加直观一些。比如可以获取到每秒事务量的图表,获取到平均响应时间的图表,都比较人性化。
    这里有一点需要注意,就是监测服务器数据的时候,需要在服务器上启动一个插件,serverAgent,才能看到服务器的 cpu 和内存等数据。

    2.8、Jmeter 脚本录制
    对于 Jmeter 脚本录制,我掌握的有两种方式,第一,可以使用 Jmeter 内置的 http 代理服务器录制脚本,这种配置方便,但是会录制无用信息。不过好处式可以录制手机端的请求。 也可以使用第三方工具,badboy 录制,这种录制相对人性化一些,也会过滤掉一些请求,比如 jpg,css 等。

    2.9、Jmeter 数据库压力测试
    有些时候,还会用到 Jmeter 去压测数据库,当然我们不会随便压测数据库。一般是当我们压测接口的时候,发现某个接口性能比较差,再进一步判定问题的时候,会压测数据库。
    压测数据库,需要配置驱动,需要设置连接池大小,需要使用 sql 去操作数据库。如果我们想要看具体的哪条 sql 问题的话,还需要从开发那里拿到具体的 sql 进行压测。

    2.10、NON GUI 形式测试
    所谓 non GUI,就是我们不需要通过页面进行测试,这个也是我们推荐的测试方式,会提高测试机性能。或者在 linux 上,我们也没法打开图形化页面,就可以使用 NON GUI 形式的指定进行。
    可以指定脚本,可以指定生成 jtl 文件的位置,还可以生成 html 报告文档。
    Jmeter -n -t xxx.jmx(脚本文件) -l xx.jtl(生成结果文件) -e -o xxx.html

    2.11、Jmeter分布式压力测试
    在进行压测的时候,如果我们进行大并发的压测
    ,往往一台测试机是达不到这么高的并发量的。那就可以使用分布式压测方式,设置一台控制器,然后几台压力机,咱们通常叫“肉鸡”,进行压测,这种压测也并不复杂,只需要做一些简单配置。比如在肉鸡身上配置连接的端口,配置启动jmeter server ,就可以被连接测试了。在控制机 master 上我们,关联上肉鸡的 ip 和端口,就可以控制肉鸡进行分布式压力测试了。


     

     

     

     


     

     

    展开全文
  • java+mysql代码

    2018-05-13 18:56:55
    5.测试类(GameMgr)用于实现整体流程 四、具体要求及推荐实现步骤 1.创建数据库表apply_info,添加测试数据不少于4条,表结构如表1所示。 表1 报名信息表 表名 apply_info 中文表名称 报名信息表 主键 applyId ...
  • 0、需求1、前言1.1、开发环境1.1、整体流程1.2、类1.3、核心算法2、接口的设计和实现2.1、读写 txt 文件的模块2.2、SimHash 模块(核心模块)2.3、海明距离模块2.4、main 主模块3、接口部分的性能改进3.1、性能分析4...

    0、需求

    题目:论文查重

    描述如下:

    设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

    • 原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
    • 抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。

    要求输入输出采用文件输入输出,规范如下:

    • 命令行参数给出:论文原文的文件的绝对路径
    • 命令行参数给出:抄袭版论文的文件的绝对路径
    • 命令行参数给出:输出的答案文件的绝对路径

    测试样例使用方法是:orig.txt 是原文,其他 orig_add.txt 等均为抄袭版论文。

    也可以自己创建测试文件。

    注意:答案文件中输出的答案为浮点型,精确到小数点后两位

    1、前言

    1.1、开发环境

    • 编程语言:Java 14

    • IDE:Intellij IDEA 2020.1

    • 项目构建工具:maven

    • 单元测试:JUnit-4.12

    • 性能分析工具:JProfiler 9.2

    • 依赖的外部 jar 包:汉语言处理包

      <dependency>
          <groupId>com.hankcs</groupId>
          <artifactId>hanlp</artifactId>
          <version>portable-1.5.4</version>
      </dependency>
      

    1.1、整体流程

    1.2、类

    • MainPaperCheck:main 方法所在的类
    • HammingUtils:计算海明距离的类
    • SimHashUtils:计算 SimHash 值的类
    • TxtIOUtils:读写 txt 文件的工具类
    • ShortStringException:处理文本内容过短的异常类

    1.3、核心算法

    2、接口的设计和实现

    2.1、读写 txt 文件的模块

    类:TxtIOUtils

    包含了两个静态方法:

    1、readTxt:读取txt文件

    2、writeTxt:写入txt文件

    实现:都是调用 Java.io 包提供的接口,比较简单,这里省略。

    2.2、SimHash 模块(核心模块)

    类:SimHashUtils

    包含了两个静态方法:

    1、getHash:传入String,计算出它的hash值,并以字符串形式输出,(使用了MD5获得hash值)

    2、getSimHash:传入String,计算出它的simHash值,并以字符串形式输出,(需要调用 getHash 方法)

    getSimHash 是核心算法,主要流程如下:

    1、分词(使用了外部依赖 hankcs 包提供的接口)

    List<String> keywordList = HanLP.extractKeyword(str, str.length());//取出所有关键词
    

    2、获取 hash 值

    String keywordHash = getHash(keyword);
               if (keywordHash.length() < 128) {
                   // hash值可能少于128位,在低位以0补齐
                   int dif = 128 - keywordHash.length();
                   for (int j = 0; j < dif; j++) {
                       keywordHash += "0";
                   }
               }
    

    3、加权、合并

    for (int j = 0; j < v.length; j++) {
                 // 对keywordHash的每一位与'1'进行比较
                 if (keywordHash.charAt(j) == '1') {
                     //权重分10级,由词频从高到低,取权重10~0
                     v[j] += (10 - (i / (size / 10)));
                 } else {
                     v[j] -= (10 - (i / (size / 10)));
                 }
             }
    

    4、降维

    String simHash = "";// 储存返回的simHash值
            for (int j = 0; j < v.length; j++) {
                // 从高位遍历到低位
                if (v[j] <= 0) {
                    simHash += "0";
                } else {
                    simHash += "1";
                }
            }
    

    2.3、海明距离模块

    • 类:HammingUtils

    包含了两个静态方法:

    1、getHammingDistance:输入两个 simHash 值,计算出它们的海明距离 distance

    for (int i = 0; i < simHash1.length(); i++) {
                    // 每一位进行比较
                    if (simHash1.charAt(i) != simHash2.charAt(i)) {
                        distance++;
                    }
                }
    

    2、getSimilarity:输入两个 simHash 值,调用 getHammingDistance 方法得出海明距离 distance,在由 distance 计算出相似度。

    return 0.01 * (100 - distance * 100 / 128);
    

    2.4、main 主模块

    • main 方法的主要流程:
    1. 从命令行输入的路径名读取对应的文件,将文件的内容转化为对应的字符串
    2. 由字符串得出对应的 simHash值
    3. 由 simHash值求出相似度
    4. 把相似度写入最后的结果文件中
    5. 退出程序

    3、接口部分的性能改进

    3.1、性能分析

    • Overview

    • 方法的调用情况

    • 从分析图可以看到:

      调用次数最多的是com.hankcs.hanlp包提供的接口, 即分词、取关键词与计算词频花费了最多的时间。

      所以在性能上基本没有什么需要改进的。

    4、单元测试

    4.1、读写 txt 文件的模块 的测试

    • 基本思路:

      1、测试正常读取

      2、测试正常写入

      3、测试错误读取

      4、测试错误写入

    public class TxtIOUtilsTest {
        @Test
        public void readTxtTest() {
            // 路径存在,正常读取
            String str = TxtIOUtils.readTxt("D:/test/orig.txt");
            String[] strings = str.split(" ");
            for (String string : strings) {
                System.out.println(string);
            }
        }
        @Test
        public void writeTxtTest() {
            // 路径存在,正常写入
            double[] elem = {0.11, 0.22, 0.33, 0.44, 0.55};
            for (int i = 0; i < elem.length; i++) {
                TxtIOUtils.writeTxt(elem[i], "D:/test/ans.txt");
            }
        }
        @Test
        public void readTxtFailTest() {
            // 路径不存在,读取失败
            String str = TxtIOUtils.readTxt("D:/test/none.txt");
        }
        @Test
        public void writeTxtFailTest() {
            // 路径错误,写入失败
            double[] elem = {0.11, 0.22, 0.33, 0.44, 0.55};
            for (int i = 0; i < elem.length; i++) {
                TxtIOUtils.writeTxt(elem[i], "User:/test/ans.txt");
            }
        }
    }
    
    • 测试结果:

    • 代码覆盖率:

    4.2、SimHash 模块 的测试

    public class SimHashUtilsTest {
        @Test
        public void getHashTest(){
            String[] strings = {"余华", "是", "一位", "真正", "的", "作家"};
            for (String string : strings) {
                String stringHash = SimHashUtils.getHash(string);
                System.out.println(stringHash.length());
                System.out.println(stringHash);
            }
        }
        @Test
        public void getSimHashTest(){
            String str0 = TxtIOUtils.readTxt("D:/test/orig.txt");
            String str1 = TxtIOUtils.readTxt("D:/test/orig_0.8_add.txt");
            System.out.println(SimHashUtils.getSimHash(str0));
            System.out.println(SimHashUtils.getSimHash(str1));
        }
    }
    
    • 测试结果:

    • 代码覆盖率:

      (SimHashUtils 的 getHash 方法的异常 catch 测试不了)

    4.3、海明距离模块 的测试

    • 部分代码:
    public class HammingUtilsTest {
        @Test
        public void getHammingDistanceTest() {
            String str0 = TxtIOUtils.readTxt("D:/test/orig.txt");
            String str1 = TxtIOUtils.readTxt("D:/test/orig_0.8_add.txt");
            int distance = HammingUtils.getHammingDistance(SimHashUtils.getSimHash(str0), SimHashUtils.getSimHash(str1));
            System.out.println("海明距离:" + distance);
            System.out.println("相似度: " + (100 - distance * 100 / 128) + "%");
        }
    }
    
    
    • 测试结果:

    • 代码覆盖率:

    4.4、主测试 MainTest

    部分测试代码:

    public class MainTest {
        @Test
        public void origAndAllTest(){
            String[] str = new String[6];
            str[0] = TxtIOUtils.readTxt("D:/test/orig.txt");
            str[1] = TxtIOUtils.readTxt("D:/test/orig_0.8_add.txt");
            str[2] = TxtIOUtils.readTxt("D:/test/orig_0.8_del.txt");
            str[3] = TxtIOUtils.readTxt("D:/test/orig_0.8_dis_1.txt");
            str[4] = TxtIOUtils.readTxt("D:/test/orig_0.8_dis_10.txt");
            str[5] = TxtIOUtils.readTxt("D:/test/orig_0.8_dis_15.txt");
            String ansFileName = "D:/test/ansAll.txt";
            for(int i = 0; i <= 5; i++){
                double ans = HammingUtils.getSimilarity(SimHashUtils.getSimHash(str[0]), SimHashUtils.getSimHash(str[i]));
                TxtIOUtils.writeTxt(ans, ansFileName);
            }
        }
    }
    
    • 测试结果:

      • 结果文件:

    5、异常处理

    5.1、设计与实现

    当文本长度太短时,HanLp无法取得关键字,需要抛出异常。

            try{
                if(str.length() < 200) throw new ShortStringException("文本过短!");
            }catch (ShortStringException e){
                e.printStackTrace();
                return null;
            }
    

    实现了一个处理这个异常的类:ShortStringException(继承了Exception)

    public ShortStringException(String message) {
            super(message);
        }
    

    5.2、测试

    • 测试结果:

    6、PSP 表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 60 60
    · Estimate · 估计这个任务需要多少时间 60 60
    Development 开发 1120 1290
    · Analysis · 需求分析 (包括学习新技术) 300 360
    · Design Spec · 生成设计文档 70 60
    · Design Review · 设计复审 30 30
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 30
    · Design · 具体设计 90 90
    · Coding · 具体编码 300 360
    · Code Review · 代码复审 60 60
    · Test · 测试(自我测试,修改代码,提交修改) 240 300
    Reporting 报告 240 250
    · Test Repor · 测试报告 60 70
    · Size Measurement · 计算工作量 60 60
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 120 120
    · 合计 1420 1600

    7、参考

    https://blog.csdn.net/lance_yan/article/details/10304747

    https://www.cnblogs.com/huilixieqi/p/6493089.html

    展开全文
  • java 面试题 总结

    2009-09-16 08:45:34
    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
  • 整体流程 先准备Axis的相关文件(axis2-1.7.9-bin.zip) cmd到axis2/bin的目录下(启动axis2server.bat,用于测试) 执行(wsdl2java命令) wsdl2java -uri ...

    通过生成客户端的方式调用

    整体流程

    1. 先准备Axis的相关文件(axis2-1.7.9-bin.zip)
    2. cmd到axis2/bin的目录下(启动axis2server.bat,用于测试)
    3. 执行(wsdl2java命令) wsdl2java -uri "http://localhost:8080/axis2/services/Version?wsdl" -p version -o D:\version\java
    4. 新建一个maven项目,添加axis2的相关依赖jar包,将生成的java文件拷进去
    5. 编写客户端代码,测试

    参考示例

    axis2的相关依赖jar包

     <!-- webservice 远程调用接口 -->
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-transport-http</artifactId>
                <version>1.7.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-spring</artifactId>
                <version>1.7.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2</artifactId>
                <version>1.7.9</version>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-transport-local</artifactId>
                <version>1.7.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-kernel</artifactId>
                <version>1.7.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-adb</artifactId>
                <version>1.7.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.xmlbeans</groupId>
                <artifactId>xmlbeans</artifactId>
                <version>3.1.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>addressing</artifactId>
                <version>1.7.9</version>
            </dependency>

    测试类

    package version;
    
    import org.apache.axis2.AxisFault;
    
    import java.rmi.RemoteException;
    
    public class VersionTest {
        public static void main(String[] args) {
    
            try {
                VersionStub vs = new VersionStub();
                VersionStub.GetVersion request = new VersionStub.GetVersion();
                VersionStub.GetVersionResponse response = vs.getVersion(request);
                String version = response.get_return();
                System.out.println(version);
            } catch (AxisFault axisFault) {
                axisFault.printStackTrace();
            } catch (VersionExceptionException e) {
                e.printStackTrace();
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
    }
    

    返回结果

    展开全文
  • 但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
  • 基于文本界面的《开发团队调度软件》开发收获总结一 整体开发流程和框架二 封装、继承、多态的实践体会封装继承多态三 异常机制Java的两种异常处理方式自定义异常类几个需要注意的点四 单元测试在开发过程中的使用 ...


    说是项目,实际就是一个课后练习

    一 整体开发流程和框架

    1、一个软件的设计模式肯定有很多种,这次的小项目里使用的应该是比较常见的一种。分为:
    在这里插入图片描述

    (1)接口和JavaBean类的定义和实现部分;基础定义部分,定义了整个系统中包含哪些类,哪些接口
    (2)实体对象模块,假如(1)中定义了一个Employee类,这里则生成Employee对象或对象数组,基于面向对象思想,对生成的对象或对象数组进行操作
    (3)主控模块,负责菜单的显示和处理用户操作,往大了讲就是前端与用户进行交互的部分
    本次项目的编码顺序是由(1)→(3),开发文档中提供了完整的包图、功能说明还有软件演示,如果自己一个人开发项目,如何生成这样的开发文档也是重要的工作,是开始编码前必经的步骤
    在这里插入图片描述

    二 封装、继承、多态的实践体会

    这三点是面向对象编程语言的主要特点,项目虽小但三点均有所体现,编码过程有些朦胧的感觉,好像对它们有了更深地理解,又说不上来,所以试着写下来看看能否理清。

    封装

    1. 专业解释
      封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随意访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
    • 2. 封装的优点
      • 良好的封装能够减少耦合。
      • 类内部的结构可以自由修改。
      • 可以对成员变量进行更精确的控制。
      • 隐藏信息,实现细节。
    1. 从字面意思理解,封装就是把一个东西封起来变成一个黑盒子。
      (1)从使用者的角度看
      比如,手机可以实现很多功能,这就是一个被封装好的东西,我们可以用它上网,拍照,但是我们并不清楚是如何实现这些功能的;里面有很多零件,我们也不会拆开看看这些零件都是怎么回事,更不会想着换掉哪个。
      (2)从开发者的角度看
      类和接口都是封装思想的体现。不同于使用者,作为开发人员,肯定知道里面有什么零件,而为了避免一些使用者随便拆换里面的零件和电路导致整个手机系统出现问题。就要想办法把零件藏起来,方法就是使用private修饰词。
      只把实现的功能向使用者开发,方法就是使用public修饰词。
    2. 本次项目中所有类的属性都被定义成private,这是就是封装思想的体现,我觉得在一定角度来讲,Java的封装性 = private修饰词

    继承

    1. 主要体现在子类(当然接口的实现也是):程序员属于员工,两者有很多相同的属性和方法,但是又有自己独特的技能——编程,为了减少重复的定义,就让程序员在员工的基础上进行定义,这样只需添加一个额外的“编程”方法就可以了;
    2. 因为有相同的部分所以至少要调用一次父类的初始化;
    3. 而同一个行为,程序员和员工也有不同的实现方式,比如同样吃午饭,一个需要去食堂,一个定外卖,这样就需要进行方法的重写
    4. 继承也是多态实现的基础,可以说继承是java面向对象编程技术的一块基石
    • 5. 继承的特性
      • 子类拥有父类非private的属性、方法
      • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
      • 子类可以用自己的方式实现父类的方法
      • Java的继承只能是单继承,但是可以多重继承

    多态

    1. 之前我一直想不通多态有什么作用,这次小项目算是其中一个例子
      比如一个公司中有普通程序员、软件设计师、架构师,他们都属于程序员这一大类,但是又不是完成相同的;
      我现在想组件一个开发团队,他们三者都可以加入,在发布标准的时候与其说“普通程序员、软件设计师、架构师都满足条件”不如说“凡是程序员都可以来!”
    2. 结合上面的例子,多态可以从字面理解成“多种形态”,
      多态也可以理解为同一个接口,使用不同的实例而执行不同操作
      在这里插入图片描述
    • 3. 多态的优点
      • 消除类型之间的耦合关系
      • 可替换性
      • 可扩充性
      • 接口性
      • 灵活性
      • 简化性

    三 异常机制

    Java的两种异常处理方式

    1. throw抛出机制 和 try/catch处理机制
      (1)throw抛出机制:从语法的角度来说,可以在方法体中的任何地方抛出异常,不过需要所在类别进行捕获,throw只会将异常上报,不会进行处理
      (2)try/catch处理机制:throw不断上报,那最终总需要这个机制进行处理
      (3)两者在开发中的使用位置
      以本次项目来说,只在主控模块使用了try/catch机制进行异常处理,其他地方只使用throw进行异常抛出;而在更复杂的项目中,应该是会在类似于单元集成的部分使用try/catch机制进行集中处理,其他位置则使用throw进行抛出

    自定义异常类几个需要注意的点

    (1)需要继承于Exception或者RunTimeException类
    (2)需要定义一个全局常量作为自定义异常类的编号
    private static final long serialVersionUID = 1L;
    (3)一般需要提供一个有参数的构造方法

    四 单元测试在开发过程中的使用

    不需要每完成一部分功能就编写main函数进行测试,Java中提供了单元测试单元测试部分一般会新建一个单元测试包
    目前使用的Eclipse集成开发环境使用集成测试的方法:

    1. 自动添加
      (1)在待测试的方法上一行添加注解@Test,根据提示点击自动导入环境
      (2)双击待测试方法名,右键Run as → Junit Test
    2. 手动添加环境(还是有必要了解一下)
      (1)选中项目,右键单击
      (2)选中Build Path ->Configure Build Path…这个选项
      (3)选择 Libraries 这个选项,然后点击Add library
      (4)选择Junit 这个选项
      (5)选择Junit4(Junit5两者的区别还没有查过)
      (6)最后点击 Apply and Close
      (7)上一步后项目下面会有一个Junit 4出现,在当前类中使用import导入这个路径import org.junit.Test;
    展开全文
  • Fizz Gateway 是一个基于 Java开发的微服务网关,能够实现热服务编排、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化...
  • 第05节、使用Runnable接口方式创建线程 第06节、使用匿名内部类方式创建线程 第07节、多线程常用api 第08节、守护线程与非守护线程 第09节、多线程几种状态 第10节、join方法介绍 第11节、t1、t2、t3执行顺序面试题...
  • 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要功能流程描述 17.2 系统设计 17.2.1 技术框架选择 17.2.2 Web目录结构及类包结构规划 17.2.3 单元测试类包结构规划 17.2.4 系统的结构图 17.2.5 PO的类设计...
  • 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要功能流程描述 17.2 系统设计 17.2.1 技术框架选择 17.2.2 Web目录结构及类包结构规划 17.2.3 单元测试类包结构规划 17.2.4 系统的结构图 17.2.5 PO的类设计...
  • 支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,入门简单 相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试 多平台支持,可在Linux,Windows,Mac上运行 5.Jmeter安装配置及...
  • │ └─接口模拟测试 │ └─表格合计示例 │ └─异步树列表示例 │ └─一对多JEditable │ └─JEditable组件示例 │ └─图片拖拽排序 │ └─图片翻页 │ └─图片预览 │ └─PDF预览 │ └─分屏功能 │─...
  • 第1部分概述 1 1 交易型系统设计的一些原则 2 1.1 高并发原则 3 1.1.1 无状态 3 1.1.2 拆分 3 1.1.3 服务化 4 1.1.4 消息队列 4 1.1.5 数据异构 6 1.1.6 缓存银弹 7 1.1.7 并发化 9 ...21.6.5 测试 442
  • AisMVC.zip

    2019-06-17 15:42:52
    #AisMVC,一款仿SpringMVC框架的轻便快捷的Java MVC开发框架 ####前言 * 写这个框架的意义在于过去使用springmvc框架作为项目中的Controller层...* 1.7 修改部分目录结构,画框架整体流程图,后面继续做容错处理和性能优化
  • 软件工程教程

    2012-07-06 23:10:29
    通过演示及讲述,讲解课程设计的整体情况,针对其设计提出一些技术及细节问题确认是否真正理解课程设计中的要点、是否掌握了进行系统设计的知识和能力、是否本人完成。如通发现没有真正设计或者不清楚技术细节,则...
  • 对于Java应用来说,ElasticSearch在全文搜索方面是一把“利器”。本章节会将带领学员了解全文搜索的概念,并熟悉如何用ElasticSearch来实现全文搜索。 第8章 架构设计与分层 本章节讲解了系统的整体架构设计思路,...
  • 对于Java应用来说,ElasticSearch在全文搜索方面是一把“利器”。 本章节会将带领学员了解全文搜索的概念,并熟悉如何用ElasticSearch来实现全文搜索。 第8章 架构设计与分层 本章节讲解了系统的整体架构设计思路...
  • 支持在线测试,验证接口准确性。 多维度日志查询 提供管理界面,支持多维度数据变迁历史查询。 主要功能 信息查询功能 包括配置查询、综合查询、日志查询。 配置管理功能 包括配置信息管理、基础配置查询、...
  • 主要职责:完成app的设计、开发、测试、修改bug等工作,包括业务需求的沟通,功能模块详细设计,业务功能实现与单元测试。 除了担任iOS工程师角色外,还担任过项目经理,以及维护支付平台的UI后台管理系统。UI对...
  • 从项目配置,应用的编写,再到测试用例,最后运行项目。方面学员了解整个编码的流程。 第4章 开发环境的搭建 为了让实战过程更顺利,避免不要的问题,这里会先将课程所要求的环境进行一个讲解,并要求学员最好跟随...
  • Ext Js权威指南(.zip.001

    2014-09-26 05:57:25
    1.2.6 在java中使用json / 12 1.2.7 更多有关json的信息 / 15 1.3 ext js 4概述 / 15 1.4 ext js的开发工具的获取、安装与配置介绍 / 18 1.4.1 ext designer / 18 1.4.2 在visual studio中实现智能提示 / 23 ...
  • Dreamweaver能与您喜爱的设计工具,如Playback Flash,Shockwave和外挂模组等搭配,不需离开Dreamweaver便可完成,整体运用流程自然顺畅。除此之外,只要单击便可使Dreamweaver自动开启Firework或Photoshop来进行...
  • 详细设计说明书

    2013-04-15 16:09:28
    明确任务和需求,使得软件开发人员知道软件开发流程,软件测试时更有条理 1.2 读者对象 描述该文档的阅读对象。 1.3 参考文档 描述该文档的参考文档。 1.4 术语与缩写 描述该文档的术语及解释。 2 系统概述 2.1 模块...
  • 9.7 性能测试 / 181 9.8 参考资料 / 182 10 HTTP缓存 / 183 10.1 简介 / 183 10.2 HTTP缓存 / 184 10.2.1 Last-Modified / 184 10.2.2 ETag / 190 10.2.3 总结 / 192 10.3 HttpClient客户端缓存 / 192 10.3.1 主流程...
  • 项目整体架构模式采用:组件化+MVP+Rx+Retrofit+design+Dagger2+阿里VLayout+腾讯X5+腾讯bugly 包含的模块:wanAndroid【kotlin】+干货集中营+知乎日报+番茄Todo+微信精选新闻+豆瓣音乐电影小说+小说读书+简易记事本...
  • 3 年经验的 Java 后端妹子,横扫阿里、滴滴、美团,看完面经我觉得敖丙是垃圾! 2020 字节跳动后端面经分享!已拿 offer! 春招字节跳动、蘑菇街四轮面试,分别问了啥? 敖丙8年经验读者,疫情期间面20家大厂总结 ...

空空如也

空空如也

1 2 3
收藏数 57
精华内容 22
关键字:

java接口测试整体流程

java 订阅