测试系统没问题,正式系统就有问题的解决思路

来源:互联网 发布:java中嵌套循环 编辑:程序博客网 时间:2024/05/16 12:30

在项目,有时候会碰到在测试系统中测试什么问题都没有,但是一上了正式系统,就有问题了情况。
以本人目前碰到过的情况来分析,可能的原因有以下:(主要是找测试系统和正式系统的差异化,可能你觉得两者没有差异化,可事实上它就是存在的,就是你的预生产系统跟正式还是有些你意想不到的差别)

1。首选要抓住问题点在哪里,尽可能的缩小可能的范围,找好正式系统和测试系统之间的差异化:某段代码,某个数据库表,某个数据库字段,甚至是数据库表的索引是否唯一,比如之前是唯一的,现在改成不唯一了,但是实际上你的正式系统还是没改,只是在测试系统上,你测试的时候发现了并且改了,但是你忘了记录升级需要修改这个问题,所以就出现了。

2。可能是某个功能模块的代码正式系统和测试系统上部署的版本不一致

3。数据库表结构,字段索引,是否允许为null,默认值,(或者新增字段需要设置默认值,因为之前没有这个字段,新增了之后,原本的已经存在的数据需要设置为某个默认值,或者更新值)
例如错误:
错误信息:ChargingMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Duplicate entry ‘8369’ for key ‘charging_flow’
; SQL []; Duplicate entry ‘8369’ for key ‘charging_flow’; nested exception is java.sql.BatchUpdateException: Duplicate entry ‘8369’ for key ‘charging_flow’流水号为:8369

4。正式系统上是集群的,而测试系统上是单机的。(某些定时任务启用事物的时候,可能在双击的情况下会出现死锁,所以最好是定时任务由某台进行执行,或者采用分布式事务锁等)

5。本机是windows的,而服务器上是linux的,tomcat可能会加载两次应用:曾经出现过在linux下,一个应用被加载两次的问题,就有定时任务一下子执行两次的问题,看启动的时候,生成了多少个application对象就知道,这是因为tomcat的配置在两个环境下差异引起的。(就算你是默认的配置,linux下也会加载两次)

6。正式系统是https的,而测试系统是http协议的,这个时候有需要信任证书的问题。

7。在错误的点上,如果记录有日志,一定要去查看错误日志,这样是最方便定位的,而不是无头苍蝇一般的乱窜。或者在某个模块,整模块的查找。分析好各个功能的独立性,甚至是某个模块各个方法直接的独立性。尽可能的缩小问题所在范围

总计:
数据库问题:
表结构,索引(有无,是否唯一),数据库新增字段(需要将表中原有数据的新增字段设置为某个值)

代码版本问题:

单机,集群,分布式系统问题:

windows ,linux问题:

http,https协议差异化问题:

阅读全文
0 0
原创粉丝点击