zoukankan      html  css  js  c++  java
  • 计算与软件工程作业四

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

  • 相关阅读:
    递归算法
    C#委托
    final 、finally
    JSP中的日期问题
    为GirdView添加CSS样式
    PC连Moto V180上网
    CSS条状图表:垂直型
    树型列表的实现
    关闭窗口无提示
    用PhotoShop做漂亮的相框,哈哈
  • 原文地址:https://www.cnblogs.com/lmengmeng/p/12613590.html
Copyright © 2011-2022 走看看