项目缺陷问题总结

一、ab个性化实验

1. 性能问题

场景:

创建一个个性化实验,包含两个子实验,此时开启个性化实验campaign,子实验也被开启,

第二步,暂停个性化实验,提示暂停成功,

第三步,停止个性化实验,提示停止成功,但是状态变成暂停,实际是停止状态。

原因:

如果都在构建器里操作由于有页面的loading过程,后端异步计算campaign状体就不会冲突;目前操作没有这个限制,导致两次操作的异步状态计算逻辑发生冲突。
 解决思路:
如果发现上一次异步状态变更没有结束就不要进行第二次计算避免状态错误,但是感知不到上一次的状态,无法操作。
 最终解决:
把异步任务去除了,如果调用修改状态的接口成功后,不等待状态转换,跳过中间状态,以终态计算campaign的状态。
 
-··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  

2. 测试验证点参考

列表页展示已经创建的数据,分为3个tab,全部、草稿箱、回收站

新建一个实验,只完成第一步,该实验自动保存到草稿箱,此时点击返回列表,有两种选择,第一是展示全部tab,第二是展示草稿箱tab。

当时发现的bug是这样的,退回到草稿箱tab,但是展示的数据是全部的数据,也就是数据错乱了,定位有问题。

 
-··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  

 二、渠道商供应链

资金工作台 acp,对应拍档客户。商机工作台 p4p,对应直销客户,包括私海,公海,服务中客户

不同客户 属于不同的客群,客群有客群id

不同客户 可以有不同的方案,方案有方案id

根据客群id 和 方案id,在不同的工作台分别展示。

 

将一个原本属于p4p商机工作台的客群,修改为acp资金工作台的客群,其他字段不动,此时根据客群映射就应该在acp资金工作台展示。

现在造一个拍档客户,打上上述客群的标签,则会在资金工作台展示

测试过程中一个场景:资金工作台支持客户的【去跟进】操作,客户跟进填入产品和意愿度后,预期结果是在tab【我的跟进】里查看到,而如果绑定了上述客群,就会出现跟进信息填完后客户没有在【我的跟进】里,并且属于give up状态

原因:这个客群只被修改了归属工作台的字段,实际映射关系没变,导致提交时匹配不到对应客群字段,透出give up结果。

 
-··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  

 三、Redis中间件分布式存储

内容:
创建(文件、目录)、打开(读打开、写打开)、写入、读取(顺序读、随机读)、边写边读、关闭、删除、
从NAS加载(文件、目录)、从磁盘卸载加载的、
dfx:服务断了(各种期间workermaster、gcs),一次或多次写入数据量过大(并发)、心跳断了RPC异常、网络断了、丢包chaosblade

用例:
有set,get,delete方法,worker1 执行 set key,ttl(自动删除时间)=60;
worker1和master1 故障,超过ttl的时间重启恢复;
预期worker1自行删除成功,此时调用get获取失败,worker2delete失败
实际 worker2delete成功
原因:恢复重启之后,过期的数据要在对账之后才能自动删除成功,此时的delete状态错误。

问题1:
堆栈溢出coredump:使用大的局部变量(因为局部变量都分配在栈上),这样容易造成堆栈溢出,破坏系统的栈和堆结构,导致出现莫名其妙的错误。解决办法:使用动态内存分配机制,new/delete。要注意释放已分配内存,避免出现内存泄露。
其他coredump:内存访问越界,多线程程序使用了线程不安全的函数,多线程读写的数据未加锁保护,空指针。

问题2:
1. 版本问题:多种语言使用的情况下,java,c++,python,会导致某些情况下测试结果与预期不同,比如value值输入失败,先考虑 测试版本比如Java、python的版本是否和开发一致。
2. 一致性问题:对象缓存中:多台机器的情况下,比如写数据:具有同步、异步两种,同步的时候,W1创建,W2,W3也同时创建,异步则不会同时创建。
3. 权限问题:chmod 777 / chown -R chuting:chuting /home/ct拥有者
4. 测试全面性:首先不能忘了语义测试:比如这个接口只可以调用一次,测试1次,2次,多台并发调用。
5. 网络故障:ChaosBlade
{"code":200,"success":true,"result":"c29053229c16c839"}

复制代码
//c++并发
#
include<iostream> #include<thread> using namespace std; void proc(int a) {     cout<<"子线程"<<endl; 创建线程。 } int main() {   cout<<"主线程"<<endl;   int a=9;   thread th( proc , a ); 实例化,传入函数名,和函数所需要的参数。   th.join();   return 0; }
复制代码
Git项目版本管理
克隆远程仓库:git clone [ gitee仓库路径 ]
添加修改记录:git add --all ./
提交本地仓库:git commit -m "备注信息"
同步远程仓库:git push origin master

 

-··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  -··-  
 
 
posted @   云云淡淡  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示