WorldCount代码检查与优化——软件测试第三次作业
合作者: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代码检查与优化——软件测试第三次作业的更多相关文章
- 软件测试第三次作业——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, ...
- python实现WordCount(第三次作业)
0x00 注明 合作者:201631062315 201631062310 代码地址:https://gitee.com/c1e4r/word-count2 作业地址:https://edu.cnbl ...
- C高级第三次作业
C高级第三次作业(1) 6-1 输出月份英文名 1.设计思路 (1)算法: 第一步:定义整型变量n,字符指针s,输入一个数赋给n. 第二步:调用函数getmonth将值赋给s. 第三步:在函数getm ...
- Java初学者最近三次作业的心得体会
作为一个初学者,简单的谈一下自己的作业心得体会.如果你是完全没有接触过Java的学习,本篇博文可能会有些收获,如果你已经学习Java有一段时间了,那么可以放弃这篇文章了,因为这篇文章讲解的是基本的东西 ...
- Android ------ 美团的Lint代码检查实践
概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...
- FindBugs:Java 静态代码检查
在使用 Jenkins 构建 Java Web 项目时候,有一项叫做静态代码检查,是用内置的 findBugs 插件,对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查. 安全缺陷检测 ...
- 移动开发:美团外卖Android Lint代码检查实践
概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...
- iOS开发UI篇—从代码的逐步优化看MVC
iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...
- java 命名代码检查-注解处理器
命名代码检查 根据 <Java 语言规范( 第 3 版 ) > 中第6.8节的要求, Java 程序命名应当符合下列格式的书写规范: 类 ( 或接口 ) : 符合驼式命名法, 首字母大写. ...
随机推荐
- JavaScript中浅拷贝和深拷贝的区别和实现
深拷贝和浅拷贝的区别 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存: 深拷贝(deep copy):复制并创建一个一摸一样的对象,不共 ...
- [Python] Python 100例
题目1:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #程序源 ...
- [matlab] 8.蚁群算法解决TSP问题
城市坐标数据下载 密码:07d5 求遍历这52座城市后最后回到最初城市的最短距离 %% 第9章 蚁群算法及MATLAB实现——TSP问题 % 程序9-1 %% 数据准备 % 清空环境变量 clear ...
- 【angularjs】使用angular搭建项目,pc端实现网页中的内容不可复制
实现目标:不可复制页面内容 js: <script language="javascript"> if (typeof(document.onselectstart) ...
- WiFi-ESP8266入门http(3-1)网页认证上网-post请求(原教程)
教程:http://geek-workshop.com/thread-37484-1-1.html 源码:链接:https://pan.baidu.com/s/1yuYYqsM-WSOb0AbyAT0 ...
- Java NIO:IO与NIO的区别
一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...
- 在.NET中调用Java的类
.NET不能直接调用Java的类,但IKVM.NET解决了这个问题. IKVM.NET提供了两种方式调用java的类: ①把生成的jar包放置在程序根目录,然后通过创建URL实例的方式去调用类中的方法 ...
- 在Bootstrap开发中解决Tab标签页切换图表显示问题
在做响应式页面的时候,往往需要考虑更多尺寸设备的界面兼容性,一般不能写死像素,以便能够使得界面元素能够根据设备的不同进行动态调整,但往往有时候还是碰到一些问题,如Tab标签第一页面正常显示,但是切换其 ...
- 面试 10:玩转 Java 选择和插入排序,附冒泡最终源码
昨天给大家讲解了 Java 玩转冒泡排序,大家一定觉得并没有什么难度吧,不知道大佬们玩转了吗?不知道大家有没有多加思考,实际上在我们最后的一种思路上,还可以再继续改进. 我们先看看昨天最终版本的代码. ...
- Plugin 'Lombok Plugin' is incompatible with this installation
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. Installation Error Plugin 'Lombok ...