基本信息
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146 |
| 这个作业的目标 | 使用查重算法进行文章查重,学会熟练运用PSP表格进行估计,掌握单元测试的功能 |
1. GitHub 仓库地址
https://github.com/YulRW/3118005296
2. PSP 表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 25 | 45 |
| Estimate | 估计这个任务需要多少时间 | 10 | 15 |
| Development | 开发 | 300 | 360 |
| Analysis | 需求分析 (包括学习新技术) | 60 | 30 |
| Design Spec | 生成设计文档 | 20 | 25 |
| Design Review | 设计复审 | 0 | 0 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
| Design | 具体设计 | 20 | 30 |
| Coding | 具体编码 | 180 | 240 |
| Code Review | 代码复审 | 30 | 30 |
| Test | 测试(自我测试,修改代码,提交修改) | 60 | 30 |
| Reporting | 报告 | 125 | 90 |
| Test Repor | 测试报告 | 20 | 20 |
| Size Measurement | 计算工作量 | 10 | 5 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 35 | 30 |
| 合计 | 925 | 970 |
3. 项目分析
(1)项目性能分析
使用 pycharm 中的 profile 测试程序性能
Statistcs 性能统计:

Call Graph 调用关系图:

从图中可以看出test.py直接调用了_handle_froml、split、_init_、io.open和_find_and_load、replace函数;_init_函数直接调用了sim_hash函数;_handle_froml、split、_init_、io.open都直接调用了enter以及exit函数;整个测试代码运行的总时间为426ms,其中sim_hash的运行时间为394ms,所占的时间百分比为92.49%,也就是 394ms / 426ms = 92.49%。
(2)测试
测试代码中 setUp 是帮我们做测试前的准备工作,比如实例化等,tearDown 可以帮我们关闭文档等收尾操作,测试方法以test_开头,里面写测试的业务逻辑,同时指定self.assertEqual()将我们的结果和运行的实际结果进行比对。
suite就是我们的测试集,之后添加测试用例,用runner实例化运行。
结果

若写错,结果:

(3)项目测试结果

(4)项目异常测试
当 python main.py [源文] [查重文] [结果文] 中三者有缺至少一个时:

当 python main.py [源文] [查重文] [结果文] 中 [源文] [查重文] 的文件路径错误时:

(5)项目文件结构

浙公网安备 33010602011771号