zoukankan      html  css  js  c++  java
  • 一次曲折的竞品测试自动化之路

    前两天接到一个活,对一款竞品的OCR识别结果进行分析统计,要对两万多张图片进行识别,然后统计各个字段的识别正确率,对于手动测试来讲,这基本上是不可能的。

      接到这活后立刻想到以下思路:对竞品代码进行反编译,在关键节点插入自己代码,对竞品选择图片和识别结果进行记录,然后自动化驱动模拟手动测试就行了,这是最快的解决方案。下午搞定,晚上挂上手机第二天就坐等结果了,可反编译后修改完代码编译打包失败,即使反编译后不进行任何代码修改重新打包都失败,以前遇到过类似的包,也google过原因和解决方案,没有很好的解决的办法,这条路算是走不通了;

      好在这款竞品图像识别的部分是通过JNI调用C++写的so文件,只要理清逻辑顺序,自己写一个demo同样调用也行,于是半个小时梳理了一下代码,他图片识别前要进行图片剪切,锐化处理,各种JNI调用要进行十好几次,果断放弃了;

      故事进行到这里就走不通了,然后adb shell进入手机去看看了缓存文件,发现它识别的一些数据缓存到本地数据库中了,但数据库中记录的文件名称不是输入图片的名称,是经过剪切锐化处理后的图片,而且名称是随机生成的,于是一个思路诞生了,我只要记录下图片输入的顺序,就能把图片名跟数据库中相应的记录一一对应。那怎么获取图片的顺序呢?查看了一下logcat输出,其并没有对选择图片进行记录输出,似乎又陷入了绝境。

      那就只有最后一个办法了,图片的位置是不会发生变化的,再写一个自动化程序对图片进行遍历,记录图片名称。于是整个思路成了:先把图片导入手机,运行自动化程序对手机图库进行遍历,获取图片名字,然后再运行一个自动化程序,按照图片遍历的顺序依次模拟手动进行图片输入识别,然后拉出数据库,进行数据提取整理,完成一一对应的过程比对结果,统计分析。这也是最后也是唯一的解决方法了,虽然有点麻烦,但总还是避免了大量人力浪费在这上边。

      对别人的app进行业务上的竞品对比,本来就很麻烦,因为你得不到对方开发团队的任何支持,所以必要的逆向工程技术,开阔的视野,灵活的思路对自动化人员来讲很重要。

      附记:做竞品测试时一定要注意对自己数据的保护,如果没有任何保护手段,那这次成功的竞品测试就给对手增加了两万的真实数据。

      通过对各种类型的app的逆向工程,我可以很负责任的说,不偷用户数据,安全性做得很好的app真的很少。

  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/salomon/p/3713552.html
Copyright © 2011-2022 走看看