黑盒测试仅关注输入和输出,将程序看成一个黑盒子。在不遗漏需求的情况下,打开这个黑盒子,从代码实现的角度进行分析,可以更好的理解测试用例,帮助我们完善测试用例设计,更好地提升测试效果。

下面小编从一元多项式的加法和乘法运算程序进行系统阐述思路。

程序功能描述:设计程序分别求两个一元多项式的乘积与和。

(1)Input :输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数,数字间以空格分隔

(2)Output:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。零多项式应输出 0,0

(3)举例:

执行加法运算后的结果:

(4)程序输入及预期输出

Input:

3 9 12 15 8 3 2

4 26 19 -4 8 -13 6 82 0

Output:

234 31 390 27 78 21 -36 20 -117 18 -60 16 -195 14 738 12 -12 10 1191 8 246 2

26 19 9 12 11 8 -13 6 3 2 82 0

一、程序框架思考

(1)数据结构使用链表:链表较数组灵活、但较容易出错,因此比较适合在本文举例:

(2)程序架构如下:

i. 通过Creat( ) 函数构建链表,存储数据

ii. 通过multiple( ) 函数执行乘法运算并返回结果

iii. 通过add( ) 函数执行加法运算并返回结果

iv. 通过PrintLink( ) 函数打印结果

结合程序功能,从实现难度来看,multiple( ) 可能更容易出错。各子函数的具体实现在此不表,后面会结合测试点进行详细的阐述。

二、测试验证

1. 临界测试:录入 空多项式 运行程序,可以看到输出数据发生了混乱。

分析:通过排查代码发现,由于没有考虑 空指针场景(头指针的Next指向为NULL),指针指向了未知内存空间,导致数据异常。另外需要说明,空指针也会引发段错误 segmentation fault,这是我们在测试过程中、特别是项目初期较多遇到的情况:指针为空引发程序崩溃。

解决方法:增加头指针的Next为NULL的判定和处理。

2. 等价类测试

I. add( )

对于加法函数,它需要考虑三种基本情况:两个一元多项式进行比较,i.前者系数大于后者 ii.前者系数等于后者 iii.前者系数小于后者。If语句的三个分支对应了三个等价类测试点。

相较 i , iii 两种情况,问题容易出现在 ii 两者系数相等:这里需要考虑一个较特殊的场景,当相加后的系数为0时,相关数据不记录,同时需要通过free( ) 函数释放对应的内存空间。

因此在设计对应的测试用例时,需要考虑系数相加为0的场景,在判定输出的同时,同步关注内存占用情况。

II. multiple( )

乘法函数较加法函数复杂一些,需要通过两层while循环 、 insert() 子函数完成功能实现:

两层while循环模拟 两个一元多项式相乘的步骤,insert( ) 将产生的结果插入到结果链表中。因此需要同步关注insert( )子函数。没有在multiple( )中直接实现insert功能,是程序编写的基本规则:避免代码冗余、增加灵活性。Insert( )部分代码如下:

我们可以看到,这里的测试点类似于add( )函数,也需要考虑三种情况:指数大于、指数小于、指数相等。其中 系数相等的情况,会触发系数相加操作,当结果为0时,需要通过free( )函数进行内存释放。

因此在设计测试用例时,需要进行全面考虑,不要遗漏系数相加为0的场景,同步关注内存占用。

3. 关于循环

分支和循环是程序代码中最常见的两个场景,从灰盒测试角度,分支对应于测试设计中的等价类划分,循环可以对应边界值。

程序可能会在分支或循环处发生异常,比如没有正常退出循环,严重情况会导致程序崩溃,程序进入死循环。

举个栗子

描述:执行连接操作,人为使Sender进程异常,Receiver会反复执行重连尝试,点击 连接取消 按钮,但是Receiver仍然继续执行重连。

三、一点思考

由于测试的入门门槛较低,测试工程师更需要做好自身技能储备,提升竞争力,作者建议从如下几个方面进行提升:

1. 凡事多思考,多考虑为什么?尝试弄清楚背后的原因。

2. 软件版本没有测试出严重故障,并不代表没有严重故障,可能是没有在实验环境暴露或存在测试疏漏。因此还是要多思考、多使用,以期充分暴露产品缺陷。

3. 增加自动化意识:凡是重复的操作都可以尝试通过自动化代替。我们可以从windows bat , Linux sh脚本处一点点做起:积沙成塔。但是要考虑性价比,从长期考虑,如果自动化的时间成本远远大于手动成本,那就维持手动。

4. 从代码层面进行提升,至少熟练掌握一门编程语言(如C++),同时对数据结构有比较深入的理解。在工作之余,培养刷题的习惯:可以在牛客网、PTA、OpenJudge等网站进行编程实操,认真分析Not Accepted原因 及 编程网站的测试用例,反推出自己编程时的漏洞,据此完善自己的逻辑思维能力,强化测试用例编写时的逻辑性和全面性。

