计算与软件工程作业四

作业要求 第四次作业
我在这个课程的目标 能够实现简单软件的开发,对软件进行测试、维护和管理,可以将本课程与之前所学联系起来
此作业在哪个具体方面帮我实现目标 软件开发过程中的团队合作
参考文献 程序参考文献:
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之间的区别)。

posted @ 2020-04-05 08:39  璃茉浅忆  阅读(190)  评论(0编辑  收藏  举报