合作者:201631062222,201631062232

代码地址:https://gitee.com/biubiubiuLYQ/ceshi_secend

本次作业链接地址:https://edu.cnblogs.com/campus/xnsy/2018softwaretest2398/homework/2187

一.互审代码情况:

  1.高级功能测试:

    发现的问题:无法打开result.txt,output.txt(存储输出结果)等文件,经判断这些文件都是gbk编码,原程序未指定编码格式。

  

    修改:指定为utf-8编码,并忽略读取特殊字符的编码错误。

      

  2.待发现

二.静态代码检查情况

  1.使用的静态代码工具:Pyflakes

    1.1安装:pip installpyflakes

    1.2使用:pyflakes  *.py

    1.3简单介绍:

      封装了PyFlakes,Pep8,NedBatchelder’s McCabe script三个工具。Flake8通过启动单独的flake8脚本运行所有工具,它在一个Per文件中显示告警,合并到输出中。也增加一些特征:

      1)包含这行文件将被忽略:#flake8: noqa

      2)结尾包含#noqa注释的行将不发布告警

     3)GIT和Mercurial钩子

     4)McCabe复杂度检查器

     5)可以通过flake8.extension入口点扩展

  2.检查结果及改正方法(只能指定某个py文件)

    2.1检查结果:

      提示从tkinter这个库中导入了所有的文件,无法检测到未定义的名称(*)【此为正常提示,*是导入该库所有文件】,但是'tkinter.filedialog.askdirectory没有使用,然后其他都是正常提示。提示某个变量没有定义或是从tkinter中导入。

    2.2改正方法:

      可以忽略,或者不全导入,而是把需要的文件导入(文件太多,不建议)。

三.单元测试

  1.设计测试用例方法:等价类划分法

  2.测试的模块及思路:

    2.1测试基本功能模块:

      2.1.2测试思路

等价类划分

输入 有效等价类 无效等价类

读取文件命令参数

①-l

②-w

③-c

④-c -w

⑤-l -c

⑥-w -c

⑦-l -w -c

⑧空

⑨非-l -w -o的任意其他参数

结果写入文件命令参数

⑩-o

⑪非-o的其他命令
文件名 ⑫文件名 ⑬非文件名

      共设计四个测试用例:

        1.wc.exe -l -w -c test.txt -o output.txt,覆盖①②③④⑤⑥⑦⑧⑩⑫;

        2.wc.exe -f -t test.txt,测试⑨;

        3.wc.exe -l -w -c test.txt -h output.txt,测试⑪;

        4.wc.exe -l -w -c test_dir,测试⑬

      2.1.2覆盖情况:语句覆盖,判定覆盖,条件覆盖     

    2.2测试扩展功能模块:

      2.1.2测试思路

      等价类划分

输入 有效等价类 无效等价类

遍历文件夹命令参数

①-s

②非-s的任意其他参数

停用次参数

③-e

④非-e的其他命令
文件匹配格式 ⑤正规匹配 ⑥非常规符匹配
文件名 ⑦文件名 ⑧非文件名

      共设计五个测试用例:

        1wc.exe -s -a –c -w -l *.c –e stop.txt –o output.txt,覆盖①③⑤⑦;

        2.wc.exe -s *.c,测试②;

        3.wc.exe -l -w -c test.txt -t stop.txt,测试④;

        4.wc.exe -s -l -w -c ☣☣,测试⑥;

        5.wc.exe -s -a *.c -e test_dir,测试⑧

      2.1.2覆盖情况:语句覆盖,判定覆盖,条件覆盖 

    2.3测试高级功能模块:

       2.1.2测试思路

        等价类划分

输入 有效等价类 无效等价类

调用界面命令参数

①-x

②非-x的任意其他参数

        共设计两个测试用例:

          1wc.exe -x,测试①;

          2.wc.exe -t,测试②

       2.1.2覆盖情况:语句覆盖,判定覆盖,条件覆盖,路劲覆盖 

四.性能测试和优化  

  1.选择的性能测试工具:cProfile

    1.1cProfile介绍:

        (1)Profile自python2.5以来就是标准版Python解释器默认的性能分析器。

        (2)其他版本的python,比如PyPy里没有cProfile的。

        (3)cProfile是一种确定性分析器,只测量CPU时间,并不关心内存消耗和其他与内存相关联的信息。

    1.2cProfile的使用:

        python -m cProfile -o 输出参数 测试脚本 输入参数1 参数2......,如python -m cProfile -o result.txt test.py 1 2 3

  2.测试和优化:

    2.1测试数据集思路:

      选用所有单元测试中的等价类和无效等价类进行进行测试,然后将各模块进行联合测试。

    2.2优化前后性能指标:

      2.2.1优化前:系统是否满足预期的性能需求。

      2.2.2优化后:判断系统是否满足预期的性能需求;寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题; 判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能。(是否满足上线性能要求?系统极限承载如何?系统稳定性如何?) 

    2.3优化的设计思路:

      减少了库的引用,定位到某个要用的模块,而不是整个引用,优化判断分支,减少了判断次数,提高效率,同时减小重复性。   

