211606320刘佳&211506332熊哲琛

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 180
• Estimate • 估计这个任务需要多少时间 30 180
Development 开发 300 90
• Analysis • 需求分析 (包括学习新技术) 120 70
• Design Spec • 生成设计文档 100 30
• Design Review • 设计复审 90 120
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 120 60
• Design • 具体设计 30 60
• Coding • 具体编码 30 120
• Code Review • 代码复审 30 15
• Test • 测试(自我测试,修改代码,提交修改) 120 60
Reporting 报告 120 60
• Test Repor • 测试报告 100 60
• Size Measurement • 计算工作量 10 60
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 10 60
合计 1120 860

二、单元测试

1.选择框架进行单元测试

  • 选择Junit框架进行单元测试
  • 易于安装和运行,支持注释
  • 允许某些测试被忽略或分组并一起执行
  • 支持参数化测试,即通过在运行时指定不同的值来运行单元测试
  • 通过与构建工具(如Ant、Maven和Gradle)集成,支持自动化测试执行

2.函数测试

  • 测试软件是否能够处理无效数据
  • 用户指定非字母数字值,如特殊字符。
  • 用户指定空白值。
  • 边缘测试用例测试系统是否适合于极值。
package Test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import Pupil.RPNcompute;
class RPNcomputeTest {
@Test
void testRPNcalculate1() {
assertEquals(116, new RPNcompute().RPNcalculate("85 - 0 / 21 - 31"));
}
@Test
void testRPNcalculate2() {
assertEquals(Double.NEGATIVE_INFINITY,
new RPNcompute().RPNcalculate("85 - 21 / 0 - 31"));
}
@Test
void testRPNcalculate3() {
assertEquals(6525, new RPNcompute().RPNcalculate("87 * ( 25 * 19 / 76 ) * 12"));
}
}

#三、结构优化

1.重构代码和结构优化

  • 重构是一个改进代码的系统过程,而不创建可以转换的新功能。

  • 改进代码可读性,减少复杂性

  • 逐步执行重构和在每次更改后运行测试是重构的关键要素,使其具有可预测性和安全性。

  • 自动单元测试应该在重构之前设置,已确保程序能按预期运行。

  • 重构了计算字符串式子结构的代码

  • UML类图

  • 程序设计流程图

2.度量代码覆盖率

  • 代码覆盖率度量在运行单元测试时执行了多少代码(百分比)。通常,覆盖率高的代码包含未被检测到的bug的可能性会降低,因为在测试过程中已经执行了更多的源代码。
  • 使用代码工具,这里我们使用PMD代码覆盖测试工具,使用工具可以提高测试质量,因为这些工具可以指出未经测试的代码区域,减少错误率,提高测试效率。
  • 确保有涵盖代码所有分支的测试用例,比如if else语句。
  • 100%的代码覆盖率并不能真正表明测试是否涵盖了所有的场景。
  • 覆盖率截图

四、性能调优

  • 性能瓶颈

  • 字符串生成随机出符合要求的式子时间可能过久。

  • 优化方案

  • 随机条件加限制,增加随机命中率

  • 优化前截图

  • 优化后截图

小学生福利V2.0.1的更多相关文章

  1. 小学生作业V2.0

    211606320刘佳&211506332熊哲琛 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Plann ...

  2. [Android]Android端ORM框架——RapidORM(v2.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...

  3. JuCheap V2.0响应式后台管理系统模板正式发布beta版本

    JuCheap V1.* 查看地址: http://blog.csdn.net/allenwdj/article/details/49155339 经过半年的努力,JuCheap后台通用响应式管理后台 ...

  4. python gettitle v2.0

    #!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...

  5. ".NET Compact Framework v2.0 could not be found."

    参考: http://blog.csdn.net/godcyx/article/details/7348431 问题原因: That's a known issue where VS can't di ...

  6. 【JS】heatmap.js v1.0 到 v2.0,详细总结一下:)

    前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这 ...

  7. 怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块

     因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我个人认为,好记性不如多做笔记多反思总结. 1.    前提条件 开发环境已正确配置 工程已解决JUnit依赖关系(pom ...

  8. 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github

    4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...

  9. 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞

      文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...

随机推荐

  1. cell 重用

    1. 当单元格因滚屏而脱落表格可见区时,表格可以将其缓存到重用队列中. 用法:我们可标记单元格以备重用,然后根据需要从该队列中提取. 在分配新单元格时,必须检查重用单元格是否可用.如果表格对deque ...

  2. Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 05

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2287] 版本控制:https://git.coding.net/liuyy08 ...

  3. VMware上安装CenterOS

    1.环境:Win10.VMware Workstation 12.Centeros 7 2.VMware workstation12安装 双击“VMware_workstation_full_12.5 ...

  4. 编写高质量代码 改善Python程序的91个建议 (读后 小记)

    此书是自己好久之前买的,当时总觉得Python语言中有各种trick, 总是要自己猝不及防的掉入到陷阱之中, 看了一些资料后发现了这本书,感觉很是不错,不过可惜自己平时总是杂事太多,总是找不到整块的时 ...

  5. VirtualBox只能生成32位虚拟机

    /************************************************************************* * VirtualBox只能生成32位虚拟机 * ...

  6. 日志异常:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder

    今天启动开发的项目,碰到了一个日志上的bug:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.Sta ...

  7. 理解JAVA虚拟机(上)

    2016-04-16 23:10:50 在这里,我们进一步认识JAVA及JAVA虚拟机,包括它的体系结构和垃圾回收机制等,并通过虚拟机监控工具进行简单的性能调优. 一. JVM相关概念        ...

  8. docker基于Dockerfile命令创建支持ssh服务的镜像

    首先,创建一个sshd_centos工作目录: [root@localhost ~]# mkdir sshd_centos [root@localhost ~]# cd sshd_centos [ro ...

  9. inline修饰虚函数的问题

    虚函数是否可以内联? 一般来说,inline是编译时的行为,虚函数是在程序执行时的行为,因此编译器一般会拒绝对虚函数进行内联!

  10. 慕课网 -- 性能优化之PHP优化总结笔记

    视频链接,感兴趣的可以去看看,对我来说耳目一新. http://www.imooc.com/learn/205 什么情况下遇到PHP性能问题 1 :PHP语法使用不恰当 2 :使用了PHP语言他不擅长 ...