测试人员如何定位bug-实操一

项目一(小程序发布管理)

这个项目比较简单,所以对于测试工作的要求相对基础。涉及的模块如下:概览,版本管理,代码库管理,构建配置,持续集成,小程序包管理。具体的项目我觉的介绍没有多大意义,作为一个测试新人,想分享一下测试中发现的具体bug。

bugNO.1(与数据库操作有关)

在测试中,产品需求里面有个定时清理小程序包的规则:测试包保留两个月,生产包保留前十个版本,测试思路如下(主要针对测试小白进行分享,大佬欢迎指教):
1 在与开发沟通前,我能想到的是,测试包保留两个月,肯定是需要对数据库进行操作,不然这个测试点咱不可能真的等待两个月再去进行验证的,那是笑话。
2 猜想,应该是更改数据库中的某个与时间相关的字段,达到模拟两个月的效果
带着这个思路就可以去请教开发了,开发要做的就是告诉咱们测试,在哪个数据库,哪个表,哪个字段,进行操作可以实现这个测试点的正确验证。
经过与开发沟通,验证方案如下:
1 验证点:测试包保留两个月,生产包保留保留两个月 并且在前十个版本;
2 需要更改某表的create_time字段的时间,开发表示定时清理触发是在凌晨一点。
那么,我们发现这个凌晨一点定时清理触发似乎也没那么快。但是考虑到这个验证点时间充足,就先不管这个了。我在修改时间的时候,考虑到边界值,某个测试包的create_time设置到“刚好两个月”,设置到“两个月多1天”,一个设置到“两个月少1天”。3中时间设置,预测结果是:设置两个月多一天的情况下,测试包才会被清理。生产包是同理,只不过要考虑保留最近的是个版本包。
实际结果:多次测试的情况下,发现有时候这个满两个月的测试包每一被清理。那么清理存在问题
bug定位:开发自己定位,发现原来是环境问题,定时任务跑到其他测试环境了(我们的测试环境有3套,有时候存在环境问题),解决方案,开发给我写了个定时任务触发的接口,在我修改时间以后,只需要执行这个接口,即可看到效果。

bugNO.2(善用F12)

在测试历史包和生产包状态变更时,发现测试包里面还会有生产包(当一个包成为生产包时,状态包里就不应该存在这个包了。根据ID可以区分),看后台传参发现,前端envtype这个参数不仅传了sit,还传了prd。告诉前端删除这个传参即可。
测试包生产包效果截图
这个主要是用到浏览器的F12,
此处举例,当时bug没有截图了
本文抛砖引玉吧,个人感觉作为一名测试,最需要的是这种经验的分享。所以希望以后有更多的大牛结合实际的测试,来讲述如何定位bug解决bug。关于F12里面的请求参数,响应参数,各位自己补充相应的知识,我目前也在不断的总结学习中,反正很有用就是了。给开发提bug的时候,结合bug定位来提,开发都会对你另眼相看。后续我还会继续分享的。

### 单片机面试实操题目 #### 1. STM32最小系统设计 描述STM32F103的最小系统组成及其功能模块。 - **硬件部分**:包括晶振电路、复位电路、电源管理以及调试接口(如SWD或JTAG)。这些组件共同构成了单片机运行的基础环境[^2]。 - **软件初始化**:编写段代码完成GPIO端口配置,使LED灯闪烁。以下是示例代码: ```c #include "stm32f1xx.h" int main(void) { RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // 启用GPIOA时钟 GPIOA->MODER &= ~(0x3 << (2 * 5)); // 设置PA5为输出模式 GPIOA->MODER |= (0x1 << (2 * 5)); while(1){ GPIOA->ODR ^= (1<<5); // 切换PA5状态 for(int i=0;i<100000;i++); // 延迟循环 } } ``` #### 2. 结构体应用 创建个结构体用于存储学生信息,并通过指针访问其成员变量。 ```c struct Student { char name[20]; int age; float score; }; void displayStudent(struct Student* s) { printf("Name: %s, Age: %d, Score: %.2f\n", (*s).name, (*s).age, (*s).score); } int main() { struct Student stu = {"Alice", 20, 87.5}; displayStudent(&stu); return 0; } ``` 此程序展示了如何定义和使用结构体,同时演示了指针的操作方法[^2]。 #### 3. 位操作练习 给定个无符号整数`num`,执行系列位运算并观察结果变化。 ```c unsigned int num = 42; // a) 将第3位置1 num |= (1 << 3); // b) 清除第5位 num &= ~(1 << 5); // c) 检查第4位是否为1 if(num & (1 << 4)) { printf("Bit 4 is set.\n"); } else { printf("Bit 4 is not set.\n"); } // d) 左移两位 num <<= 2; // e) 右移位 num >>= 1; // f) 统计置1的位数量 int count = __builtin_popcount(num); // g) 所有位取反 num = ~num; printf("Final binary representation: %u\n", num); ``` 这段代码实现了对指定比特位的各种常见操作[^3]。 #### 4. 串口通信模拟 利用Keil工具链开发基于AT89C52单片机的UART收发功能。具体步骤如下: - 初始化波特率寄存器SMOD、PCON等参数; - 编写中断服务函数处理接收到的数据包; - 使用串口助手验证实际传输效果。 --- ### 测试流程与Bug处理机制 当测试人员撰写完份详尽的测试报告之后,还需要参与后续评审会议讨论潜在风险点,并协助开发者定位缺陷根源。如果发现了新的问题,则应按照既定模板记录至跟踪管理系统中等待修复确认[^1]。 对于已知错误,通常遵循以下原则处置: 1. 明确重现路径以便快速排查原因; 2. 提交变更请求文档说明调整细节; 3. 安排回归测试确保改动未引入副作用。 --- ### 技能评估与发展愿景 经过四年多专注于汽车电子领域的工作经历积累,在嵌入式软硬件协同优化方面具备较强竞争力。尤其精通CAN总线协议栈解析技术及远程固件更新框架构建技巧。未来期望能够带领团队攻克更多复杂项目难关,推动智能化转型进程加速前行。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值