zoukankan      html  css  js  c++  java
  • 软件测试第三次作业

    WordCount稳定版本1.0.0

    合作者学号:201631062112,201631062211

    gitee仓库地址:https://gitee.com/sebastienf/WordCount

    v1.0.0更新日志:

    本项目在前一次作业的基础上,优化了代码的执行效率,对代码的错误进行了审查和修改。

    上个版本已经实现了作业所要求的所有功能,故这个版本以提升稳定性为主,不另行添加新的功能。

    合并搭档的稳定代码进入Master分支。

    对搭档提出的问题进行修改。

    审查了搭档的代码,帮助修复了部分BUG。

    版本号进入稳定版。

    主要内容:

    1、本次优化主要调整了文件读取策略,加入了参数保护,输入输出文件保护,进行代码审查以规范代码,进行了单元测试以检测隐藏的BUG。

    2、优化了性能表现,测试中典型任务下执行速度提升了10毫秒。

    对selectTask的调整:

    在上一个版本的基础上,对此方法进行修改,调整文件读取的策略,提升效率。同时加入参数保护,避免空文件造成程序崩溃。

    下列为涉及变动的相关代码:

    1、读取文件的空文件保护以及文件读取策略的调整

     bool outPutFlag = false;//特殊输出判断
                string outPutFileName = "";//特殊输出文件名
                string stoplistFileName = "";//特殊输出文件名
                string fileName = "";//文件名
                string result = "";
                List<FileInfo> fileList = FileGet.getFile(".",".c");
                foreach (string item in args)
                {
                    if(item == "-x")
                    {
                        bool re = countInWindows();
                        goto END;
                    }
                }
    
                //空文件保护
                bool fillBool = false;
                foreach (string item in args)
                {
                    if (item.EndsWith(".c"))
                    {
                        fillBool = true;
                    }
                }
                if (fillBool == false)
                {
                    Console.WriteLine("文件不合法或为空");
                    return false;
                }
    
                //空文件保护结束
    
                foreach (FileInfo file in fileList)
                {
                    if (!(args.Contains<string>("-s")))
                    {
                        foreach (string item in args)
                        {
                            if (item.EndsWith(".c")&&item.ToString()==file.ToString())
                                fileName = item;
                            else
                                flag = false;
                        }
                    }
                    else
                    {
                        fileName = file.ToString();
                    }

    2、停用词表的空文件保护

     for (int i = 0; i < args.Length; i++)
                    {
                        if (args[i] == "-e")
                        {
                            //停用词文件保护
                            if (args.Length - 1 <= i)
                            {
                                Console.WriteLine("停用词文件不存在");
                                return false;
                            }
                            else if (!(args[i + 1].EndsWith(".txt")))
                            {
                                Console.WriteLine("停用词文件不正确");
                                return false;
                            }
                            //停用词文件保护结束
                            stoplistFileName = args[i + 1].ToString();
                        }
                    }

    3、输出文件的空文件保护

     //输出控制
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i] == "-o")
                    {
                        outPutFlag = true;
                        //输出文件保护
                        if (args.Length-1<=i)
                        {
                            Console.WriteLine("输出文件为空或不存在(输出txt文件名应跟在-o之后)/n/n如:-o 1.txt");
                            return false;
                        }
                        else if (!(args[i + 1].EndsWith(".txt")))
                        {
                            Console.WriteLine("输出文件为空或不存在(输出txt文件名应跟在-o之后)/n/n如:-o 1.txt");
                            return false;
                        }
                        //输出文件保护结束
                        outPutFileName = args[i + 1].ToString();
                    }
                }
                if (outPutFlag)
                {
                    outputLine(result,outPutFileName);
                }
                else
                {
                    outputLine(result);
                }

    加入单元测试项目

    运行情况

    所有测试通过。

    静态代码测试

    静态代码测试任务,我选择使用StyleCop.Analyzers进行代码规范检查。

    结合https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions所述代码规范,我和搭档一起自定义了一套代码规则,并运用这套规则对代码开始检测。

    对出现的问题进行修改。

     性能测试

    性能测试我选择VS2015自带的测试工具进行测试,结果如下。

     典型任务下性能提升10毫秒左右。

    个人感受

    本次作业是我第一次完整的运用结对编程的方法。结对编程虽然能够提高软件质量,但是在实施的过程中,出现了许多的矛盾冲突。通过不断的验证和讨论,最终才得出一套可行的方案。我感受到多人的协作编程和同一个人的编程的流程是完全不同的。单人编程的时候不需要考虑代码的风格友好性和通用性。在审查同伴的代码中,我也发现了很严重的代码风格的问题,导致代码合并时非常困难,甚至出现了大量重构的情况。多人协作时,这一点就变得很重要。这一次项目也是我第一次运用静态代码分析,认识到代码风格统一的重要性。希望在下一次作业中,能够更为融洽的发挥多人协作编程的优势,能够让1+1大于2。

  • 相关阅读:
    前台线程与后台线程的区别
    触发器
    Asp.net AutopostBack 属性
    Spring实战拆书--SpringBean
    侣行APP
    用android去写一个小程序
    java如何使用JUnit进行单元测试
    JDK的安装与配置以及eclipse的使用
    软件工程第一次作业(1)
    软件工程第一次作业(2)
  • 原文地址:https://www.cnblogs.com/ssfei/p/9825694.html
Copyright © 2011-2022 走看看