zoukankan      html  css  js  c++  java
  • JavaGUI练习

    正交表生成小工具

    说明

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

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

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

    思路

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

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

    3. 中间和下方显示数据

      image-20200520152545958

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

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

    6. 打包上交

    注意事项

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

    使用效果

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

    image-20200520154918991

    成功映射3^4的正交表

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

    image-20200520155036416

    image-20200520155430286

    成功映射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行得到正交表

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

      image-20200520181119136

    1. 保存为Excel文件

      • 参见POI操作

      image-20200522170625785

    总结

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

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

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

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

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

  • 相关阅读:
    C#开源实现MJPEG流传输
    EntityFramework中使用Repository装饰器
    Lambda应用设计模式
    Lambda表达式的前世今生
    那些年黑了你的微软BUG
    敏捷软件开发揭秘
    SVN previous operation has not finished
    NodeJS+Express开发web,为什么中文显示为乱码
    使用Visual Studio 调试断点不起作用的问题解决办法 调试Revit CAD 不能进入断点
    openFileDialog的Filter属性设置
  • 原文地址:https://www.cnblogs.com/1101-/p/13019281.html
Copyright © 2011-2022 走看看