正交表生成小工具

说明

小工具的适用对象主要是测试人员,他们日常工作中手动设计大量测试用例,工作繁杂甚至还存在覆盖不全面等问题。

为了提高他们的测试效率,该小工具可以通过输入一组多因素多水平的数据,然后查询到相应的正交表,同时映射出这组数据的测试用例。

为了方便使用,还增加了帮助、导入文件和保存结果的功能。

思路

  1. 同样需要构思布局,先分为上中下三大块

  2. 其次对每一块进行细化,上方是用户的操作区域

  3. 中间和下方显示数据

  4. 逐个实现按钮监听的事件类

  5. 完善一些异常处理,进行软件测试

  6. 打包上交

注意事项

  • 使用合适的布局格式
  • 获取/修改界面的数据
  • 数据文件的路径应使用相对路径!
  • 事件监听使用内部类可以非常方便的操作界面数据。

使用效果

  • 首先点击帮助按钮,查看使用说明
  • 复制例子的内容,粘贴到小工具的输入框
  • 点击生成按钮生成正交表和映射表。

成功映射3^4的正交表

  • 点击选择文件按钮
  • 找到符合输入规范的文本文件,点击打开
  • 会自动将文本文件的内容填充到输入框
  • 点击生成按钮生成正交表和映射表。

成功映射2^3的正交表

遇到的问题

  1. 小工具打成jar包之后,数据文件路径失效
// 通过类名的相对路径获取数据文件,Table.txt与MyGenerator类在同一个包下
URL table = MyGenerator.class.getResource("Table.txt");
File file = new File(table.toURI());
InputStreamReader input = new InputStreamReader(new FileInputStream(file));
BufferedReader bf = new BufferedReader(input);
// 处理数据

修改成输入流即可解决

