Python实现自动生成测试用例(上)

发表于:2022-12-23 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:骄傲的雪    来源:CSDN

  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工具的使用流程就结束了。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号