• 这个是团队来定的,会选取历史版本中数据最好的一次,baseline的数据会持续更新

  • 首先,你想要做到的什么程度?你们现在目前面临的主要问题是什么?现有的人做现在的事情是出现了什么问题?如果要招人的话,是要解决什么问题?比如说,你现在服务端发布经常delay,发现每次定的发布时间点都测试不完?那首先不要想加人,是不是版本的内容本身太多了,或者是说提测质量太差了,随便点点就出现了问题?那首先是不是要评估版本是否可以拆分,开发自测是否充分?再考虑如过增加人员的话,是要做现在没有做或者做不到的事情?比如是否有持续集成,是否有单测,是否有线上监控,是否保障机制比如线上监控等等,如果加人是继续做业务测试的话,那1:1都会有问题,定规则,设卡点,让每个人都对质量负责,这样才是一个良性循环,在这个基础上,比如要做服务端接口测试,qa可以提想法可以基于自己业务的特点,找开源软件或者和开发共建接口测试框架,让这个工具实际为质量作出贡献

  • 兄弟,首先你要想清楚你是参与创业还是在创业公司工作,这个是本质区别,参与创业是对公司的方向有决定或者至少是有影响的,如果是这样的话,你就必须想清楚你要做的事情是什么,风险在哪里,可能的成就会在哪里,你的什么特质可以帮助到公司成长,可以和公司一起A轮,B轮... 或者是公司倒了,你是否有得到自己想要的东西?如果这些你都没有想清楚,只是前辈需要一个廉价的劳动力,做的事情也是打杂的话,初创公司打杂的可能性是比较大的,打杂几年后你的专业性是否可以跟上市场需求?不要说马云身边的人一开始都傻傻的跟着干,那你也要清楚 第一这是中彩票,第二 马云至少在95年就到美国看到过最新的技术,至少他有能力在北京做总经理!所以我的建议,如果想做技术,还好沉下心来研究技术,想做销售,也可以慢慢过渡售前售后技术支持,如果想玩,就继续混混日子,结婚生子也是不错的选择,哈哈哈,加油!

  • PC端周期判断,是jenkins任务吧?
    你们在锤子话,应该是不需要兼顾iOS?😀

  • 请教一下CI部署的思路,shell命令是怎么融入CI的流程的?是USB连PC?stf ?

  • @sandman 请教一下,我把帧率处理的格式化出来,加了一些注释,变量改一下名字,但是还是有几处不清楚,能抽空解答一下吗?

    if(NR==1){ # 如果只有一行数据的话
    r=$1/1000000; # r =16.6 刷新时间间隔
    if(r<0)
    r=$1/1000;
    secondcolumn=0;
    Frames=0;
    WN=1
    }
    else{ #第一列:app里数据(bitmap/material等)准备时间,第二列:cpu将数据传递给h/whardware)绘制时的同步时间(这里可以理解为cpugpu绘制一帧时,二个线程的同步时间)第二行第三列表示:h/whardware)绘制完成的时间
    if(Frames>0&&$0=="")
    tag=1;
    if(NF==3&&$2!=0&&$2!=9223372036854775807){ # NF 一行有3列【正常情况下】 第二列不等于0【正常情况】 第二列不等于那一串数字【正常情况】

    refeshround=($3-$1)/1000000/r; # 第一列减第三列 / 1ms的纳秒数 / 刷新时间间隔 x应该为这次的帧绘制跨越了几次的刷新时间间隔

    if(secondcolumn==0){ # 刚开始刷SurfaceFlinger的数据第二列是为0
    secondcolumn=$2; # 第二列标示刷新的开始时间
    Frames=1;
    jank=0;
    janktwo=0;
    if(refeshround<=1) # 如果一个刷新周期内就完成绘制
    totaltimediff=r; # C等于16.9ms
    if(refeshround>1){ # 如果大于一个刷新周期的话
    jank+=1; # jank就加1
    totaltimediff=int(refeshround)*r; # C就等于x取整倍的r
    if(refeshround%1>0) # 如果x不是整数的话,C要加上一个刷新周期?用意是???
    totaltimediff+=r
    };
    if(refeshround>2) # 如果x大于2个刷新周期话
    janktwo+=1;
    MFS=r; # 初始MFS等于一个刷新周期
    OKT=0
    }
    else{
    timediff=($2-secondcolumn)/1000000; # timediff 第二列和上一行第二列的时间差->ms
    if(timediff>500){ # 两帧之间的时间差
    tag=1 # 大于500ms认为是用户没有操作
    }
    else{# 两帧如果是小于500ms
    Frames+=1;
    if(timediff>=r){ # 时间差大于等于一个刷新周期
    totaltimediff+=timediff; # ???
    if(timediff>kpi) # kpi=16
    OKT+=1; # 超过kpi 16ms的次数就加1
    if(timediff>=MFS) # 如果时间差大于记录的MFS,则MFS记录为时间差
    MFS=timediff;
    if(refeshround>1)
    jank+=1;
    if(refeshround>2)
    janktwo+=1;
    secondcolumn=$2 #
    }
    else{ # 如果时间差小于一个刷线周期
    totaltimediff+=r;
    secondcolumn=sprintf("%.0f",secondcolumn+r*1000000) # ?为啥第二列要加上一个刷新周期呢?
    }
    }
    };
    if(Frames==1) # 我理解是如果是第一帧的时候,把FU时间记录下来
    FU=sprintf("%.3f",$2/1000000000)
    };
    if(Frames>0&&tag==1){ # tag0的时候表示是超过了127行后的一个空行,
    tag=0;
    if(Frames==1) # Frames如果等于1的话就认为是缓存帧?
    LU=sprintf("%.3f",FU+totaltimediff/1000); # 把最后时间加上这一帧的时间,然后继续
    else
    LU=sprintf("%.3f",secondcolumn/1000000000);
    Date=strftime("%F %Date",time+LU)"."sprintf("%.0f",(time+LU)%1*1000);
    FPS=sprintf("%.2f",Frames*1000/totaltimediff); # 帧率 出现的帧数【大于1*1000 / 两帧的时间差 1*1000 / 16.6 = 60FSS
    MFS=sprintf("%.0f",MFS);
    g=FPS/target; # 实际帧率和目标帧率的比值
    if(g>1) # 如果实际帧率大于了目标帧率
    g=1;
    h=kpi/MFS; #kpi 16ms / 两帧时间差
    if(h>1)
    h=1;
    SS=sprintf("%.2f",g*60+h*20+(1-OKT/Frames)*20); # 流畅度 = 实际帧率比目标帧率比值*60【目标帧率越高越好】 + 目标时间和两帧时间差比值*20【两帧时间差越低越好】 + (1-超过16ms次数/帧数)*20【次数越少越好】
    print FU"\t"LU"\t"Date"\t"FPS+0"\t"Frames"\t"jank"\t"janktwo"\t"MFS"\t"OKT"\t"SS"\t"WN;
    Frames=0; # Frames 重置为0
    if($0==""){
    secondcolumn=0;WN+=1
    }
    else{
    secondcolumn=$2;Frames=1;jank=0;janktwo=0;
    if(refeshround<=1)totaltimediff=r;if(refeshround>1){
    jank+=1;
    totaltimediff=int(refeshround)*r;
    if(refeshround%1>0)
    totaltimediff+=r
    };
    if(refeshround>2)
    janktwo+=1;MFS=r;OKT=0
    }
    }
    }
  • 你可以问一下 浮云...
    如果你可以在windows下可以用pycharm打开看一下 是不是 constants没有下载,是不是要 pip install constants,
    不过还是建议你看一下 浮云实现的代码逻辑


  • 你是用Android studio 是吗? 在这边配置一下你本地下载好的

  • 你们开发写单测吗?

  • 你这个看起来是gradle下载失败? 你可以用本地的gradle下一下,不要从网上下。
    flutter程序根目录执行 flutter doctor 命令,发出来看看