5月 09

Code Health:Understanding Code In Review

Google的测试博客上,有一系列关于code review的文章,具体参见https://testing.googleblog.com/2017/04/code-health-googles-internal-code.html
By Max Kanat-Alexander
在code review时,经常会遇到代码作者比自己聪明的多的情况,从而造成看不懂他们的代码。
但实际上,如果代码理解起来很困难,也有可能是因为代码本身就太复杂了。如果你对某种编程语言比较熟悉的话,review优雅的代码应该和用母语读书一样简单。
继续阅读

3月 23

Java int溢出问题

最近在测试代码时,发现一个bug,到测试的最后阶段才发现,比较容易忽略。记录下来,以自省。
简单说一下代码要实现的功能,一个函数,入参是一个整型数字lastTime,代表持续时间(单位是分钟);函数功能是要计算以当前时间为起点,lastTime分钟之后的时间点,封装成一定的数据结构返回出来。
继续阅读

3月 07

Http Mock服务

在项目开发和项目测试时,都会遇到不同项目、模块相互调用的情况,调用方式也有很多,通过http/https、TCP连接、RPC等;这样系统之间相互依赖,会影响开发速度,所以基本上都是采用mock的方式进行开发、测试,即先写一个符合预期的假接口,进行调用。
在github上看到一个挺不错的http mock server,这里简单介绍一下。
继续阅读

3月 16

Android 静态代码扫描规则

阻塞

  1. 不可能的转换
  2. 使用equals()方法比较类型不通的数组
  3. 硬编码了数据库密码
  4. 性能 – URL的equals 和 hashCode 方法会被堵塞 http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html
  5. 性能 – URL的Maps 和 sets可能是性能大问题
  6. 错误用法 – close()调用了一个永远是null的值
  7. 错误用法 – equals方法一直返回false或者true
  8. 错误用法 – null值一定会被调用
  9. 错误用法 – 一个已知的null值被检测它是否是一个类型的实例
  10. 错误用法 – 集合转换为数组元素时发生的类型转换错误

继续阅读

10月 16

Jmeter压测DNS服务器

背景

很多场景下,Jmeter都是用作HTTP服务的压测工具。其实,得益于插件,jmeter还有很多其他的功能。其中一条就是用来发送UDP消息,UDP是一种轻量级的网络协议,它的性能一般会很高。

最常用的UDP消息,估计就是dns请求了。DNS服务器的作用是将域名解析成ip地址。 继续阅读

8月 06

mysql主从配置、原理以及性能

最近各种的性能测试,其中有一项是mysql的性能测试,目的是测试一主多从的配比下,主库插入速度到达多少时,从库就会出现延时,这样来评估一些强依赖db写的接口的性能(其实最快的还是操作缓存,其实目前也有些公司的系统已经不直接操作db,全部用缓存,然后缓存在后台慢慢和db交互)。

分析mysql的binlog得到全部的insert语句,然后使用jmeter进行压测,得到的结论有下面几条:

  1. 线上的真机mysql服务器,内存60G,ssd硬盘,insert速度可以达到8000条/秒。
  2. 拓展从库几乎不影响主库的插入速度,平均插入时间为1毫秒
  3. 拓展从库,主库机器的网卡流量会增加,cpu、负载会上升,但不是很明显。
  4. 当插入速度在3800左右时,主从开始出现延时。

继续阅读

5月 12

jmeter命令行模式运行,实时获取压测结果

jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行。简单介绍下命令行运行的方式:

    sh jmeter.sh  -n -t my-script.jmx -R 10.6.5.31,10.6.5.35,10.6.5.36,10.6.5.37,10.6.5.72 -l 8.jtl

上面一条命令应该可以满足大部分需求。

    -n:使用命令行模式运行
    -t:指定要运行的jmx脚本
    -R:指定使用那些slave节点压测
    -l:压测记录保存在哪里

使用-R指定节点时,当然要首先在这些节点上启动jmeter-server的服务,-l指定日志,jmeter运行过程中 继续阅读

3月 23

Android CPU耗电量测试

Android CPU耗电量测试

在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu、内存、流量、电量等。简单介绍下电量测试中的cpu耗电。

影响耗电的因素

  • CPU
  • Screen
  • Network (3G/wifi)
  • sensor & gps
  • WakeLock

继续阅读

1月 14

IOS命令行打包&静态代码检查

敏捷开发中,从代码到打包,到静态检查,到单测,到接口测试,再到页面测试,应该是个完整的流程,ios虽然是闭源,也可以使用工具实现这一过程,下面简单记录下打包和静态代码检查的方法。

打包

ios命令行打包,无非就是两条命令xcodebuildxcrun,不过因为苹果对签名和权限控制的比较严格,需要开发者账号才能搞定。 继续阅读

1月 14

Robotium 用例分组运行

Robotium是开源的Android界面自动化测试的框架,它内部集成了junit,以test开头的方法,会自动识别成测试用例,这样做带来快捷的同时,却也带来了不便。如果我们要分功能、分模块等,Robotium不支持自定义的testsuite。在这里我们可以用adb shell am instrument这条命令来实现分组。 继续阅读