// 包中使用的方式
InputStream in = MyGenerator.class.getResourceAsStream("Table.txt");
InputStreamReader input = new InputStreamReader(in);
BufferedReader bf = new BufferedReader(input);
  1. 不能生成混合正交表,处理混合因素时出了点问题
  • 解决思路:

    • 首先将输入框的数据拆分成行,得到的行数就是因子数
    • 每一行数据冒号前面是条件名称,冒号后面是水平名称列表
    • 对每一行的水平列表进行统计,将每行的水平数存入一个数组counts中
    • 对counts数组中每个数字出现的次数进行统计,将结果拼接成字符串数组
  • 举例输入

    服务器:Tomcat Apache
    操作系统:win10 Linux
    插件:小程序 微信插件
    浏览器:Chrome Firefox
    VPN:proxy6 Sockshub Luminati NewIPNow

    将输入数据按行拆分得到5行数据,即结果由5个条件决定,因子数为5。

    每一行冒号前的数据存到head数组,冒号之后的数据按空格的拆分。得到二维字符串数组

    {
    {"Tomcat", "Apache"},
    {win10", "Linux"},
    {小程序", "微信插件"},
    {Chrome", "Firefox"},
    {"proxy6", "Sockshub", "Luminati", "NewIPNow"}
    }

    对每一行统计的结果存入输入counts

    {2, 2, 2, 2, 4}

    再对counts数组进行统计,将结果拼接成字符串数组

    {"2^4", "4^1"}//表示2水平的因子有4个,4水平的因子有1个
    
    服务器:Tomcat Apache  //0 1
    操作系统:win10 Linux //0 1
    插件:小程序 微信插件 //0 1
    浏览器:Chrome Firefox //0 1
    VPN:proxy6 Sockshub Luminati NewIPNow //0 1 2 3

    查表的时候,要同时包含以上数组的每一段字符串。

    数据文件

    2^3     n=4
    000
    011
    101
    110 2^4 4^1 n=8
    00000
    00112
    01011
    01103
    10013
    10101
    11002
    11110 3^4 n=9
    0000
    0121
    0212
    1022
    1110
    1201
    2011
    2102
    2220

    锁定到2^4 4^1 n=8这一行拆分等号后面的数值,往后读取n行得到正交表

    最后映射正交表就完成核心功能。

  1. 保存为Excel文件

    • 参见POI操作

总结

解决完混合正交表之后,发现Java语言的可扩展性真的强,通过重载方法扩展查表方式,使用不同参数得到不同结果。

最后发现自己对Java常用API还不够熟悉,很多高级的数据结构都没用到。

不过相比于以前的面向百度编程, 如今已经可以通过有限的知识得到可行的解决方案。

还有为了导出Excel文件,项目升级为maven模式,引入大量依赖,打包时META-INF文件一定要与src同级

接下来学习常用API和Java高级应用。

JavaGUI练习 - 正交测试用例生成小工具的更多相关文章

  1. PyQt5-GUI生成随机生成小工具

    自己修改了代码:实现了自动生成SSN,手机号和姓名的功能 import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from ...

  2. SQL查询条件生成小工具

    最近运维数据,经常遇到需要在sql条件中个In('',''....)个字符串的情况,于是在网上找了个小工具改造一下,先用着: 效果如图: using System; using System.Coll ...

  3. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具

    这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...

  4. 【xmind converse excel】测试用例定制化小工具

    背景 公司使用jira, jira写测试用例,jira可以通过execl导入进jira, 生成测试用例,但是模板很不统一,如果只是再execl中修改,又觉得及其的麻烦,所以写了一个xmind 转化为定 ...

  5. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  6. JSON生成c#类代码小工具

    JSON生成c#类代码小工具 为什么写这么个玩意 最近的项目中需要和一个服务端程序通讯,而通讯的协议是基于流行的json,由于是.net,所以很简单的从公司代码库里找到了Newtonsoft.dll( ...

  7. Wix 安装部署教程(八) 自动生成XML小工具

    这个功能类似于Heat.exe,指定文件夹,生成对应的WIX标签.Winform做的,代码简单,生成的标签需要粘贴到对应的目录才能使用,并不是一步到位. 需要设定两个参数,一个是文件夹路径,一个是文件 ...

  8. Java生成验证码小工具

    无意中看到一个生成简易验证码的小工具类(保存学习): 工具类代码: import java.awt.BasicStroke; import java.awt.Color; import java.aw ...

  9. 原创SQlServer数据库生成简单的说明文档小工具(附源码)

    这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...

随机推荐

  1. java实现日程表

    [编程题] 某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息两天. 上级要求每个人每周的工作日和休息日必须是固定的,不能在周间变更. 此外,由于工作需要,还有如下要求: 1. 所有人的连 ...

  2. Java实现 蓝桥杯 历届试题幸运数

    问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,- 1 就是第一个幸运数. 我们从2这个数开始.把所 ...

  3. Linux用户管理命令useradd、passwd、who详解

    创建用户命令useradd 命令useradd,所在路径为: 可以看到命令useradd的路径为:/usr/sbin/useradd,因此它的执行权限是root 命令的功能是创建一个新用户,例如:us ...

  4. 深入理解JVM(③)判断对象是否还健在?

    前言 因为Java对象主要存放在Java堆里,所以垃圾收集器(Garbage Collection)在对Java堆进行回收前,第一件事情就是要确定这些对象之中哪些还"存活"着,哪些 ...

  5. 曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位?

    如何计算,一对key/value应该放在哪个哈希桶 大家都知道,hashmap底层是数组+链表(不讨论红黑树的情况),其中,这个数组,我们一般叫做哈希桶,大家如果去看jdk的源码,会发现里面有一些变量 ...

  6. 小师妹学JavaIO之:目录还是文件

    目录 简介 linux中的文件和目录 目录的基本操作 目录的进阶操作 目录的腰疼操作 总结 简介 目录和文件傻傻分不清楚,目录和文件的本质到底是什么?在java中怎么操纵目录,怎么遍历目录.本文F师兄 ...

  7. Elasticsearch 常见错误

    一 read_only_allow_delete" : "true" 当我们在向某个索引添加一条数据的时候,可能(极少情况)会碰到下面的报错: { "error ...

  8. redis的5种数据结构和基本操作

    1.字符串(string) 1.1设置值 set key value [ex seconds] [px milliseconds] [nx|xx] 例如: 127.0.0.1:6379> set ...

  9. Linux系统管理——Linux简介

    UNIX与Linux发展史 UNIX发展历史 1.1965年,美国麻省理工学院(MIT),通用电气公司(GE)及AT&T的贝尔实验室联合开发Multics工程计划,其目标是开发一种交互式的具有 ...

  10. Eureka加了secsecurity后注册失败

    报错信息: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known ...