周精益分享 - 程序员装逼指南二期

Android 单元测试 吴明

  • Android单元测试支持
    • Android studio 1.2 beta3版本,原生支持单元测试
  • 环境搭建
    • 配置环境命令:./gradlew build connectedCheck
  • 测试示例
    • MacDown Screenshot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MyFirstTestActivityTest extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {

private MyFirstTestActivity mFirstTestActivity;
private TextView mFirstTestText;

public MyFirstTestActivityTest() {
super(MyFirstTestActivity.class);
}

@Override
protected void setUp() throws Exception {
super.setUp();
mFirstTestActivity = getActivity();
mFirstTestText =
(TextView) mFirstTestActivity
.findViewById(R.id.my_first_test_text_view);
}
}
  • ps:由于配置环境一直报:
1
Test running failed: Instrumentation run failed due to 'java.lang.RuntimeException'

Linux 文件权限入门 - 曾铭

一个线上 bug

图片上传 API 无法使用,定位到问题是 dev1 帐号移动的 tomcat 无法访问 /home/img_temp 目录,处理权限问题后搞定

基本概念

user, group, others

1
2
3
4
5
6
[dev1@apps-51offer ~]$ ll
total 16
-rw-r--r-- 1 dev1 dev 742 Nov 5 11:22 ming.pub
drwxrwx--- 4 root root 4096 Nov 6 09:30 test1
drwxr-xr-- 2 dev1 dev 4096 Nov 6 10:44 test2
drwxr-xr-x 2 dev1 dev 4096 Nov 6 09:30 test3
  • 文件 -
  • 文件夹 d
  • 链接 l

rwx 读、写、执行权限 , 754 代表什么

  • 文件所有者变更:chown ming:mobile file
  • 文件权限变更: chmod g+rx file

一个小坑

问:

drwxr-xr-- 2 dev1 dev 4096 Nov 6 10:44 test2 文件夹下有 -rwxr-xr-- 2 root root 4096 Nov 6 10:44 file
dev1 用户可以删除 file 这个文件吗?

答:

可以,文件的 rwx 控制文件本身的读写运行权限,文件的增删文件名的修改要看文件夹的权限。

Android 压力测试工具 Monkey&MonkeyRunner- 杨俊构

Monkey

一、Monkey 是什么?

  • Monkey 就是SDK中附带的一个工具。

二、Monkey 测试的目的?

  • 该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。

三、Monkey 测试的特点?

  • Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。

四、Monkey 命令详解

  • 标准的monkey 命令: [adb shell] monkey [options] ,

    例如:adb shell monkey -v 500 ————产生500次随机事件,

  • 四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项

    -v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。

    -s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200

    -p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;

五、一个简单的monkey命令:

  • adb shell monkey -p com.xy.android.junit -s 500 -v 10000

  • 但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。

  • monkey 测试命令如下

adb shell monkey -p com.xy.android.junit -s 500 —ignore-crashes —ignore-timeouts —monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt

MonkeyRunner

一、什么是monkeyrunner

  • monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片。

  • monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

二、monkeyrunner工具同Monkey工具的差别

  • Monkey: Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流,属于黑盒测试。

  • monkeyrunner:monkeyrunner工具则是类似于灰盒测试的样子,可以编写定制一些测试方法和用例针对具体情况测试。

三、实例 :双11抽取优惠券不停点击一个按钮脚本

1
2
3
4
5
6
7
8
9
10
11
#coding=utf-8 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
device=mr.waitForConnection()
for i in range(1000):
MonkeyRunner.sleep(1)
print i
device.touch(500,950,'DOWN_AND_UP')
print "end"

人脸识别技术简单介绍- 王进

Android自带的API:FaceDetector

  • Step 1: 读取bitmap图片(API 只接受Bitmap)

    1
    Bitmap sampleBmp=BitmapFactory.decodeResource(getResources(), R.drawable.sample1);

    (拍照或者从相册中也可以)

  • Step 2: 通过FaceDetector API进行人脸识别

    1
    2
    3
    4
    5
    6
    7
      //FaceDetecor只能读取RGB 565格式的Bitmap
    Bitmap tmpBmp = inputImage.copy(Bitmap.Config.RGB_565, true);
    //新建FaceDetector 实例,
    FaceDetector faceDet = new FaceDetector(tmpBmp.getWidth(), tmpBmp.getHeight(), MAX_FACES);//MAX_FACES 搜索人脸个数
    // 调用findFaces方法,将数据储存在facelist中
    FaceDetector.Face[] faceList = new FaceDetector.Face[MAX_FACES];
    faceDet.findFaces(tmpBmp, faceList);

    找人脸的原理是:找眼睛。
    它返回的人脸数据face中,
    通过调用public float eyesDistance (),得到眼距
    public void getMidPoint (PointF point),得到两眼中心点位置。
    public float confidence () 可以返回该人脸数据的可信度(0~1),这个值越大,该人脸数据的准确度也就越高

  • Step3:对原图进行缩放,并在图上显示人脸框

    • 吐槽:
      A,只能接受Bitmap 格式的数据;
      B,只能识别双眼距离大于20 像素的人脸像(当然,这个可在framework层中修改);
      C,只能检测出人脸的位置(双眼的中心点及距离),不能对人脸进行匹配(查找指定的脸谱)。

第三方Face++

  • 在线API:基础版API供免费调用测试和小规模使用(会尽力维护API服务稳定性,但不保证每次调用均会成功),企业版API相对基础版API在算法和稳定性方面会有更好的表现
  • 离线SDK包括人脸关键点定位等功能。
  • 网址:http://www.faceplusplus.com.cn/

Android启动模式之singelTask扫盲- 李仙鹏