当前位置: 首页 > news >正文

BUG项目管理

最近只要改项目就有可能产生bug。

目前这项目,从一开始我就参与开发。

很长一段时间都是敏捷开发,有时候连UI图都是后出。

随着时间加长,需求复杂度增加,有时候动下代码就伤筋动骨,事故不断,主要是影响口碑。

首先不替自己辩解,确实是写的时候考虑不全面。

先说下项目使用php开发,而php是个弱语言。

我设置状态一般都不用0,判断起来太麻烦。

而且php写起来比较随意,开发一时爽,维护操碎心。

比如上次bug

判断金额直接用empty,empty("0")是true,而empty("0.00")是false……

从数据库读出来的都是字符串,判断错误导致bug。

empty((int)$price)或者$price>0就能避免。

仔细想想这种其实属于开发规范问题。

比如上上次bug

/(ㄒoㄒ)/~~这次比较严重。

写代码的时候忽略一种业务情况,正巧在一个小长假不断出现错误。

放假回到家有点发烧,又改错了……

导致又产生不同的错误数据。

但好在没有造成平台亏损。

再比如long long ago的一个bug

涉及到微信回执处理。

当时测试是自己编回执测,导致实际运行官方回执解析失败,而且发现的时间比较晚。

而业务上是先解冻冻结金额到用户账户可用金额……

我知道这种脑残的设计不是特别合理,我也纳闷当时我为啥这样写……

总结原因大概是当时业务对于冻结金额的负面反馈太多,索性我就先解冻,好歹是退钱了……

先解冻后处理退款回执,并且回执处理失败,没及时扣除用户金额,就导致平台亏损……

和之前的bug对比,这算是非常大的事故。

现在马上十月一放长假,可恶的补班很多。我们单休,甚至连着上八天……

目前预防错误都已准备好,不上线有数据修改的需求,大概能顺利过完假期。

项目管理

鉴于以上情况,公司最近一直抓项目管理。

根据目前的情况,我认为项目管理的主要内容是流程设计、测试、数据校验、项目管理、代码审计、客户资料管理。

1、流程设计

对于业务,在流程上的设计把好关,能避免很多bug。

主要是流程图。

可以先做流程图,然后按照流程图写。

每次修改也是先改路程图。

过程很麻烦,但是安全。

但主要问题是,像我这种主要写接口,流程图中怎么体现接口……

不然接口管理,或者查对应逻辑的接口都比较麻烦……

2、测试

测试主要是怎么测试全面的问题。

涉及流程分析,和测试工具、需求管理,任务指派等。

前两天领导还想让我弄自动化测试,写脚本弄……我得学……

3、数据校验

数据校验,可以校验平台业务数据的正确性。

难就难在正确性标准。

这点就很看重数据结构的设计。

根据自己的运维经验,业务复杂度高之后,即使是相同功能的不同版本,也要保持数据结构的一致。

不然查数据和开发真的特别麻烦……

4、代码审计

看过一些代码审计的视频,大概都是分析bug。

自己运维的项目里代码审计,一是看编写规范,二是看逻辑漏洞。

涉及开发规范的制定、程序设计(解耦、注入、注释等)、流程设计。

5、项目管理

项目管理就比较简单,比如服务器信息、数据库信息、启动方法、守护进程、注意事项等。

不做管理的话,服务器都不敢重启,生怕哪个项目有问题。

6、客户资料管理

可以将客户对应到项目,这样哪个项目比较紧急就比较好分辨😊。

工作交接的话,也方便联系。

正在找根据以上内容便于使用的开源项目……

有意向自己写一个,回头自己再整理需求。

话说公司有个大佬,以前也做过不少大项目,都是用java,也没听他说有这么多事情。

一定不是语言的差距,而是我和大佬的差距😥。

相关文章:

  • ListNode
  • jackson对于对象序列化的时候默认空值和手动传入的null的不同处理
  • JVM(HotSpot):虚拟机栈(JVM Stacks)与本地方法栈(Native Method Stacks)
  • 爬虫过程 | 蜘蛛程序爬取数据流程(初学者适用)
  • W39-02-jmeter中如何实现:下一个请求是需要根据前一个请求返回值进行循环请求
  • C++入门基础知识90(实例)——实例15【求两数的最大公约数】
  • 使用 MATLAB 处理和可视化 PCD 文件:点云过滤与保存的完整流程
  • Bigemap Pro首发(一款真正全面替代Arcgis的国产基础软件)
  • 《概率论与数理统计》学渣笔记
  • MATLAB无线网络设计工具:从理论到实践
  • TDengine 在业务落地与架构改造中的应用实践!
  • 【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)
  • 计算机网络第六章——应用层
  • 速盾:cdn是怎么加速视频的?
  • 【解密 Kotlin 扩展函数】顶级函数和顶级属性(十五)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • android图片蒙层
  • C++类中的特殊成员函数
  • canvas 绘制双线技巧
  • flutter的key在widget list的作用以及必要性
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • java 多线程基础, 我觉得还是有必要看看的
  • JS笔记四:作用域、变量(函数)提升
  • overflow: hidden IE7无效
  • Python连接Oracle
  • spring boot下thymeleaf全局静态变量配置
  • webpack4 一点通
  • 百度小程序遇到的问题
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 聚类分析——Kmeans
  • 马上搞懂 GeoJSON
  • 前端路由实现-history
  • 前嗅ForeSpider教程:创建模板
  • 一天一个设计模式之JS实现——适配器模式
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 飞书APP集成平台-数字化落地
  • # 数论-逆元
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #07【面试问题整理】嵌入式软件工程师
  • (~_~)
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C语言)fgets与fputs函数详解
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (动态规划)5. 最长回文子串 java解决
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (七)Java对象在Hibernate持久化层的状态
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)