51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1097|回复: 2
打印 上一主题 下一主题

[原创] 自动生成测试用例(上)

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:05
  • 签到天数: 1023 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-12-23 13:44:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1、概要
      软件测试的过程中,设计测试用例是必要的工作。如何快速,准确,高覆盖率的编写测试用例,是测试用例设计的关键。在测试用例的设计方法中,有等价类划分法,边界值法,正交表法等。在这些理论方法中,每种方法都有自己的优势,本文主要介绍基于正交表方法,进行测试用例的设计,并使用python 编写脚本进行实现,使测试用例的设计的过程变得清晰,简洁,自动化。
      2、正交表法简介
      2.1、什么是正交表法
      将可能影响测试结果的各种因素放在表格的每一列,并列举出可能出现的情况,再将各种场景进行排列组合,组合出所有可能出现的测试场景。比如一家生产陶瓷的公司,他们不同类型的陶土在不同的煅烧温度和时间下,会产生不同釉面的瓷器,为了测试可以产生多少种不同的瓷器,那么他们设计的正交测试表如下:

      从上表,我们可以进行全排列组合,做出测试用例,显然测试用例的条数是3×2×3=18。
      该公司的质量人员通过此表排列出测试用例,进行煅烧试验,即可得到不同场景下的测试结果。
      2.2、正交表法优点
      不同的测试用例设计方法有各自的优势,正交表法有以下优势。
      1. 设计测试用例效率高。设计测试用例即是设计表格的过程。
      2. 清晰简洁。从设计的表格中,即可一眼看出设计的逻辑。
      3. 用例的评审变得容易。传统的测试用例评审是审核一条一条的测试用例,费时费力,而正交表法设计的表格,在评审时评审表格即可,如果有需要修改的地方,增减表格中的元素即可。
      4. 节省人力资源。使测试人员从繁重的测试用例设计工作中解脱出来。
      5. 测试用例覆盖率可调节。正交表法的测试用例覆盖度取决于设计者输入的因素多少,可以通过增加减少因素,达到增加和减少测试用例的目的。
      6. 测试用例准确。人工编写的测试用例,容易出现错误,正交表的测试用例因为简洁明了,出错的机率大大降低。
      2.3、正交表法的缺点
      同样的,正交表方法也有它自己的缺点,主要缺点如下:
      因素互斥。因素存在互斥的情况下,无法进行排列组合。比如上面的表格中,假如陶土类型A不能在1500摄氏度的条件下煅烧,那么“陶土类型A“和”1500摄氏度“就不能排列组合到一起。
      流程终止。当排列组合中某个因素出现会导致测试过程终止时,此时排列组合无法进行。
      手工排列组合困难。设计表格容易,但是把各种因素手工排列组合起来困难。
      2.4、为什么选择正交表法
      基于正交表以上优点和缺点,可以得出结论,对测试人力不足的软件测试项目,为了保证覆盖率和测试工作效率,我们可以选择正交表测试法,以节省测试用例设计,评审,修改的时间。对于正交表自身存在的天然缺点,我们可以通过编写python脚本的方式进行规避和解决。下面介绍该方法的python实现。
      3、Python实现
      Python实现正交表法设计测试用例,主要解决正交表存在的上述三个问题。即:无法自动化排列组合,因素互斥,流程终止的问题。我们用python编写了case_generate工具进行了实现。
      3.1、实现自动化排列组合
      实现思路。首先设计一个excel模板,将要测试的功能的各个因素列举,如下图所示。

      之后编写Python脚本,从excel中读取每一列,然后利用Python的高级函数特性reduce函数,对每一列循环进行排列组合,得到最终的排列组合。最后再将这些排列组合输出到另外一个表格中。具体参照代码:case_generate.py。核心排列组合代码如下图:

      3.2、解决元素互斥
      实现思路:
      对于不能排列到一起的组合,我们需要添加表格背景颜色,我们规定,相同颜色的表格的元素无法排列组合到一起。如下图所示:

      上图是BaaS的重置密码功能的正交表,当重置密码的渠道是邮箱渠道时,将直接发送重置密码邮件到用户邮箱,此时管理员不需要进行重置密码的操作,因此“邮箱渠道“和”管理员重置密码“、”管理员驳回“这些操作是互斥的,因此他们的背景颜色都是黄色。
      我们编写脚本,在读取每一列的元素值时,会读取他们的表格背景颜色属性,当最后排列组合时,让带有相同颜色的元素无法排列组合到一起。具体代码参照:case_generate.py。核心代码如下所示:

      3.3、解决流程终止
      一些因素可以引起流程终止,如“管理员驳回“,当管理员驳回时。重置密码验证的操作就不用进行了。因此排列组合到”管理员驳回“这一因素时,就结束了。我们通过下面的方法解决整个问题:
      实现思路:
      对于可以引起流程终止的因素,我们在因素文字后面增加“[!]“标记,python脚本取到[!]时,会进行特殊处理,将[!]以后的因素剔除。具体代码参照:case_generate.py。核心代码如下:

      4、case_generate工具使用方法
      基于上述python实现的case_generate 工具,包含了以下脚本case_generate.py,case_transform.py,setting.ini。下面介绍该工具的使用方法论。
      4.1、使用流程图

      4.2、使用步骤
      ·Python 环境安装依赖包:xlrd 1.2.0,openpyxl
      · 对脚本工具的setting.ini的进行配置,如下图:

      在工具路径 . \case_generate\mod 下,新建一个xxxxmod.xls文件,注意:文件一定为xls 后缀,且.xls前要加mod关键字。如下图:

      打开xxxxmod.xls文件,sheet名称改为要测试的功能名称,注意:这里一定要改sheet名,否则生成的用例的功能名字会错误。如下图所示:

      在xxxxmod.xls 中设计测试用例,列举影响测试结果的各种因素,分析互斥因素并标记颜色,分析流程终止因素并标记[!],如下图所示:

      运行脚本case_generate.py,在. \case_generate\result生成正交表的排列组合表,如下图所示:

      打开生成的排列组合表,执行测试用例,添加期待结果,实际结果,用例执行结果,如下图所示:

      运行case_transform.py,在路径. \case_generate\transform 下生成可交付的case表格,如下图所示:

      至此,case_generate工具的使用流程就结束了。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情

    2024-5-20 21:29
  • 签到天数: 996 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2022-12-23 20:32:28 | 只看该作者
    66666
    比Allpares好,能自定义
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-25 02:29 , Processed in 0.073148 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表