软件测试第三次作业

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。

posted on 2018-10-21 17:03  Sebastien  阅读(94)  评论(0编辑  收藏  举报

导航