【重点来了】!!请不要忘记时刻学习着~~这点我相信大家应该都能理解,所以不用写什么:除非你是五年、十年工作经验的测试人员,仅此一点“不学习就会落后”!

现在我邀请你进入我们的软件测试学习交流群,备注“入群”,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

参与方式:https://mp.weixin.qq.com/s/TejfWmGJpjXClaOB3CUPKg

黑盒测试c语言用例,功能(黑盒)测试方法实战:如何从代码角度编写测试用例?...相关推荐

  1. 软件测试黑盒代码,打开测试黑盒,从代码角度编写测试用例!

    摘要:黑盒测试仅关注输入和输出,将程序看成一个黑盒子.在不遗漏需求的情况下,打开这个黑盒子,从代码实现的角度进行分析,可以更好的理解测试用例,帮助我们完善测试用例设计,更好地提升测试效果. 本文从一元 ...

  2. 黑盒测试c语言用例,黑盒测试用例设计技术包括_测试用例包括什么_常用黑盒测试用例设计(4)...

    因此,可以把全部输入数据合理地划分为若 干等价类,在每一个等价类中取一个数据作为测试的 输入条件,这样就可以用少量的代表性测试数据,来 取得较好的测试结果.黑盒测试用例设计技术包括 * 是指对于程序的 ...

  3. php 单例类 mysql pdo_PHP实战:PHP基于单例模式编写PDO类的方法

    <PHP实战:PHP基于单例模式编写PDO类的方法>要点: 本文介绍了PHP实战:PHP基于单例模式编写PDO类的方法,希望对您有用.如果有疑问,可以联系我们. 一.单例模式简介 简单的说 ...

  4. 黑盒测试概念简述,黑盒测试优缺点、黑盒用例设计方法简单介绍及黑盒测试方法使用总结

    黑色测试 黑盒测试概念: 黑盒的优缺点介绍: 黑盒测试用例设计方法简单介绍: 黑盒测试方法使用总结: 黑盒测试概念: 又称功能测试或数据驱动测试,是用来检测每个功能是否正常使用.黑盒测试主要意味着测试 ...

  5. 软件测试方法——黑盒测试九大用例设计方法

    笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 笔者原创,文章转载需注明,如果喜欢请点赞+关注,感谢支持! 导读:面试和工作必备的九大黑盒软件测试方法. 目 ...

  6. 深圳软件测试 黑盒测试,深圳软件测试培训:常用控件黑盒测试方法有哪些?...

    深圳软件测试培训(sz.qa.tedu.cn)专家就针对常用控件黑盒测试方法有哪些这一问题做一个详细的分解.希望能在工作中对你有所帮助! 1.常用控件有哪些 文本框,复选框,按钮,单选按钮,列表框,组 ...

  7. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  8. 『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!

    文章目录 一.等价类划分法 1.定义 2.等价类划分法步骤 3.设计测试用例步骤 4.案例:学生选修课程 二.边界值分析法 1.边界值分析法概述 2.设计测试用例 3.边界值设计原则 三.错误推测法 ...

  9. 【测试】详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)

    文章目录 前言 接口测试是什么 HTTP接口的测试用例设计 接口用例设计小结 HTTP接口的测试方法 手工测试 自动化测试 接口测试策略 结束语 前言 大家好,我是洋子.在之前的文章<详解接口测 ...

最新文章

  1. TCP和UDP基本原理
  2. PHP垃圾回收机制防止内存溢出
  3. 标准日本语初级上第一单元 第一课[李さんは 中国人です]
  4. SQL Server 批量插入数据的两种方法(转)
  5. jedis取存 数据库查到的对象_Mysql数据库索引BAT面试必问
  6. 小猿圈web前端之网站性能优化方案
  7. android 系统(20)---背光灯
  8. 解决log4j:WARN Error initializing output writer. log4j:WARN Unsupported encoding?的问题
  9. CQOI 2016 不同的最小割
  10. mqtt实例 php_php搭建MQtt协议服务
  11. 关于面试,关于大学——大四狗的自述
  12. paip.c++ tree parse tpath解析器
  13. C-Free 5.0注册码
  14. Java函数参数传递方式
  15. 三星 android驱动安装失败,三星安卓手机usb驱动安装教程
  16. 关于word与wps可共用的的快捷键
  17. openwrt 开启KV漫游
  18. Python运行常用平台有哪些?
  19. 十分钟搞清字符集和字符编码
  20. TFS2010用户解锁

热门文章

  1. String, StringBuffer, and StringBuilder
  2. 锂电池行业锂溶液除杂的原理分析
  3. 一次艰辛的算法分析---------飘零4.0封包分析
  4. Lucene 8.x 中文分词基本使用
  5. 你准备好结婚了吗(好文,强烈推荐)
  6. 怎么在短时间内提高计算机水平,五个有效方法让电脑运行速度瞬间提升数倍
  7. Css3位移动画效果
  8. Username for ‘https://gitee.com‘:
  9. 2021-04-18:怎么实时查看GPU状态
  10. windows10中java调用python脚本