软件测试字符串比较案例讨论

题目:

字符串比较的案例

1 功能需求
比较两个字符串,例如,ABCDE 和 ABFDE,用形如<…B[X]D…>来表示二者的不同之处。其中,方括号[]中的内容表示两字符串的不同之处,省略号… 给出了字符串比较时的用于显示的最短字符串阈值,在此称上下文长度。
例如,当指定上下文长度为 1 时,若要比较字符串 ABCDE 和 ABFDE,则二者的不同之处在于第3个位置处的字符C和F,显示时前后两个字符串分别以“[C]”和”[F]”表示不同之处;同时,从前往后看,相同子串是“AB”,该子串长度大于 1,因此,显示时仅保留从第 2 个位置开始的字符,其余字符用省略号代替,即为“<…B”;从后往前看,相同子串是“DE”,该子串长度也大于 1,因此,显示时仍然保留从后往前从第 2 个位置开始的字符,其余字符用省略号代替,即为“D…>”。所以最终显示的结果为:expected: <…B[C]D…> but was: <…B[F]D…>。

2 测试用例设计
请分析上述功能需求,结合边界值测试和等价类测试的基本思想,谈谈应如何设计测试
用例。

测试用例格式如下:

输入预期输出备注
上下文长度预期字符串实际字符串
     

一、题目分析

本次小组讨论的题目为比较两个字符串的不同,由于需求不明确,并且没有详尽的软件文档。为保证测试质量,我们对待测软件做出以下假设:
1、预期字符串为L1,实际字符串为L2,上下文长度为L。
 2、输入字符串为空时报错,两个都为空也报错(尽管空串相等)。且以NULL代表空。测试中如涉及到输入字符为’NULL’的,需要在前加一个/转义。
3、对于L1与L2,只输出一个不同,只做首尾字符匹配。如L1:AC与L2:ABAC,结果为expected: but was:,不考虑[AB]AC的情况。
4、当上下文长度L超出L1与L2允许的长度上限时,显示所有字符信息,不报错。
5、预期结果输出为True代表L1与L2一样、Error代表报错、expected:<> but was:<>代表显示L1与L2的不同。
6、为简化书写,min(L1,L2)代表L1与L2最短字符串的长度;max(L1,L2)代表L1与L2最长字符串的长度;<>,<>代表expected:<> but was:<>。

二、边界值测试
对于上下文长度L,有两个显而易见的边界值,下限0,和字符串最大上下文长度。最大上下文长度理论上为最大公共子串长度的一半(向下取整),但考虑到在待测数据较多且L1、L2较长的时候不好处理(难以迅速的找到这个值是多少),因此,我们将上限扩充为min(L1,L2)和max(L1,L2),结合自动化脚本使用时能更方便。

字符串的定义是由零个或多个字符组成的有限序列,因此,预期字符串L1和实际字符串L2的边界为零个字符串,即空输入。理论上讲,字符串并无字符数目上限,但实际上,由于硬件限制,还是存在数目上限的,但需求不清,硬件环境不明,且需要结合硬件,因此这里不对上限进行测试。

对于预期输出来说,只有三种情况,True、Error、expected:<> but was:<>,由于上面的边界值测试中的预期输出结果已经包含了这三种,因此不再单独进行测试。

三、等价类测试
对于本题来说,考虑到输入字符串只影响不同,而上下文长度只影响结果的显示,因此我们将上下文长度L与输入的字符串L1、L2区分,成为两个独立的问题,进行等价类测试。
首先要讨论的无效等价类,很轻松的看出来,各有一种,上下文长度L<0和输入的字符串为空。
对于有效等价类来说,因为我们允许上下文长度L超过字符串允许的上限时,显示所有的字符串,且视为正常输出,因此L>=0为所有的有效等价类。
最后是对于字符串L1和L2的等价类,我们引用以下定义:
部分连续字符串:对于一字符串C(长度为c),去掉m个连续的头部字符和n个连续的尾部字符,剩下的字符串C’的集合(0<m+n<c、m,n>0)。以ABC为例,A,AB,ABC,B,BC,C为字符串ABC的部分连续字符串。
正线性非空真子集:对于一字符串C(长度为c),按照从头到尾的顺序,随机去掉n个字符,剩下的字符串C’的集合(0<n<c)。以ABC为例,其正线性非空真子集为其部分连续字符串加上AC。
部分非连续字符串:对于一字符串C(长度为c),其正线性非空真子集减去部分连续字符串的集合,叫做部分非连续字符串。以ABC为例,其部分非连续字符串为AC。
包含/覆盖:若一字符串是另一字符串的正线性非空真子集或二者相等,称这一字符串包含/覆盖另一字符串。
因此,对于字符串自建的关系,我们可以用下面的思维导图表示(注:超星只能将图片插入在最后面):
因此,按照等价类划分的思想,我们可以将字符串L1、L2划分为T1-T7七种情况,进行测试。
理论上讲,等价类的划分需要将字符串关系划分的七中情况与上下文长度划分的情况一一组合。但由于上下文长度只有一种情况且二者独立性非常高,因此分开测试。

测试用例
分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值