基本信息

这个作业属于哪个课程 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实例化运行。

结果

img

若写错,结果:

img

(3)项目测试结果

(4)项目异常测试

当 python main.py [源文] [查重文] [结果文] 中三者有缺至少一个时:

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

(5)项目文件结构