五.参考文章:

    1.Python静态检查工具:https://blog.csdn.net/fan_hai_ping/article/details/41733817

    2.cProfile的使用:https://blog.csdn.net/u010453363/article/details/78415553?utm_source=blogxgwz4

    

WorldCount代码检查与优化——软件测试第三次作业的更多相关文章

  1. 软件测试第三次作业——7.使用下面方法printPrimes()完成后面的问题(a)~(f)

    (a)控制流图如下: (b)令MAXPRIMES=4,会出现越界错误. (c)令n=1,不会经过while循环体. (d)节点覆盖:{1,2,3,4,5,6,7,8,9,10,11,12,13,14, ...

  2. python实现WordCount(第三次作业)

    0x00 注明 合作者:201631062315 201631062310 代码地址:https://gitee.com/c1e4r/word-count2 作业地址:https://edu.cnbl ...

  3. C高级第三次作业

    C高级第三次作业(1) 6-1 输出月份英文名 1.设计思路 (1)算法: 第一步:定义整型变量n,字符指针s,输入一个数赋给n. 第二步:调用函数getmonth将值赋给s. 第三步:在函数getm ...

  4. Java初学者最近三次作业的心得体会

    作为一个初学者,简单的谈一下自己的作业心得体会.如果你是完全没有接触过Java的学习,本篇博文可能会有些收获,如果你已经学习Java有一段时间了,那么可以放弃这篇文章了,因为这篇文章讲解的是基本的东西 ...

  5. Android ------ 美团的Lint代码检查实践

    概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...

  6. FindBugs:Java 静态代码检查

    在使用 Jenkins 构建 Java Web 项目时候,有一项叫做静态代码检查,是用内置的 findBugs 插件,对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查. 安全缺陷检测 ...

  7. 移动开发:美团外卖Android Lint代码检查实践

    概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...

  8. iOS开发UI篇—从代码的逐步优化看MVC

    iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...

  9. java 命名代码检查-注解处理器

    命名代码检查 根据 <Java 语言规范( 第 3 版 ) > 中第6.8节的要求, Java 程序命名应当符合下列格式的书写规范: 类 ( 或接口 ) : 符合驼式命名法, 首字母大写. ...

随机推荐

  1. 解决 双显卡 y7000笔记本 (Dual Graphics) Ubuntu 18.04 GDM3 无法外接显示器

    sudo gedit /lib/systemd/system/gdm3.service 把其中的 ExecStartPre=/usr/share/gdm/generate-config 更改为 Exe ...

  2. flash设置里面:您的 Flash 设置会一直保留到您退出 Chrome 为止。

    疑问:flash设置里面:您的 Flash 设置会一直保留到您退出 Chrome 为止. 我记得以前的版本配置后就一直用啊,允许的就可以一直允许,现在这个sb版本退出后就恢复到默认,允许列表的网站就清 ...

  3. 关于NSA的EternalBlue(永恒之蓝) ms17-010漏洞利用

            好久没有用这个日志了,最近WannaCry横行,媒体铺天盖地的报道,我这后知后觉的才想起来研究下WannaCry利用的这个原产于美帝的国家安全局发现的漏洞,发现漏洞不说,可以,自己偷偷 ...

  4. 转载 mvc:message-converters简单介绍 https://www.cnblogs.com/liaojie970/p/7736098.html

    mvc:message-converters简单介绍 说说@ResponseBody注解,很明显这个注解就是将方法的返回值作为reponse的body部分.我们进一步分析下这个过程涉及到的内容,首先就 ...

  5. pytorch visdom可视化工具学习—1—详细使用-1—基本使用函数

    使用教程,参考: https://github.com/facebookresearch/visdom https://www.pytorchtutorial.com/using-visdom-for ...

  6. MySQL报错: java.sql.SQLException: Column count doesn't match value count at row 1

    这个是今天写新项目的是后,写插入语句测试用例的时候报这个错误, 其实错误的原因就是插入语句的前面的列和后面的值 的个数不对. 错在此,仔细检查一下,看看少了哪一个,然后修改就可以了.

  7. odoo8 和odoo10区别

    V8  函数:'sale_order_count': fields.function(_sale_order_count, string='# of Sales Order', type='integ ...

  8. ASP.NET Core 集成测试

    集成测试 集成测试,也叫组装测试或联合测试.在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试. 实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也 ...

  9. mysql安装与配置详情

    一.概述 MySQL版本:5.6.43 下载地址:mysql-installer-community-5.6.43.0,提取码:tgmk 客户端工具:NavicatforMySQL 下载地址:Navi ...

  10. DSL 系列(2) - 插件的论述与实现

    前言 本文主要探讨基于 DSL(domain specific language) 之上的插件设计,他们是领域的附属,为领域提供额外的服务,但领域不依赖于他们. 1. 论述 领域应当尽可能地去专注他的 ...