小学生福利V2.0.1
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的更多相关文章
- 小学生作业V2.0
211606320刘佳&211506332熊哲琛 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Plann ...
- [Android]Android端ORM框架——RapidORM(v2.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...
- JuCheap V2.0响应式后台管理系统模板正式发布beta版本
JuCheap V1.* 查看地址: http://blog.csdn.net/allenwdj/article/details/49155339 经过半年的努力,JuCheap后台通用响应式管理后台 ...
- python gettitle v2.0
#!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...
- ".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 ...
- 【JS】heatmap.js v1.0 到 v2.0,详细总结一下:)
前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这 ...
- 怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我个人认为,好记性不如多做笔记多反思总结. 1. 前提条件 开发环境已正确配置 工程已解决JUnit依赖关系(pom ...
- 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github
4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...
- 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞
文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...
随机推荐
- hdu 3262 09 宁波 现场 C - Seat taking up is tough 暴力 难度:0
Description Students often have problems taking up seats. When two students want the same seat, a qu ...
- Android Studio 1.5 注解配置
Project的build.gradle文件配置如下: // Top-level build file where you can add configuration options common t ...
- 16款最受关注的智能手表 苹果iWatch领衔
智能手表逐渐成为科技行业的新宠,而传闻中的苹果iWatch以及已经确认即将推出的三星Galaxy Gear,显然让这股热潮达到了顶峰,也预示着大牌厂商将逐渐进入该领域,推出更多成熟的产品.以下便是16 ...
- Build Tree View Structure for SharePoint List Data
博客地址 http://blog.csdn.net/foxdave 此文参考自->原文链接 版权归原作者所有,我只是进行一下大致的翻译 应坛友要求,帮助验证一下功能. SharePoint列表数 ...
- L178 smart meter watchdog
There is "no realistic prospect" of the government meeting its own deadline to install sma ...
- cuteftp不能连接虚拟机的解决方法
使用cuteftp在PC和虚拟机之间传送文件 工具/原料 PC机中装有cuteftp软件和虚拟机 注意事项 首先要确保虚拟机中的ftp软件已安装,如未安装可以用如下命令安装 sudo apt-get ...
- Linux运维学习笔记-文件系统知识体系总结
文件系统知识总结 新买的硬盘要存放数据需要怎么做? 首先将硬盘装机做RAID,做完RAID后进行分区,分完区后格式化创建文件系统,最后存放数据. 硬盘的内外部结构: 物理形状: 接口类型: IDE(I ...
- 首次运行tensorflow-gpu 1.0 报错 failed to create cublas handle: CUBLAS_STATUS_NOT_INITIALIZED
发现博客: https://blog.csdn.net/u010752600/article/details/79534910 于是找到解决方法. sudo rm -rf ~/.nv/
- vue项目之webpack打包静态资源路径不准确
摘自:https://blog.csdn.net/viewyu12345/article/details/83187815 问题 将打包好的项目部署到服务器,发现报错说图片找不到. 静态资源如js访问 ...
- wpf 客户端【JDAgent桌面助手】开发详解(一)主窗口 圆形菜单
目录区域: wpf 客户端[JDAgent桌面助手]业余开发的终于完工了..晒晒截图wpf 客户端[JDAgent桌面助手]开发详解-开篇 内容区域: 这里开始主窗口 圆形菜单制作的过程,首先请大家看 ...