软件测试2个月能学会吗 黑盒测试用例

黑盒测试用例(你能在2个月的软件测试后学会它吗)
黑盒测试只关注输入和输出,将程序视为黑盒 。在不遗漏需求的情况下,打开这个黑匣子,从代码实现的角度进行分析,可以帮助我们更好地理解测试用例,改进测试用例设计,提高测试效果 。
下面小编从一元多项式的加法和乘法程序系统阐述思路 。
功能描述:设计程序分别求两个一元多项式的积和 。
(1)输入:输入分两行,每行先给出多项式非零项的个数,然后以指数递减的方式输入一个多项式非零项系数和指数,数字之间用空隔开
(2)输出:输出分为两行,分别以指数递减的方式输出乘积多项式和和多项式非零项的系数和指数 。零多项式应该输出0,0 。
(3)例子:
执行加法后的结果:
(4)程序输入和预期输出
输入:
3 9 12 15 8 3 2
4 26 19 -4 8 -13 6 82 0
输出:
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()函数建立一个链表来存储数据
二 。通过multiple()函数执行乘法运算并返回结果 。
三 。通过add()函数执行加法运算并返回结果
四 。通过PrintLink()函数打印结果
结合程序的功能,从实现的难度来说,multiple()可能更容易出错 。每个子功能的具体实现这里不做展示,后面会结合测试点详细讲解 。
二、测试验证
1.关键性测试:输入空多项式运行程序,可以看到输出数据混乱 。
分析:通过对代码进行故障排除,发现由于没有考虑空指针场景(头指针的下一点为空),指针指向未知内存空,导致数据异常 。另外需要注意的是空指针还会造成段错误分段故障,这是测试过程中常见的情况,尤其是在项目前期:指针空会导致程序崩溃 。
解决方法:增加头指针下一个空的判定和处理 。
2.等价类测试
一.添加( )
对于可加函数,需要考虑三种基本情况:比较两个一元多项式,I .前者系数大于后者,ii .前者系数等于后者,iii 。前者的系数小于后者 。If语句的三个分支对应三个等价的测试点 。
与I和iiI的情况相比,当iI的系数相等时,容易出现问题:这里,我们需要考虑一个特殊的场景 。当添加的系数为0时,相关数据不会被记录,对应的内存空需要通过free()函数释放 。
因此,在设计相应的测试用例时,需要考虑系数相加为0的场景,在判断输出的同时,也要同步关注内存占用情况 。
二 。多重( )
乘法函数比加法函数复杂,需要通过while循环和insert()子函数两层来实现:
两级while循环模拟两个一元多项式相乘的步骤,insert()将生成的结果插入到结果链表中 。所以需要同步关注insert()子功能 。multiple()中没有直接实现insert函数,这是编程的基本规则:避免代码冗余,增加灵活性 。Insert()代码的一部分如下:
我们可以看到,这里的测试点类似于add()函数,需要考虑三种情况:指数大于、指数小于和指数等于 。如果指数相等,将触发系数加法运算 。当结果为0时,需要free()函数来释放内存 。
所以在设计测试用例的时候,要综合考虑,不能漏掉系数加起来为0的场景,还要同步关注内存占用情况 。
3.关于流通
分支和循环是程序代码中最常见的两种情况 。从灰盒测试的角度来看,分支对应测试设计中的等价类划分,循环可以对应边界值 。
程序可能在分支或循环处出现异常,比如没有正常退出循环 。严重的情况下,程序会崩溃,进入无限循环 。
例如
描述:执行连接操作,发送方进程人为异常 。接收器将执行重复的重新连接尝试,并单击连接取消按钮,但接收器仍继续执行重新连接 。
分析:点击取消按钮后,循环没有终止,取消操作中代码丢失,导致循环非正常终止 。
第三,一点思考
由于测试的准入门槛较低,测试工程师需要储备自己的技能,提升自己的竞争力 。作者建议以下几个方面作为改进的基础:
1.凡事多想想,为什么?想办法弄清楚背后的原因 。
2.软件版本没有经过严重故障测试,不代表没有严重故障 。可能是没有在实验环境中暴露过或者有一些测试疏漏 。所以要多思考,多使用,才能充分暴露产品缺陷 。
3.增加自动化意识:所有重复的操作都可以用自动化代替 。我们可以从Windows BAT和Linux SH脚本开始:积沙成塔 。但是考虑到性价比 。从长远来看,如果自动化的时间成本远大于人工成本,就保持人工 。


推荐阅读