也是比较具体的实践路线,感谢给出的建议
感谢给出比较具体的例子,我会试着按照您给出的具体方式去调整用例设计的。并且在空闲时也按照上边给出的具体方式去实践的。
我这个测试系统是有点偏向低代码,就明道云那种类型的项目。在写用例过程中也的确存在你列出的 ---- 这导致主流程下会有很多的支线流程。而写测试点容易停留在主干流程,但写成具体用例时需要覆盖各种分支场景,这导致设计时感到逻辑缠绕,因此心里没底就会产生” 奇怪 “的感觉---
虽然只有我一个人,但是我也还挺有压力的,因为感觉相比研发、产品、实施,自己存在感比较低。好像价值不大,更不能创造出很有价值的东西。自从开始测试这个项目,做的最多的也就是纯功能测试,每次一听到有人反馈 bug,就是自己内心一咯噔。虽然知道不可能有完全没 bug 的系统,但是也还是会控制不住自己。有的时候,有些 bug 确实是我没有测到。平时写用例并没有按照 -- “场景法”+“状态迁移法” ,“边界值法” 与 “异常路径” , “判定表”,用例设计分层这些具体的方法去写用例,最近写完了一个新功能的用例,我再试着去用这些方法,具体实践一下。
你可以按照这个思路去构想一下
1.首先介绍一下功能测试 - 因为是面向大家的,而这个群体可能有的对功能测试认知比较片面
2.介绍一下自己平时在功能测试过程中的步骤,可以突出强调一些自己觉得比较好的方面 - 这样可以让大家快速知道哪些是值得借鉴的点
3.以某个案例具体说一下怎样展开测试,以及问题排查,最后验证问题的解决
4.分享一些测试学习资源
我平时测试确实也比较表面化,虽然接触这个系统很久了,但是还不能完全说出它背后的流程,看来对业务这一块的熟练度还很欠缺。
好的,我按照这样的方式去实践一下。
看到大家的很多回复都是说要熟悉业务,但是我目前每次接到一个新功能的测试任务都会按照以下步骤进行,看起来我并没有过多接触业务,我是不是应该主动去寻求接触业务的可能
1.看一遍需求文档结合产品给出的文字说明结合原型图梳理出尽可能全面的测试点
2.把这个需求文档扔给 ai,让他给我梳理一下测试点
3.对比 1,2 进行查漏补缺
4.开始写用例
5.先进行第一轮自己评审,修改编写用例过程中的错别字或者是描述不合理的场景或者是错误的操作步骤或者是本期不实现的功能点
6.列出所有功能的测试重点
7.准备测试数据
8.产品二轮评审,修改用例
9.拿到可以测试的功能后,按照之前列出的重点,先冒烟测试一轮
10.评估一下当前功能的质量,决定要不要打回,大概率是不会进行打回,会继续测
10.先测试高优先级用例
11.记 bug,在提出一个 bug 的时候我会进行排查具体是什么原因,有时候自己也能提供 70% 的解决思路
12.回归修过的 bug
13.总结本版本测试过程中用例编写问题,bug 记录问题
是的,单纯只按照需求文档列出的功能点测试是不是就认为是很一般的功能测试呢?
你也是差不多的工作年限和现状吗?那考虑做个搭子吗?一起改变自己。我一个人总是半途而废。自身技术不够,又老想着拖延。
确实,同意您的说法。但我现在属于哪个都不精进。确实要按照您说的先解决痛点,然后再选定方向,一步步深耕。最后才会慢慢提升。我会按照这个建议结合自身实际慢慢对自己做出改变
纯点工肯定不行的,但是我想要结合测试这方面提升一下自己开发技术。其实之前有短暂接触过前后端,自己有写过很简单的前后端分离的那种系统。特别的基础。后来误入测试,开发在我日常的工作中没有什么实践机会。我之前也看过前端代码,想着自己测试熟悉功能,能看代码然后学会写。但是怪我自己没坚持。有时候测试工作紧张。我下班后又不想多学会。时间一久就搁置了
我主要接触的就是每次的功能宣讲以及编写测试用例过程中的打磨这些,实际业务使用场景我其实接触的不同。但是通过我测试的这个应用有实施人员搭建出客户的实际使用场景。不过没有人会专门给我培训客户实际使用场景。这样的话,我是不是就需要自己去看一下客户的实际使用场景,然后再结合自己的测试用例,每一轮新功能测试完成后都按照这个方式去,慢慢的就能提升自己的业务能力呢
好的谢谢!
也感谢这位大佬的解答!
试了这个,果然不弹那个错误了,感谢大佬!!
但我还有一个疑惑。我自己新建的项目在微信开发者工具打开的时候,本地设置并没有加载启用数据预拉取选项。我想知道一下一般什么类型的项目会有这个加载项呢
我对比了一下这两个项目的 project.config.json 文件内容,发现显示启用数据预拉取选项的配置了"preloadBackgroundData": true,但是当我删除了"preloadBackgroundData": true,,清除缓存,再重新打开这个项目的时候,我发现本地设置还是显示启用数据预拉取选项。
1.我在微信开发者工具已经把 miniprogram-demo 这个项目调通了,多次运行 allure_debug.py 也是可以跑通那个 pytest-mini 插件示例的代码的,也就是你给出的https://github.com/zx490336534/pytest-mini/tree/main/demo链接
2.但是我执行那个 allure_debug.py 的时候,还总是会有超时提示,你之前实践的时候有明确配置允许连接微信开发工具的超时时间吗?可以明确避免 call App.callWxMethod] receive from remote timeout 问题
3.你提到的 npm run init 应该是指在调通 miniprogram-demo 小程序项目过程的时候执行的命令吗?这和执行 pytest-mini 下的 demo 脚本有什么关系呢
Plugin: helpconfig, Hook: pytest_cmdline_parse
ConftestImportFailure: TypeError: plugins() got an unexpected keyword argument 'timeout' (from D:\auto_test\miniprogramtest\cases\conftest.py)
For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning
config = pluginmanager.hook.pytest_cmdline_parse(
ImportError while loading conftest 'D:\auto_test\miniprogramtest\cases\conftest.py'.
Generating report to temp directory...
��ֹ�����������(Y/N)? �
多次执行的时候还会出现这个问题,还有乱码出现,已经设置了 pycharm 的编码为 UTF-8,同时也重启了服务,但是还是乱码显示
好的,谢谢!!
执行 allure_debug.py 文件时,控制台一直提示
test_home.py:4 test_view_container - TypeError: 'module' object is n…INTERNALERROR> Traceback (most recent call last):
能提供一下解决方案吗?感谢!!
加 1,卡在自动化这,没有太明显进度。希望有人能给指导一下
请教一下反向有哪些场景呢?没做过这块的测试,想了解一下
同求!!
以下是基于 Cursor + 自动化截图对比 的快速实施方案,可在 4 小时内搭建完整流程:
安装核心工具链
npm install playwright playwright-extra pixelmatch fs-extra
pip install Pillow opencv-python numpy
# 二、基础脚本开发(30 分钟)
async function captureScreenshots(urls, outputDir) {
const browser = await chromium.launch();
const context = await browser.newContext({
viewport: { width: 1280, height: 720 }
});
for (const [index, url] of urls.entries()) {
const page = await context.newPage();
await page.goto(url);
await page.waitForLoadState('networkidle');
// 核心截图逻辑
await page.screenshot({
path: ${outputDir}/screenshot_${index}.png
,
fullPage: true,
animations: 'disabled'
});
}
await browser.close();
}
// 示例调用
captureScreenshots(
['http://old-editor/doc/123', 'http://new-editor/doc/123'],
'./screenshots'
);
def compare_images(old_path, new_path, diff_path):
old_img = Image.open(old_path).convert('RGB')
new_img = Image.open(new_path).convert('RGB')
# 智能对比算法
diff = ImageChops.difference(old_img, new_img)
diff_array = np.array(diff)
# 差异可视化增强
_, threshold = cv2.threshold(
cv2.cvtColor(diff_array, cv2.COLOR_RGB2GRAY),
25, 255, cv2.THRESH_BINARY
)
contours, _ = cv2.findContours(
threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
)
# 生成差异标注图
result = cv2.imread(new_path)
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(result, (x,y), (x+w,y+h), (0,0,255), 2)
cv2.imwrite(diff_path, result)
return len(contours) > 0
document.querySelectorAll('.timestamp, .ads').forEach(el => el.remove());
});for (const device of devices) {
const deviceSpec = playwright.devices[device];
const context = await browser.newContext(deviceSpec);
// ...截图逻辑...
}
文档列表准备
mongoexport --uri=mongodb://localhost:27017/docs --collection=articles --fields=_id --type=csv > docs.csv
并行执行命令
cat docs.csv | xargs -P 8 -I {} node capture.js --docId {}
差异报告生成
from dominate import document
from dominate.tags import *
with document(title='Diff Report') as doc:
h1('Content Diff Report')
for diff in diffs:
div(img(src=diff['old']), img(src=diff['new']), img(src=diff['diff']))
with open('report.html', 'w') as f:
f.write(doc.render())
优化策略 实施方法 效果提升
智能缓存 对未修改文档跳过截图 减少 60% 工作量
增量对比 仅对比修改时间>上次运行的文档 缩短 70% 时间
GPU 加速 启用 playwright._impl._driver_process GPU 支持 提速 3x
分布式 使用 K8s Job 分片处理 线性扩展
# 六、灰度验证策略
影子模式对比
// 同时加载新旧编辑器进行实时对比
async function shadowCompare(docId) {
const [oldPage, newPage] = await Promise.all([
browser.newPage().goto(oldUrl),
browser.newPage().goto(newUrl)
]);
const [oldShot, newShot] = await Promise.all([
oldPage.screenshot(),
newPage.screenshot()
]);
return compare(oldShot, newShot);
}
渐进式验证
第一阶段 → 对比核心文档(1000 篇)
第二阶段 → 对比模板文档(所有模板类型)
第三阶段 → 全量文档滚动对比
# 七、操作成本对比
方案 5000 文档耗时 准确率 硬件成本
人工抽查 40 人天 65% 0
文本对比 2 小时 92% 低
截图对比 25 分钟 98% 中
通过该方案,可实现每小时验证 12,000+ 文档 的视觉一致性。建议结合文本对比方案使用,先执行快速文本对比,再对存在差异的文档进行精准截图对比。
以上步骤如果楼主执行了,请反馈一下。以上答案是问的 deepseek.我没有具体的系统场景,所以想了解一下最终问题是否有效解决!
点赞