• 自动化测试工具求推荐 at 2025年03月07日

    问了 DS,给的答案都要经过两周甚至一个月去开发工具,但是现在项目时间紧张,有没有现成的工具?
    现在已有的迁移工具,一次可以升级几个文档库,一个库可能有几千个文档。
    迁移后就需要测试甚至开发一起去对比文档,怎么能把这个工作变成自动化的呢。

  • 兄弟们预约个税了吗 at 2025年03月07日

    这不是说明你的工资是在涨的吗

  • 僅樓主可見
  • 如果专业是非计算机相关的,是不是也是直接 pass

  • ds 回复是这样的,不过我们都是基础断言

  • 接口自动化测试的断言设计是确保接口功能正确性的核心环节,主要围绕 响应数据、业务逻辑、性能和安全 进行验证。以下是常见断言设计方法和实践:


    一、基础断言设计

    1. HTTP 状态码验证

    # 示例(Python + requests)
    response = requests.get(url)
    assert response.status_code == 200  # 验证状态码
    

    2. 响应体内容验证

    • 字段存在性
      验证关键字段是否存在: python data = response.json() assert "user_id" in data, "user_id字段缺失"
    • 字段类型
      验证字段数据类型: python assert isinstance(data["price"], float), "price字段类型错误"
    • 字段值匹配
      验证字段值是否符合预期: python assert data["status"] == "success", "接口状态异常"

    3. 数据结构校验(JSON Schema)

    使用 JSON Schema 验证响应体的完整结构:

    from jsonschema import validate
    schema = {
        "type": "object",
        "properties": {
            "id": {"type": "number"},
            "name": {"type": "string"},
            "is_active": {"type": "boolean"}
        },
        "required": ["id", "name"]
    }
    validate(instance=data, schema=schema)  # 自动抛出异常
    

    二、高级断言场景

    1. 数据库验证

    接口操作后,验证数据库数据是否正确更新:

    # 示例:验证用户创建后数据库存在记录
    db_result = sql_query("SELECT * FROM users WHERE id=1001")
    assert len(db_result) == 1, "数据库写入失败"
    

    2. 业务逻辑验证

    验证接口是否满足业务规则,例如:

    • 订单支付后状态变为 "paid"
    • 库存扣减与实际购买数量一致

    3. 异常场景断言

    • 非法参数时返回错误码: python response = requests.post(url, data={"amount": -100}) assert response.json()["code"] == 400 # 验证错误码
    • 权限不足时返回 403

    4. 性能与安全

    • 响应时间:接口响应不超过阈值(如 500ms) python assert response.elapsed.total_seconds() < 0.5
    • 敏感信息脱敏:密码、token 等字段是否加密或隐藏
    • SQL 注入防护:输入特殊字符时接口是否安全拦截

    三、动态数据处理

    1. 时间戳/随机 ID

    使用正则表达式或忽略动态字段:

    # 示例:忽略时间戳差异
    expected = {"id": 1001, "create_time": "ignore"}
    actual = {"id": 1001, "create_time": "2023-10-01 12:00:00"}
    assert expected["id"] == actual["id"]
    

    2. 依赖数据传递

    上一个接口的响应作为下一个接口的输入:

    # 创建用户后获取user_id,用于后续查询
    user_id = create_user_response.json()["user_id"]
    query_response = requests.get(f"/users/{user_id}")
    assert query_response.status_code == 200
    

    四、断言工具与框架

    1. 常用断言库
      • Python:pytestassert关键字)、unittestself.assertEqual()
      • Postman:pm.test() + Chai.js 语法
      • Java:JUnit/TestNG + AssertJ/Hamcrest
    2. 专用工具
      • JSON Path:提取复杂 JSON 中的嵌套字段(如 data.items[0].name
      • XML 断言:XPath 验证 XML 响应
      • GraphQL:验证查询结果结构

    五、最佳实践

    1. 明确断言目标:聚焦核心逻辑,避免过度验证(如不重要的 UI 字段)。
    2. 分层断言:先验证状态码,再验证关键字段,最后验证完整数据。
    3. 优先关键路径:重点覆盖主流程,再补充异常分支。
    4. 动态数据处理:通过占位符(如 {{timestamp}})或正则表达式匹配动态值。
    5. 断言与日志结合:断言失败时输出详细日志(如实际响应体)。

    示例:完整的接口测试用例

    def test_create_order():
        # 1. 发起请求
        payload = {"product_id": 100, "quantity": 2}
        response = requests.post("/orders", json=payload)
    
        # 2. 基础断言
        assert response.status_code == 201
        data = response.json()
        assert "order_id" in data
    
        # 3. 数据库验证
        order_id = data["order_id"]
        db_data = sql_query(f"SELECT * FROM orders WHERE id={order_id}")
        assert db_data["status"] == "created"
    
        # 4. 业务逻辑验证
        assert db_data["total_price"] == 200 * 2  # 单价200,数量2
    

    通过合理设计断言,可以精准定位接口问题,确保自动化测试的可靠性和可维护性。

  • 去咸鱼啊,可以帮人改简历,内推,搭框架,构建整个自动化测试流程之类的吧

  • 已婚的朋友看过来 at 2025年02月17日

    不婚不育保平安

  • 问题已经定位了,就是时区问题。我粘贴写开发写的故障根因:海外时区问题导致前端带给后端的标志 **比实际日期小 1 天,后端判断为第三方调用,但接口配置了读写分离走从库,从库只读不能写,导致功能失败
    云桌面内走的是主库,不存在该问题

  • 公司大搞 ai 代码生成率,自动化测试代码也有要求,只能硬着头皮用吧

  • 目前项目组用 AI 生成功能测试用例,接口自动化用例,渗透测试,提效还是有的吧

  • 手机已经尝试过了,没有复现,应该还是与 vpn 接入有关。

  • 考公?

  • 以上是 ai 回复的,只做核心功能/基础功能的 ui 自动化 + 全量的接口自动化我觉着是可行的,我们现在就是这样的。每次有新版本就跑一遍,有安卓和 ios 两个 jenkins 流水线,缺点是只有两台机器执行,100 多条用例,执行时间久。

  • 来自互联网的消息
    对于在 APP 迭代频繁的情况下引入自动化测试,以下是一些建议:

    测试框架选择:挑选灵活且易于维护的自动化测试框架,像 Appium,它支持多平台,能与多种编程语言结合,便于根据项目需求调整。
    核心用例选取:梳理手动测试用例,选出稳定性高、重要的核心用例进行自动化。这些用例在 APP 迭代中变动较小,能保证自动化测试的有效性和稳定性。
    持续集成与持续交付(CI/CD):搭建 CI/CD 流程,每次代码更新后自动触发自动化测试。这样能及时发现新代码带来的问题,提高测试效率。
    数据驱动测试:采用数据驱动框架,将测试数据和测试脚本分离。当 APP 迭代时,只需更新测试数据,而不用大量修改脚本,减少维护成本。
    定期维护脚本:随着 APP 迭代,定期检查和更新自动化测试脚本,确保其与新功能和界面适配。同时建立脚本版本管理机制,方便回溯和维护。
    你可以先从核心用例自动化入手,逐步推进自动化测试工作。你目前使用的是什么测试工具呢?是否有一定的编程基础?

  • 最后一条,就是通过远程连接用户的桌面看到的报错接口😣

  • 是的,通过日志开发没发现问题,今天和他们一起看了代码,可能某个接口的判断要优化下,还不确定。

  • 我今天试了移动端科学上网,直接进行操作,没有复现;web 端科学上网后访问我们的网址,提示 404,现在我有一个同事说可以移动端模拟国外的某个网关,他帮我操作下。😂

  • 2024 年大家都过的好吗? at 2025年01月23日

    努力还房贷,消费降级,抠抠搜搜;体检发现一个结节,检查下来是良性的,明年做增强 ct;工作技术等无明显进步;平平淡淡又一年。

  • 但是我觉得,内心深处自傲的人还是很多的,总觉得自己永远是对的人更是随处可见。只是大多数人很少有机会去表达,缺少听众。精致利己的人,既得利益者会换位思考,也是一个很好的角度啊,能够更好的反鸡汤 [dog.jpg]

  • 2024 年,存到钱了吗? at 2025年01月15日

    都还房贷了....

  • 26 要回流的吧 我们的项目经理就是

  • 海盗派测试 at 2019年11月27日

    海盗派测试分析还在我桌上摆着

  • Mac 上的常用办公软件 at 2019年08月26日

    刚买了 pro,很需要了!

  • XPATH 定位最全总结 at 2019年08月26日

    这个有什么问题吗?