51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3226|回复: 9
打印 上一主题 下一主题

[讨论] 设计测试用例的时候,是否需要考虑中间数据加工的正确性?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-28 17:33:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设计测试用例的时候,为如下问题所困惑:是否需要考虑程序处理过程中对数据加工的正确性?

    举个例子:
程序A接受用户的输入信息(如手机号码),经过一些处理之后保存到数据库表T,之后程序B从表T获取该数据进行处理并显示。

    假设:
    程序A是已经实现并使用了较长时间的程序,满足了如下需求:只接受11位的手机号码(数字);自动过滤左右的空格;保存在数据库表T;表T的手机号码字段类型为varchar2(24);
    程序B为新开发的程序,需要满足如下需求:显示结果,不带+86之类的前缀,11位,不够11位时右补空格填充。

    那么:
    测试程序B的时候,是否需要考虑程序B从表T获得不规则数据的情况?如:获得+86的手机号码,号码少一位(10位),号码多一位(12位),号码含非数字字符,其他等等。

    同事认为,应该单独构造程序B的测试数据,即通过手动方式修改表T的数据,满足上述的各种不规则情形来测试程序B的处理情况。
    但是我感到疑惑,程序A是经过了充分测试的,保存到表T的数据(手机号码)很难出现不规测数据的情况,采用这种测试方式,是否加大程序B的负担呢?是否需要怀疑程序A在保存数据到表T时处理失误呢?
     
    上述不解之处,请大家指点迷津,十分感谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2020-8-11 08:18
  • 签到天数: 114 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
    发表于 2007-10-28 17:57:38 | 只看该作者
    根据lz的叙述我的理解是程序A最终写入表t的数据只能是11位的手机号码
    如果表中有非法数据的话只能是人为修改数据库造成的

    这样的话似乎设计有些问题
    首先为啥是24位的varchar
    其次为什么不在手机号码字段加上条件约束
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-8-11 08:18
  • 签到天数: 114 天

    连续签到: 1 天

    [LV.6]测试旅长

    3#
    发表于 2007-10-28 17:58:48 | 只看该作者
    汗。。。按的太快了
    建议把条件约束加上
    这样可以防止脏数据的产生
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-10-28 19:31:32 | 只看该作者
    这个事情应该是这样:
    理论上说如果A保存的数据是合法而且经过了稳定的测试,那么B这里就不需要不规则输入。
    但是,嗯嗯,但是来了:
    作为B程序是不是需要这样的测试要看B的设计规范,如果设计规范中B有对这样的非法输入作出应对,那肯定要测的,如果没有,那么应该请开发加上去,如果出现这样的非法输入,程序是处理还是忽略还是什么。作为一份DDS,应该要明确这些的。
    作为实际情况种来说,可能B不只处理A的输出,或者将来可能会用到别的地方,那么不管怎么说,它如何应对各种输入应该有明确的。如果开发明确B不需要处理非法数据,并且落实到文档,那么自然不用测了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-10-28 21:43:48 | 只看该作者
    讨论的真不错

    学习中......
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-10-29 09:03:45 | 只看该作者
    虽然程序A是经过了充分测试,就能保证一定不出现不规则数据吗?测试是不可穷举的。所以我认为还是应该构造一些不规则数据来测试。这相当于一个接口,必须将其覆盖到。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2007-10-29 09:22:42 | 只看该作者
    多谢两位的建议
    关于表T的字段类型问题,我也不清楚为什么是varchar2(24),因为这个系统是在我进入公司之前就开发好的,我们现在的任务就是开发程序B
    程序A在接受号码输入的时候,作了严格限制,就是11位的手机号码(不存在的手机号码也是无效的,如:12345678901),所以可以认为程序A保存到数据库的手机号码一定是11位数字。至于24位的varchar,难道是为了以后的扩充? 不知道哈
    关于程序B,其实用户并不知道我们怎么给他们提供数据,他们执行程序A之后,需要我们提供完整的操作记录,并生成一个记录文件提供给他们,手机号码只是记录中的一个字段。程序B正是用于那个记录文件。
    可以说说需求(针对记录文件的):
        1、文件均采用定长格式,每行一条记录
        2、对于所有字段,长度不足时,均右补空格
        3、记录的字段对手机号码的要求:char(11), 不带+86之类的前缀,直接是11位手机号码。
    因为每条记录的字段之间没有分隔符,是通过字段长度来标识每个字段的

    我认为,客户最终需要的是操作记录文件,程序B并不是他们所接触到的,所以对他们的记录文件格式作了详细规定,我们就是要保证文件格式的正确性
    既然程序A保证了手机号码的正确性,是否还有必要让程序B再作一次约束呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-10-29 10:29:39 | 只看该作者
    看了LZ的帖子,我个人理解为:
    如果只测试程序B,那么当然要对其输入和输出作充分的测试来验证。
    LZ真正想要测试的是A+B模块。程序A、程序B是其2个子模块, A模块已经经过充分测试,现在加入B模块进行集成测试。那么现在的关注点就是A+B的输入和输出。而B的输入(A的输出)已做过充分测试,这里就不予关注了。
    建议参考一下《集成测试策略》。
    不知所云,还望指正。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-8-11 08:18
  • 签到天数: 114 天

    连续签到: 1 天

    [LV.6]测试旅长

    9#
    发表于 2007-10-29 11:16:36 | 只看该作者
    唔。。我前面说的条件约束指的是constraint
    字段长度是另外一回事情

    如果有了条件约束
    并且程序b接收的输入数据只有这一个地方的话
    那至少非正常输入数据的测试用例不属于重要的测试项目了

    不过如果考虑到代码的复用性并且项目进度允许的话
    测一下是没坏处的。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2007-10-29 15:50:06 | 只看该作者
    明白哈 就是对表T的字段格式作约束吧
    这个系统是之前已经开发好的,而且是由第三方提供,对数据库的插入操作和数据库的设计都不是我们能够改动的。
    通过前面的程序A是无法在表T中插入这些不规则数据,只能通过手动的方法直接修改,故意破坏数据的正确性 呵呵

    上面已经下达命令了,一定要这样测试,就这样啦,虽然还有点迷惑
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-17 21:52 , Processed in 0.075601 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表