• PC 端最烦的问题是都看上去叫客户端,但不拆开来看根本不知道里面嵌的是什么玩意。
    目前调研结果是 ranorex 的适配性最好,但脚本对没接触过.net 的不太友好,除非是刚需不建议学,另外 ranorex 不是免费的。

  • 看这架势是我没说明白😅
    粗暴解决:

    from page_object import BasePage
    
    
    class MainPage(BasePage):
        ...
    
        def logout(self):
            from page_object import LoginPage # 放这里不报错
            ...
            self.click(self.btn_logout)
            return LoginPage()
    

    或者在用例里

    \\test_case\test_login_module.py
    from page_object import MainPage
    from page_object import LoginPage
    class test_login_module():
    
        def test_logout(self):
            ...
            MainPage().logout()
            login_page = LoginPage()
            # 下面的断言也不太合适,都面向页面了,就别在用例里查找元素了吧
            assert login_page.find_element_by_id(login_page.btn_login) != None
    
  • 简单粗暴的解决办法是在 logout 方法的内部 import LoginPage 。
    或者想想 logout 为什么要得到一个 LoginPage 对象呢,哪里要用这个返回值,有没有替代方案。

  • 一个菜鸡的精准测试实践 at 2021年08月09日

    这是把菜鸡的门槛又提高了么😂

  • 感觉问的不像是测试,而是性能工具的研发了,至少我个人没看过 locust 的源码,满足于 Jmeter😂
    TPS 里的 S 就是秒,结合上下文,每秒的 TPS 这一说法不就有点奇怪吗。
    每一秒完成的事务数是 TPS,所以只要定好时间范围,计算好事务数再除以时间范围就是最后的结果。
    如果目的是画图,想清楚横轴怎么设计就好了,应该没有哪个 TPS 示意图横轴刻度是 1 秒吧。
    对于问题一,感觉没什么毛病,这请求是在第二个 10 秒内被完成的,当然不能统计到第一个 10 秒里去,至于它是什么时候发起的并不重要。

  • 添加用户是一个接口,有成功响应以及各种失败响应。
    "输入合法用户信息,能够成功添加用户"这是一条用例,执行前得保证构造合法数据,想避免重复用时间戳做后缀是个不错的方法。
    “输入已存在用户信息,提示用户重复” 这是另一条用例,执行前得保证该信息一定已在库中。
    上面两条用例都是调用添加这个接口。
    至于删除相关的用例,应当有一个前置条件,前置条件可以是通过调用添加接口或其他方式来实现。
    所谓测试技术还是得围绕基础理论来转啊。

  • 很多人都有强烈的降低自动化测试门槛的欲望,想自己造轮子,让别人别造轮子,包括曾经的我自己
    就好比上网经历一样,谁没有不堪回首的过去呢😂
    认为业务不重要的,要么专职做偏运维类的工具开发,当然可能挂的是测试开发的头衔,要么等着被现实毒打。

  • 接口文档工具 at 2021年07月27日

    当初选型看了下,感觉 API FOX 挺方便,把暂时用得上的功能都整合了。
    但是不开源,所以最后还是重新改造了一套。
    原因有三:
    1、对接内部的其他平台,比如我们的 API 得有注册、审核,发布到不同环境。
    2、公司层面不愿意把数据放到别人的平台上,私有化部署就意味着成本,老板都是想白嫖,除非真的把握住了痛点。
    3、把数据放在外面等于变相地给自己制造痛点...

  • 嗯,想想为什么这些先行者们最终不愿意维护这样的平台了😂

  • 这题最简单的解法不就是栈吗,正则才是炫技吧
    就 25 楼的答案,不上机测试有多少人能看明白结果对还是不对😂

  • 性能测试跟功能一样,先得有需求吧,再有设计,执行,比对预期结果和实际结果。
    光从图上看,几千用户的时候 rps 就到峰值,后面的响应时间都是几十秒,什么业务系统能容忍这么高的响应时间呢?
    如果是想把服务器 CPU 压满,那对于瓶颈本来就不在 CPU 的怎么压,再说 RPS 都上不去了追求 CPU 利用率有什么意义。

  • 某知名车企提过的一个需求:
    测试人员手工执行时,通过计算机视觉生成自动化用例用于回归测试

  • 看代码风格 4 楼就赢了😂

  • 服务器的带宽够,那测试机的够吗?

  • 看着像是 celery 与 python 的版本冲突,网上有相关的详细说明,解决的话 python 降级或者 celery 降级。

  • 是不是同时开了 fiddler 这样的抓包工具😅

  • 需求不难,但是提的问题把旁观的人都绕进去了,

    class MyTest(unittest.TestCase):
        def tearDown(self):
            if hasattr(self, '_outcome'):  # Python 3.4+
                result = self.defaultTestResult()  # These two methods have no side effects
                self._feedErrorsToResult(result, self._outcome.errors)
            else:  # Python 3.2 - 3.3 or 3.0 - 3.1 and 2.7
                result = getattr(self, '_outcomeForDoCleanups', self._resultForDoCleanups)
            error = self.list2reason(result.errors)
            failure = self.list2reason(result.failures)
            ok = not error and not failure
    
            # Demo:   report short info immediately (not important)
            if not ok:
                typ, text = ('ERROR', error) if error else ('FAIL', failure)
                msg = [x for x in text.split('\n')[1:] if not x.startswith(' ')][0]
                print("\n%s: %s\n     %s" % (typ, self.id(), msg))
    
        def list2reason(self, exc_list):
            if exc_list and exc_list[-1][0] is self:
                return exc_list[-1][1]
    

    参考https://stackoverflow.com/questions/4414234/getting-pythons-unittest-results-in-a-teardown-method
    或者学习 pytest 的@pytest.mark.hookwrapper

  • 如何培养结构化思维? at 2021年06月23日

    B 站有个讲数据分析的课程,其中有个环节就是说结构化思维,具体链接就不放了,自己搜索下吧

  • 卡两天的话,不如想想这里是不是过度设计了,有必要再封装一个 request 方法吗?
    用例里直接 requests.post(HOST+'login', json={}),可读性还强点
    HOST 从配置文件取还是从命令行取就都比较简单了

  • 看着像是内部推广平台失败的在这发牢骚😅
    首先别人有提升自己技术能力的诉求,你无权剥夺,当然如果能打动管理层,可以强制落地;
    其次如果平台真的好用,被抵制了开源出来,也许能有意外收货呢?

  • 我在京东也出过事,异地登录用我的白条下订单。
    夜间操作并且伴随短信轰炸,让你无法关注到京东发来的短信。
    如果不是当时我在熬夜打游戏就中招了。
    找官方就说是我个人隐私泄露,顺带把我的白条封了并加入风险用户,所以还是得自己小心。

  • 各项都不错,唯独缺了薪资待遇😅
    到底是失误还是画饼呢?

  • 接口自动化测试平台构想 at 2021年06月08日

    如果现状是手写测试代码很吃力,很难想象平台能带来效能提升

  • 请教一个 sql 查询问题 at 2021年06月02日

    SELECT
    category,
    id
    FROM
    test_table
    WHERE
    _value IN (
    SELECT
    max( _value )
    FROM
    test_table
    GROUP BY
    category)

  • Web UI 不规范元素 定位 at 2021年05月25日

    xpath 的轴定位可以解决此类问题