一.Github仓库

Github地址

二.PSP表格

我的表头折腾了好久还是出不来,所以我把它搞成内容了

p s p 2.1 personal software process stage 预估耗时(分钟) 实际耗时(分钟)
psp2.1 personal software process stage 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 10
Estimate 估计这个任务需要多数时间 540 660
Development 开发 200 300
Analysis 需求分析(包括学习新技术) 210 210
Design Spec 生成设计文档 90 120
Design Review 设计复审 60 30
Coding Standard 代码规范(为目前的开发制定合适的规范 30 45
Design 具体设计 120 90
Coding 具体编码 180 150
Test 测试(自我测试,修改代码,提交修改) 180 120
Reporting 报告 60 90
Test Repor 测试报告 45 60
Size Measurement 计算工作量 30 45
Postment&Process Improvement Plan 事后总结,并提出过程改进计划 60 90
合计 1815 2020

三.计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(25')

1.主要函数有:(1)fir_3:调用cpca获取前3级 (2)lev_5:将前3级剩下的地址进行5级解析 得到1级(3)lev_7:将5级解析的结果再进行解析得到剩下的3级 (4)lev_auto:将经过补充后的地址进行7级解析 (5)_auto_geo_completion调用api进行地址补充

2。程序工作流程图:

3.算法关键:主要是利用cpca进行前三级的自动匹配和补充,刚开始调用api,后来发现cpca也可以自动补充,优点是准确度会高一点,代码量也会少一点,缺点就是用时长,测试的时候等的时间非常的长,我测一次大概要1个半小时。QAQ疯狂嘤嘤嘤。 当然,现在不会了,新工具快很多,赞!!!

四.计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017/JProfiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(4')


用的是python自带的profile库测试的,在分割前三级,也就是调用cpca的包耗费的时间最多,改进的话,就是用含有前三级的字典进行匹配,自己写的代码部分会多一些,但应该会快很多。

五.计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(6')

1.代码:

            import unittest
        from _031702304 import *
        class MyTest(unittest.TestCase):
def tearDown(self):
                #每个测试用例执行之后做操作
    pass
def setUp(self):
    pass
def test_get_type(self):
    self.assertIs("1!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.","1")
    self.assertIs("2!张三,福建福州闽13599622362侯县上街镇福州大学10#111.","2")
    self.assertIs("3!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.","3")

def test_get_name(self):
    self.assertIs(get_name("小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院."),'小美','北京市东15822153326城区交道口东大街1号北京市东城区人民法院')
    self.assertIs(get_name("李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层."),"李四")
    self.assertIs(get_name("张三,福建福州闽13599622362侯县上街镇福州大学10#111."),"张三")
    self.assertIs(get_name("王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院."),"王五")


def test_get_tel(self):
    self.assertIs("福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.","18960221533")
    self.assertIs("福建福州闽13599622362侯县上街镇福州大学10#111.","13599622362")
    self.assertIs("福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.","13756899511")            

出现了以上的报错,没有找到有效的解决方法,好像是因为我是在anaconda运行的原因。

2.所以我手动又测试了一下,题目给的前4个样例:

3.代码覆盖率:

六.计算模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。(5')

这个是用测评工具测试的时候出现的异常,感觉是因为我在进行这次测试的时候用的数据集是删除掉第3类型的数据,所以score也出不来,换了数据集就可以了。

七.心得

1.感觉理解能力有待提高,每次看完博客都是懵的,好像可以理解,但是操作起来却又一堆问题。
2.可能看起来问题很小或者工作量不大,但是一旦出现问题,都会耗费大量的时间。
3.看完教程之后,还是不会打,老是数据格式弄错,弄错语法,一堆奇怪的因为缩进引起的报错。

posted on 2019-09-28 19:27  katy1999  阅读(274)  评论(8编辑  收藏  举报