专栏首页搜狗测试判定表case的自动化用例设计

判定表case的自动化用例设计

大家好,小编今天和大家分享一个自己编写的自动化测试工具,主要解决的问题是如何遍历测试用例中“判定表”方法设计出来的case。

列举一个需求: 有一个开关下发的网络接口,针对以下条件给用户下发音乐开关: 1、 手机厂商满足:xiaomi,oppo,vivo 2、 且Androidid尾号为:1、2、3、4、5、6 3、 且地区必须是北京,上海,广州 下发的音乐开关的key、value分别是“music”,“1”。

观察该需求,我选择采用判定表的方法来设计测试用例,详情如下:

通过上表进行用例设计。满足下发的条件一共有3*6*3=54条,如果每一类各设计一个反向条件,则总case数量为4*7*4=112条。

如果通过黑盒的方式全部遍历这112条case,时间人力消耗就太大了,考虑到该接口的测试需求较频繁,于是考虑用自动化的手段进行测试。

自动化工具的设计主要有以下三个步骤: 1、条件输入:全部case条件的录入; 2、测试执行:对所有条件全部遍历组case,进行测试验证; 3、结果输出:对测试结果进行校验、排版输出。

一、条件输入: 首先由于该接口使用频率较高,于是计划设计一个完整的工具,通过wxpython进行GUI的绘制(wxpython使用说明:https://www.yiibai.com/wxpython/wxpython_environment.html),做出来的界面如下:

条件框中可以多个条件填写,通过“;”隔开,使用GetValue()方法时通过split进行拆分; 引用刚刚的例子,待查询关键字:“music”,预期结果:“1”。

二、测试执行: 首先将所有正向、反向条件分别用数组接收,然后进行遍历组合,我在这里遇到了一个困难, 如果仅仅是例子中的3重条件,那么嵌套3次循环即可。但是以后的需求条件可能会有很多,每增加一组条件就要修改脚本增加一重循环,对脚本的易用性有很大影响,通过查询python库找到了一个更有效的方法:python的itertools模块,使用方法如下:

从图中可以看出,该模块循环可以将所有list进行全部组合的排列输出,获取到所有的条件后,将条件组合成对应case并作为body进行request上传,接收返回的内容准备输出结果。

三、结果输出: 收到返回后,进行实际结果和预期的判断,主要有两种case 1、正确路径:全部条件正确case,结果如果命中预期则返回True,否则False; 2、错误路径:如果有一个非下发case,结果如果仍命中预期则返回False,否则返回True。 将结果进行排版输出到excel中,大概效果如下:

本次案例属于接口测试,但工具的设计理念不仅仅适用接口验证,利用itertools的数组全组合能力实现判定表的所有条件遍历,在功能回归的多条件自动化测试上也可以使用,解放双手,并保证测试case覆盖率达到100%。

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:Lethe

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 软件性能测试方案-性能测试工具选型

    在往期文章《软件性能测试方案-性能测试准备》介绍了前期性能测试准备的要点,本文主要介绍性能测试工具的选型。

    用户5521279
  • Cypress实践记录

    前一段时间,在前端开发同学的推荐下,了解到一个前端自动化测试工具Cypress,趁着这个机会,将自己的调研记录以及在项目上的实践进行总结。如果想了解...

    用户5521279
  • 推进开发改进提测质量的一点心得和思考

    不知道各位测试同学是否被开发同学的提测质量困扰过?在经历了一个版本800多个bug,原计划一个月测完,结果测了2个半月的痛苦经历之后,对提测质量的把控进行了一定...

    用户5521279
  • 使用JMeter对网站和数据库进行压力测试

    前言 表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?...

    菲宇
  • 经典面试题-如何用基于XML配置的方式配置Spring?

    下面这个web.xml仅仅配置了DispatcherServlet,这件最简单的配置便能满足应用程序配置运行时组件的需求。

    cwl_java
  • 是什么影响了数据库索引选型?

    上一篇文章我们介绍了索引背后的数据结构,这篇文章我们来介绍影响索引数据结构选型的因素——存储器存取。

    撸码那些事
  • 每天都加班!月薪过万程序员商场偷衣服减压找刺激

    据浙江电视台报道,前不久,杭州某商圈的柜员发现两件衣服连同衣架消失了,总计3000多元。朝晖路派出所民警查看监控,锁定嫌疑人张某。张某交代,他是杭州某企业的程序...

    用户5997198
  • MySQL是怎么保证数据一致性的

    在《写数据库同时发mq消息事务一致性的一种解决方案》一文的方案中把分布式事务巧妙转成了数据库事务。我们都知道关系型数据库事务能保证数据一致性,那数据库到底是怎么...

    普通程序员
  • 线程池(领导者-追随者,生产者-消费者等)小结

    这个模型其实并不难于理解,但是我想假如是中国人给起的名字的话,也许会叫作 "皇帝轮流做,今年到我家" 模型更加贴切,因为领导者追随者之间是一种平等的关系。这不符...

    阳光岛主
  • 为什么很多开发游戏的程序员选择半路转行?

    作为一个在软件行业混迹了十几年的老码农,只能讲不仅仅是游戏行业程序员在深坑里,国内很多程序员都在坑里呆着那,特别是战斗在互联网公司的程序员兄弟们,几乎天天都是加...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券