作业要求 | 第四次作业 |
---|---|
我在这个课程的目标 | 能够实现简单软件的开发,对软件进行测试、维护和管理,可以将本课程与之前所学联系起来 |
此作业在哪个具体方面帮我实现目标 | 软件开发过程中的团队合作 |
参考文献 | 程序参考文献: https://blog.csdn.net/lbj1260200629/article/details/89600055 https://blog.csdn.net/weixin_43936464/article/details/84779924 效能测试参考文献: https://www.cnblogs.com/MonC/articles/9744687.html 单元测试参考文献: https://blog.csdn.net/huilan_same/article/details/52944782 回归测试参考文献: https://blog.csdn.net/LWT000aa/article/details/78735235 |
gitee链接 | gitee链接 |
作业一、代码规范复审
https://www.cnblogs.com/lmengmeng/p/12613565.html
作业二、结对编程
下面只给出了红楼梦的相关代码,水浒传的代码可通过gitee链接查看
组队成员的博客:https://www.cnblogs.com/youmine/p/12635776.html
一、程序代码和运行结果
# 红楼梦人物统计 import jieba import csv class NameCount(): def getNameTimesSort(self, name_list, txt_path): # 添加jieba分词 mydict = ['琏二奶奶', '凤哥儿', '凤丫头', '宝姑娘', '颦儿', '二姑娘', '三姑娘', '四姑娘', '云妹妹', '蓉大奶奶'] for item in mydict: jieba.add_word(item) #打开并读取txt文件 txt = open(txt_path, "r", encoding='utf-8').read() # 定义别名列表 bieming = [["王熙凤", "凤丫头", '琏二奶奶', '凤姐', '凤哥儿', '凤辣子','熙凤'],["林妹妹", "黛玉", '林姑娘', '林黛玉'], ["宝钗", '宝姑娘', '宝丫头', '宝姐姐', '薛宝钗'], ['探春', '三姑娘', '贾探春'], ['湘云', '云妹妹', '史湘云'],['迎春', '二姑娘', '贾迎春'],['元春', '大姑娘', '娘娘', '贵妃', '元妃', '贾元春'], ['惜春', '四姑娘', '贾惜春'], ['妙玉'],['巧姐'], ['李纨', '大嫂子'], ['秦可卿', '可卿', '蓉大奶奶']] words = jieba.lcut(txt) counts = {} for word in words: if len(word) == 1: continue else: counts[word] = counts.get(word, 0) + 1 # 计算出场次数(各个别名的合计次数) lst = list() for i in range(12): lt = 0 for item in bieming[i]: lt += counts.get(item, 0) lst.append(lt) items = list() for i in range(12): items.append([name_list[i], lst[i]]) items.sort(key=lambda x: x[1], reverse=True) f = open('红楼梦人物统计.csv', 'w', newline='', encoding='utf-8') csv_writer = csv.writer(f) csv_writer.writerow(['红楼梦人物统计']) csv_writer.writerow(["姓名", "出现次数"]) for i in range(12): word, count = items[i] csv_writer.writerow([word, count]) print("{0:<10}{1:>5}".format(word, count)) f.close() return items if __name__ == '__main__': # 参与统计的人名列表,可修改成自己想要的列表 name_list = ['熙凤', '黛玉', '宝钗', '探春', '湘云', '迎春', '元春', '惜春', '妙玉', '巧姐', '李纨', '可卿'] # txt文件所在路径 txt_path = 'E:\pycharm\Code\Pair Programming\红楼梦.txt' NameCount().getNameTimesSort(name_list,txt_path)
二、单元测试
import unittest from hlmrw import* class MyTestCase(unittest.TestCase): def setUp(self): pass def test_something(self): name_list = ['熙凤', '黛玉', '宝钗', '探春', '湘云', '迎春', '元春', '惜春', '妙玉', '巧姐', '李纨', '可卿'] txt_path = 'E:\pycharm\Code\Pair Programming\红楼梦.txt' name_list_count = [1149, 953, 696, 448, 393, 146, 126, 105, 81, 40, 36, 14] items = list() for i in range(12): items.append([name_list[i], name_list_count[i]]) self.assertEqual(items, NameCount().getNameTimesSort(name_list,txt_path)) def tearDown(self): pass if __name__ == '__main__': unittest.main()
三、回归测试
#page.py from selenium import webdriver import time #打开浏览器 path = "C:/Users\DELL\AppData\Local\Google\Chrome\Application\chromedriver.exe" driver = webdriver.Chrome(executable_path=path) #driver = webdriver.Chrome() #最大化窗口 driver.maximize_window() #打开百度 driver.get("http://www.baidu.com") #休眠一秒 time.sleep(10) #关闭浏览器 driver.close() #hgtest_hlmrw.py import unittest from hlmrw import * import page import test_hlmrw import HTMLTestRunner class MyTestCase(unittest.TestCase): def setUp(self): print("测试开始") def test_something(self): name_list = ['熙凤', '黛玉', '宝钗', '探春', '湘云', '迎春', '元春', '惜春', '妙玉', '巧姐', '李纨', '可卿'] txt_path = 'E:\pycharm\Code\Pair Programming\红楼梦.txt' name_list_count = [1149, 953, 696, 448, 393, 146, 126, 105, 81, 40, 36, 14] items = list() for i in range(12): items.append([name_list[i], name_list_count[i]]) self.assertEqual(items, NameCount().getNameTimesSort(name_list,txt_path)) def tearDown(self): print("测试结束") if __name__ == '__main__': testunit = unittest.TestSuite() testunit.addTest(MyTestCase('test_something')) filename = '红楼梦回归测试.html' fp = open(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'红楼梦人物统计', description=u'用例执行') runner.run(testunit) fp.close()
四、效能测试
import pstats import profile from hlmrw import* if __name__ == '__main__': profile.run('NameCount()', 'result') # 直接把分析结果打印到控制台 p = pstats.Stats('result') # 创建Stats对象 p.strip_dirs().sort_stats("call").print_stats() # 按照调用的次数排序 p.strip_dirs().sort_stats("cumulative").print_stats() # 按执行时间次数排序
五、托管代码
六、总结
PSP | Personal Software Process Stages | Time |
---|---|---|
Planning | 计划 | 168h |
·Estimate | ·估计这个任务需要多少时间 | 30h |
Development | 开发 | |
·Analysis | ·需求分析(包括学习新技术) | 6h |
·Design Spec | ·生成设计文档 | 1h |
·Design Review | ·设计复审(和同学审核设计文档) | 1h |
·Design Standard | ·代码规范(为目前的开发制定合适的规范) | 0.5h |
·Design | ·具体设计 | 4h |
·Coding | ·具体编码 | 48h |
·Code Review | ·代码复审 | 24h |
·Test | ·测试(自我测试,修改代码,提交修改) | 72h |
Reporting | 报告 | |
·Test Reportt | ·测试报告 | 1.5h |
·Size Measurement | ·计算工作量 | 0.5h |
·Postmortem&Process Improvement Plan | ·事后总结,并提出过程改进计划 | 0.5h |
Total | 合计 | 189h |
本次作业中需要运用python软件来书写,统计人物时要用到jieba库,在回归测试中需要用到selenium库、webdriver、HTMLTestRunner(注意python2和python3之间的区别)。
来源:https://www.cnblogs.com/lmengmeng/p/12613590.html