• 个人第三次软件工程作业-功能测试


    第一部分

    —具体要求:要求包括: (1)bug标题,(2)bug内容,含测试环境和准备工作、测试的步骤、运行结果、期待的结果、运行结果与期待结果间的差异, (3)佐证材料,至少包括运行截图、引用作业要求 (wf spec)中的条款。

    被测试作者:高远博同学

    git地址:https://coding.net/u/Rainbows/p/wc/git

    标题:没有区分大小写

    环境:win10,控制台输入命令

    重现步骤:

      1.exe程序根目录中shift右键空白处启动控制台

      2.输入   wf -s test.txt  

      3.运行结果:没有统一小写

      截图如下:

       预期结果:

      

    标题:输出格式不正确

    环境:win10,控制台输入命令,codeblocks

    重现步骤:

      1.exe程序根目录中shift右键空白处启动控制台

      2.输入   wf -s war_and_peace.txt  

      3.运行结果:输出格式不对

      截图如下:

      预期结果:

     

      总结:两次输出格式都不符合要求,不过这个问题是小问题,易于修改,程序的主要功能函数还是符合预期的。

    第二部分

    —具体要求: 记录所有为你的代码找到的bug,合并相同的bug,亲自重现bug现象,发布bug报告。

    1.被测试作者:自己

    标题:输入不符合标准

    环境:win10,控制台输入命令

    重现步骤:

      1.exe程序根目录中shift右键空白处启动控制台

      2.输入   wf gone_with_the_wand

      3.运行结果:无法正常打开

     2.被测试作者:自己

    标题:输出不符合标准

    环境:win10,控制台输入命令

    重现步骤:

      1.exe程序根目录中shift右键空白处启动控制台

      2.输入   wf Gone_with_the_wind

      3.运行结果:输出结果明显单词的个数不正确

      截图如下:

    3.被测试作者:自己

    标题:输出不符合标准

    环境:win10,控制台输入命令

    重现步骤:

      1.exe程序根目录中shift右键空白处启动控制台

      2.输入   wf Gone_with_the_wind

      3.运行结果:输出结果有个别单词划分错误

      截图如下:

    4.被测试作者:自己

    标题:输出不符合标准

    环境:win10,控制台输入命令

    重现步骤:

      1.exe程序根目录中shift右键空白处启动控制台

      2.输入   wf -s < war_and_peace.txt

      3.运行结果:输出结果为全部单词而不是要求的前十

      截图如下:

    5.被测试作者:自己

    标题:编译错误

    环境:win10,vs2013

    重现步骤:

      在vs2013调试代码出现bug

      截图如下

     

    第三部分

    —具体要求: 修改bug。根据自己和其他同学提交的bug报告,修改自己代码的bug,或clone其他任意同学的代码,另建git,在此git中修改这位同学的bug。

    对应第二部分的五个bug:

     

    1.按照要求输入无法正常读取

      这个原因是我在这周优化代码时发现到的问题。在我最开始的代码中,为了图方便把读取文件的目录放在了“G://”下。这样设置很容易出现错误,因为考虑到不是每个人的盘符都能到G盘。而且我看到很多同学的程序把路径都设置成程序的根目录下,所以我也把我的程序改成这样。

      改动的部分代码如下:

      

    1             char const *a = argv[i];
    2             char const *b = ".txt";
    3             std::string const& cc = std::string(a) + std::string(b);
    4             char const *c = cc.c_str();
    5             fin.open(c);
    部分代码,合并字符串,不再是g://下

    2.输出结果单词的个数不正确

      这个bug也是在这周才发现,因为在上周测试的时候,因为单篇文章的单词书很多,所以很难判断是否出错。这周在优化的过程中发现了这个bug。是由于循环写错了,已经进行修改。

      部分代码:

    1     while(fin >> strWord)
    2     {
    3         StringToLower(strWord);
    4         erasePunct(strWord);//调用标点判断函数
    5         wmap[strWord]++;
    6     }
    View Code

      修改后截图:

      

    3.输出结果有个别单词划分错误

      这个问题在第一周进行测试的时候就已经发现,当时没有好的解决方法。在这周进行优化的时候,读了《C++ prime》这本书。知道可以利用string类提供的可向前和向后遍历的迭代器iterator。同时可以利用内置的ispunct()函数直接判断参数是否为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。这样大大提高了识别率。修改后的部分代码:

     1 void erasePunct(string &s)//利用字符串判断和iterator迭代器的特性直接判断标点符号
     2 {
     3     string::iterator it = s.begin();
     4     while(it != s.end())
     5     {
     6         if(ispunct(*it))//ispunct()可以直接判断参数是否为标点符号或特殊符号。
     7             it = s.erase(it);
     8         else
     9             ++it;
    10     }
    11 }
    View Code

      修改后截图:

    4.输出结果为全部单词而不是要求的前十

      这个问题在我第一周设计程序的时候就没太明白。因为不知道到底哪部分要全输出,哪部分要只输出前十。在我的理解下单文件读取的应该都是全部输出。多个文件读入的时候应该只输出前十的单词。但是这周在优化程序的时候看到大部分同学都是在war_and_peace这个文件中只输出前十,所以我也该为这样。

      修改后截图:

    5.编译错误

      这个bug很奇怪。因为这周的任务是优化性能,所以我把原本程序中运行速度最慢的部分做了优化。在CodeBlocks中调试并且编译成功。而且在最后测试中也完全符合预期。但我在vs2013中调试就会跳出错误。我bing google了很多网页,怀疑是野指针的问题。便开始修改,修改了好几个版本的确可以正常运行,但是又会出现各种奇奇怪怪的bug。所以这个bug暂时还是没办法修复。

  • 相关阅读:
    Sqoop架构(四)
    为什么选择Sqoop?(三)
    Sqoop 是什么?(二)
    Sqoop 产生背景(一)
    Ambari是啥?主要是干啥的?
    Ambari架构及安装
    Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)
    Effective C++ -- 构造析构赋值运算
    pcduino v2安装opencv2.4.8
    Struts2 拦截器具体配置过程
  • 原文地址:https://www.cnblogs.com/vrocker/p/7597926.html
Copyright © 2020-2023  润新知