• 之前研究线上日志聚合时,也调研过相似度,有两种方法:
    一种是简单的,python 标准库里有个 difflib,也可以用来比较两个文本的相似度,像这样:

    def similarity(str1, str2) -> float:
    '''获取两个字符串的相似度 [0~1]'''
    sm = difflib.SequenceMatcher(None, str1, str2)
    return sm.ratio()

    只是要不断的调整阈值,挺难定义的。(最后还是被我给废掉了,原因是我统计崩溃日志时,同一种原因的崩溃,但在两处位置调用,从bug的角度讲,这是两个位置的bug。但从文本相似的角度讲,这是一个bug。结果碰上个也不太细心的开发,最终bug没修复彻底)
    一种难点的,也是使用google的算法
    只说下思路:
    1、使用google的simHash 算法,获取文本的唯一指纹信息
    2、比较两个指纹的Haming距离,当距离小于3时即认为相似
    但实际使用时,当文本长度越长,对有差别的内容检测就越模糊,虽然可以通过加权的方式调整,但实际上仍很麻烦

    我比较同意作者的思路,没事就应该多折腾尝试,兴许就发现更多的测试思路和巧,不过也同意@Ouroboros 的观点,测试就看不那么相似的,如同我遇到的那个问题,两个相似度极高的崩溃log,它是两个bug

  • 能解决问题就好,何必在乎是否是重复的轮子,纠结于这个的话,你最好自己搞一套编程语言吧

  • 这几年的杂乱总结 at March 01, 2019

    我也有必要做这么一个总结

  • JMeter 与 Locust 压测结果比对 at September 17, 2018

    作者大大,这个问题现在解决了吗,已经放弃locust了吗,最近在学习locust,对比jmeter的结果,吓我一跳

  • 使用adb 统计流量不行吗,为什么弄这么复杂?

  • hi,我通过uid统计的流量之和,发现与实际的流量相差很大,差不多在两倍左右(实际流量我是通过开发在代码中打印请求响应大小的log),所以我怀疑使用此方法统计流量时有重复累加的可能。查找到这个文章http://www.voidcn.com/article/p-tolukrhb-vz.html

    其中acct_tag_hex 为0x0的一行为某应用开机以来产生的总流量



    所以,这样的话,我想如果把包含uid的所有行里的数据累加,可能会出现重复统计,差不多刚好一倍,因此我在代码中把0x0过滤掉了

    if 'wlan' in line and '0x0' not in line:

    之后,再统计的结果中,下行流量总和与开发给出的结果很相近。

    • adb统计:
    • log打印:
      但不清楚我的猜测是否正确,请多多指教

  • 你的这个没有定义driver对象,所以是NoneType object,应该把self传进去,使用self.driver.swipe