51Testing软件测试论坛

标题: 做题了!做题了! [打印本页]

作者: 笨鸟    时间: 2005-12-17 17:37
标题: 做题了!做题了!
找出错误原因并写出正确答案:
                     设置软件日期限制源代码错误
                           {
                                 //给用户的软件设置使用日期的限制
                                 //2003年6月23日以后,弹出软件过期的错误不能用的信息
                                CTime.time=CTime::GetCurrentTime( );
                                 if( time.GetYear( )>=2003 )
                                     { if ( time.GetMonth( )>6)
                                        show.outofdate_message_and_exit( );
                                        if ( time.GetDay( )>27)
                                         show.outofdate_message_and_exit( );
                                       }
                             }
作者: Horus_Ra    时间: 2005-12-17 23:00
有意思吗?调整日期又可以用了……
作者: 笨鸟    时间: 2005-12-18 00:56
照你这么说,那我在这里问这个有什么意思?我只是要知道程序错在哪儿,怎么改!!
请不要回没用的话!!!
作者: biaofengzgf    时间: 2005-12-18 14:33
最起码有一点上面需求的时间和你下面代码的时间就不一致啊,上面的时间是23号,下面的代码又是27号;而且,年份判断完了之后,月份和日期的判断也是该有个分界的吧,只有月份大于6的时候才判断日期吧。你的月份和日期的判断好像成了两选一了吧。

[ 本帖最后由 biaofengzgf 于 2005-12-18 14:39 编辑 ]
作者: 笨鸟    时间: 2005-12-18 23:21
不好意思,谢谢biaofengzgf的提醒,抱歉是我输入错误,它要判断的是2003年6月23号以后的日期为过期日期.
这是一家公司招聘软件测试员时出的笔试题,他们的目的就是要应聘者描述出这道题错误的原因,它的错误大家可能很容易看出来,可是要怎样用最精确的语言来描述这个错误呢?希望大家来讨论讨论
作者: kpxl    时间: 2005-12-19 10:17
首先告诉楼主一句话,说话客气一点,不管人家给你的答案是不是你想要的,都不能出言不逊!
作者: 笨鸟    时间: 2005-12-19 15:10
虚心接受版主的批评.
作者: archonwang    时间: 2005-12-19 16:47
假设其他的get函数没有错误,即不涉及字符串类型和数值类型转换的问题。那么,我的看法如下:

好像是逻辑错了。如果是时间年GetYear( )>2003了,还有必要继续IF么?

这样改试试看:
if( time.GetYear( )=2003 )
                                     { if ( time.GetMonth( )>6)
                                        show.outofdate_message_and_exit( );
                                       if (time.GetMonth()=6) and ( time.GetDay( )>27)
                                         show.outofdate_message_and_exit( );
                                         Else
                                           .......

[ 本帖最后由 archonwang 于 2005-12-19 16:54 编辑 ]
作者: archonwang    时间: 2005-12-19 16:56
大于2003的逻辑自己写吧。应该不难的。顺便整理下看看。
作者: wzb521    时间: 2005-12-19 17:12
那我借这个问个问题吧:如果基础设置错了,下面的算法是否还要测试?
作者: 百事可乐    时间: 2005-12-19 17:19
我也见过这道测试考试的题,当时没做出来。。。。。。。
错误大家都知道,关键是怎么改
作者: archonwang    时间: 2005-12-19 17:21
标题: 个人意见,仅供参考。
如果已确认基本的Get函数(GetYear/GetMonth/GetDay)发生了错误,继续往下测试只不过是浪费时间而已。
作者: quoooyang    时间: 2005-12-20 17:02
咱们都知道,应该按顺序判断年-月-日。那么修改如下:

   //给用户的软件设置使用日期的限制
   //2003年6月23日以后,弹出软件过期的错误不能用的信息
   //更改

   Ctime.time=CTime::GetCurrentTime();
   if(time.GetYear()>2003)
   {
           show.outofdate_message_and_exit();
           return;
   }
   else if(time.GetYear()==2003)
   {
           if ( time.GetMonth( )>6)
           {
                   show.outofdate_message_and_exit();
           }
        else if(time.GetMonth()==6)
        {   
                   if(time.GetDay()>23)
                   {
                           show.outofdate_message_and_exit();
                           return;
                   }
           }
   }
作者: kian    时间: 2005-12-20 17:57
楼上的写的比较清晰了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2