星云精准云测试
Q:TT是否支持win8.1

A:是支持的,TT支持windowsXP、windows7、windows8、windows8.1、windows10、windows server2003-2012 等主流微软系统

Q:JDK 32还是jdk64,sdk32还是64位?

A:是支持32位和64位的JDK、SDK的。

Q:星云精准测试云平台和其它的白盒工具有什么不同?

A:星云精准测试云平台实现用黑盒的测试方法,来完成白盒的测试结果。打破以往白盒测试需要懂代码等高复杂性,使用简单的操作,来完成可视化的测试。

Q:不懂写代码是否能使用星云精准测试云平台进行白盒测试?

A:可以。星云精准测试云平台采用自动化的插装方式,免去了以往白盒测试工具对代码进行的手动修改插装,在使用TT的过程中,TT会自动关联代码和测试用例之间的关系,全面实现自动化。

Q:测试用例的引入是基于白盒的方式还是基于黑盒的方式来做的?

我们的测试方法是一个黑加白的方式,上手还是黑盒的方式,测试用例按照原来的方法去设计,后面对于那些测试不足的地方,根据我们采集到的白盒数据,再进行一个详细分析。

Q:整个操作过程对于测试人员来说还是有点难度,比如插装,测试与代码的关联。报表功能太多,有些看不明白。

星云测试提供了一系列的视频教学课程、在线课程、专门的企业培训等,以及客服务为用户解答,对于maven项目我们也有一个自动化编译操作,无须在客户端手动进行插装编译等过程,而是通过脚本进行,上手很快,插桩和测试与代码的关联关系的建立展示的过程是让大家知道整个的一个原理。对于客户端以及报表端的各项功能,也是有使用说明书的。

Q:插装过程中开发人员需要做什么工作吗?

开发人员不需要做什么工作,拿到源码后,对源码的插装过程是一个自动的过程,全程无需人员干预。

Q:测试时的波形图中,上下波动代表了什么含义?

代表的是次数,代表的是收集到的块、条件、函数信息。在我们运行功能的时候,功能对应代码运行的多少,通过波形与图旁边的数字进行展示,如果数字很大,代表我们运行这次操作触发的代码量很高。

Q:精准测试的“精准”概念是否只是通过黑盒的测试用例设计,加入探针后,能够拿到一些白盒的测试数据?

答案肯定是否定的,通过黑盒测试用例运行采集到白盒测试数据,这只是一个精准测试数据采集的过程,所谓“精准”,是基于这些白盒测试数据以及测试用例信息为基础在其上进行一系列计算分析统计等,最终达到帮助提高整个测试效率的过程,而星云测试产品更加注重于是个测试分析系统。

Q:这里的聚类算法是怎么算的?比如输入数字30,30的含义是什么?

星云测试通过测试用例运行的函数剖面进行统计计算。30是颗粒度的大小,把运行过的所有测试用例分成30各组,运行过程中剖面相近的测试用例会分到一起。

作用:

  • 1.测试用例缺陷范围的定位,当测试用例中出现一个缺陷时,测试人员一般会去评估其印象范围从而去进行进一步的缺陷查找,而星云测试的聚类功能会把运行剖面相同的测试用例分在一起从而帮我们圈好了查找范围,编译进一步的缺陷范围定位;
  • 2.在测试过程中因时间原因,测试小组往往会去做一些随机性测试,通过星云测试的聚类分析给出的结果,在其每组中抽出部分进行随机性测试,会更加容易帮助测试人员在极短的时间内测试范围的覆盖;
  • 3.通过聚类功能也可以帮助测试人员观察到其运行过程中的误操作等情况,如不相邻的功能在聚类中分成了一组。
  • Q:这套产品对维护性测试(部分回归的场景)的适用性怎样?

    星云测试对于回归场景有自己的计算方法(覆盖率只是其中一项计算的基础数据),它对传统的功能测试的业务层面有良好的辅助效果

    传统的功能测试业务层面,如开发进行了变更,则测试人员进行主杆功能测试,并凭借经验对修改部分所影响的周边测试用例进行回归,主杆部分如企业有自带化则可减少人员负担

    星云测试的回归计算采用测试用例与其运行过的代码所产生的对应关系,匹配每个版本中每个函数的变化情况,可以直接新版本发布后,计算排序出测试用例影响的优先级,减轻人为分析导致的误差

    星云的回归计算方法简述:

  • 1.在插装过层中,对每个函数进行了MD5值的标识;
  • 2.通过上几个版本的星云的示波器操作,建立测试用例与代码的对应关系;
  • 3.新版本发布时,星云测试通过测试用例唯一标识测试ID计算每个测试用例最后运行的版本,并取出测试用例对应的函数;
  • 4.通过每个测试用例取出的对应函数与新版本发布的MD5值进行比对,进行测试用例优先级排序,优先级越高说明测试用例里面的函数修改、删除的越多;
  • 5.新发布的版本新增部分一般为测试用例重新新增设计,则本次版本星云不进行统计回归。
  • Q:通过前期的了解,我的理解目前这个工具核心的一部分功能是在于测试覆盖率的度量和缺陷的精准定位。那么假设一个场景:通过工具测量出目前的测试覆盖率是80%,那么对于剩下20%未覆盖到的部分,工具本身是否有比较便捷的方法去做测试的工作(而不仅仅是起到度量的作用),效果如何?具体怎么实现?

    覆盖率只是星云测试所取得基础数据,星云测试和传统的白盒工具有本质的区别,传统白盒测试数据必须达到覆盖率指定的指标,如军工必须MCDC为100%,而星云通过覆盖率进行进一步的计算分析,如可以让测试和开发更高的交流,并有效的观测出测试现在的质量,按期企业自己的覆盖率指标进行,星云测试可以对某个模块进行独立的覆盖率统计,如一个新功能的上线,测试人员需进行测试用例的设计并进行测试,星云测试在其测试的过程中进行自动的采集,并给出覆盖率,如覆盖率80%还有20%没有覆盖,测试想覆盖这些点,可以让开发配合协同进行弥补,星云的可视化可以优先的展示出哪些,相当于从开发的角度帮助测试人员进行测试用例的设计补缺,提高开发和测试的互动交流,而星云的每日覆盖率增长与复杂度和覆盖率对比,可以让管理者更好的看到测试人员的进度以及测试用例设计的不足处。精准测试中的覆盖追求的并不是绝对高的覆盖,而是让从黑盒测试角度无法想到的逻辑能够暴露出来,让开发和测试协同进行高效率的测试。

    另外为了是适应敏捷,并不是要求每个版本都达到很高的覆盖率,产品支持将多个测试版本覆盖率进行合并计算,可以看一个阶段的测试的总体覆盖情况,覆盖率是投影在最新的发布的软件版本上的。

    Q:安装jdk32还是jdk64,sdk32还是64位

    A:TT1.3版开始已经支持jdk和sdk的32和64位

    Q:安装了jdk之后,需要重启TT吗?

    A:需要。

    Q:jdk配置成功,为何TT提示没有安装jdk?

    A:请认真核对jdk的环境变量配置是否正确。可在cmd中运行javac和java –version来确定。

    配置jdk环境变量:

    a)右击“我的电脑”-->"高级"-->"环境变量";

    b)在系统变量里新建JAVA_HOME变量,变量值为:C:\jdk1.7.0_01(根据自己的安装路径填写);

    c)、新建classpath变量,变量值为:

           .;C:\jdk1.7.0_01/lib/dt.jar;C:\jdk1.7.0_01/lib/tools.jar;(程序根据自己的安装路径填写);

    d)在path变量(已存在不用新建)添加变值:

           %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意变量值之间用“;”隔开)。

    Q:编译插装提供的脚本需不需要开发人员或者测试人员对本项目做一个改造?

    A:通过星云测试提供的脚本,用户只需要填入自己项目的代码路径,版本等信息,就能通过脚本进行项目的插装编译,如在要和持续集成Jenkins等平台进行对接,需要配置人员需要把其嵌入到整个持续集成平台流程中即可。

    Q:精准测试云平台支持的编程语言有哪些?

    A:星云测试Horn-J2EE平台,支持JAVA(JDK1.8以下语法)。 星云测试Shell-嵌入式平台,支持(C89、 C99、C++0x11、C++0x14语法)。 适用于平台:Linux gcc系列(X86、X64、mips、arm、powerpc)、Linux QT 系列、UNIX(IBM AIX)、Windows(Visual Studio.net 2008-2015 ) 星云测试Horn-Android平台,支持JAVA(JDK1.8以下语法)。 星云测试Paw-苹果平台,支持(OBJ C/C++语法)

    Q:测试网站时设置cookie的作用是什么?

    A:设置cookie是为了区分不同的用户登录,一般情况下,网站测试人员肯定不只一人,不同于手机设备进行测试会有设备号区分不同人员与测试用例进行绑定,在测试网站前,将cookie带入待测项目中,username与客户端登录时的用户名一致,则表示接下来的测试数据均为该测试人员所录。

    Q:安装jdk32还是jdk64,sdk32还是64位

    A:TT1.3版开始已经支持jdk和sdk的32和64位

    Q:插装是自动插装的吗?是否修改源代码? 插装的作用是什么?

    A:星云测试的插装技术是自动完成的。不会修改源码原有的执行逻辑。插装是通过语法分析器对源码进行分析,在源码中加入探针作为标识,星云测试还提供了插装整套流程的脚本化,可以匹配持续集成环境如Jenkins进行统一完成操作。

    Q:插装插了一些什么东西?插装的位置是在哪里?

    A:星云测试在代码的函数以及条件等地方插入了所需要采集的探针点,并进行分析上传静态结构与符号信息上传到星云平台中。

    Q:测试用例和代码的关联是怎么做到的?

    A:星云测试的测试用例与代码关联通过客户端的软件示波器,通过选择测试用例,点击客户端的“开始”按钮,然后运行带有星云探针的项目,在项目运行过程中,示波器会自动采集,并通过建立起来了,最后以客户端的“结束”按钮来关闭该测试用例所采集的测试数据。

    Q:星云的精准测试对项目的介入点,项目的“新”与“旧”?

    A:星云测试的整个设计不管是先有已经迭代的项目或者新开发的项目都具有良好的分析价值,对于新项目星云测试通过一系列的分析可以有利于帮助测试人员更好的进行该项目的测试体系建设,对于已经成型的维护项目,星云测试可以通过版本迭代过程慢慢进行整个测试流程的介入,帮助其改进与分析。

    Q:项目迭代比较非常频繁,是否需要对每个迭代版本进行插装?对于最终的上线版本,星云插装是否也要介入?

    A:星云测试是支持敏捷迭代的流程的,对于迭代比较平凡的项目用户可以根据自己流程考虑是否需要使用星云测试工具介入,也可以考虑在每次模块变更或者大版本变更时使用星云测试工具。
    星云测试是支持准实时系统的测试数据采集,对于最终上线的版本,用户根据自己需要是否采用插装介入。如金融行业,最UAT环境与上线环境必须保持一致而性能等要求比较高,可以在该阶段不采用星云测试工具的插装,而让其在介入UAT之前的SIT环境中。

    Q:星云测试的回归是如何实现?最终给出的回归数据如何分析?
  • 1.星云测试在插装过程中会自动扫描函数中的代码并生成每个函数的唯一标识;
  • 2.星云测试的用例和代码通过软件示波器进行关联,并最终形成其对应关系;
  • 3.在新版本上线后,通过星云测试插装技术取得新版本每个函数的唯一标识,生成矩阵A;
  • 4.通过测试用例的唯一值,测试用例ID进行分析,提取出新版本里的测试用例,在其它版本中最后运行所对应的函数信息,生成矩阵B;
  • 5.通过矩阵A与矩阵B的函数标识对比,找出其修改或删除的差异值,并通过第2条的测试用例与代码的对应关系,计算出测试用例回归的优先级。
  • Q:如何来判定星云测试插装技术的正确性?

    A:星云测试在金融、军工、智能硬件等都有相关的客户,保证了星云测试的可信任度,星云测试代码分块、覆盖率计算等都是通过可视化进行了详细的展示,测试人员通过一系列的可视化展示进行验证。

    Q:TT编译提示错误?(如下图)

    A:在编译界面需要单机选中一个要编译的目标工程名称如下:

    Q:com.android.dex.DexIndexOverflowException: Cannot merge new index XXXXX into a non-jumbo instruction!其中 XXXXX为一个大于65535的数字

    A:1、删掉一些无用的jar包或者类

    2、在project.properties中添加dex.force.jumbo=true,弊端是可能在某些低版本android版本中无法运行

    Q:安装成功apk,运行测试程序,示波器没有数据生成,可能是哪里出现了问题?

    A:首先确认公司网络防火墙对TT软件网络访问是否有权限。

  • 如果是采用的模拟器测试,请确认启动模拟器之后,运行了模拟器的端口映射如果采用真机USB链接运行adb-android.bat即可。
  • 如果是采用usb连接测试机,请确认连接上真机后,运行了Android机的端口映射(和TT.exe同级目录下)。
    • a)采用端口映射的方式通信要确保PC端不要运行360手机助手、sogo手机助手等手机管理软件, 命令行运行netstat -ano | findstr "5037"查看占用手机管理终端进程IDtasklist|findstr "ID", 如果是非adb占用使用下面命令停止进程taskkill /pid ID /f。

      经过上述验证之后正确输出如下:

      adb服务启动,查看资源监视器如下说明端口映射成功:

  • b)如果是采用wifi连接,请查看手机的ip地址。
  • Q:编译刚点开就结束,是什么原因?

    A:1.有可能是磁盘没有写权限,如微软家庭版操作系统中,用户权限都被调整成基本权限,可以右键管理员运行或在TT根目录下点击TT.exe右键属性, 在兼容性选项卡中,勾选以管理身份运行此程序的选项。

    2、查看编译输出日志是否有编译错误,如果有编译错误输出需要确认是否是代码语法问题、工程依赖问题、或者工程编码、参数选择配置错误等问题引起。

    Q:控制流程图和函数调用图不显示

    A:由于星云客户端绘制图形需要中间文件转存,有win7系统对安装程序限制严格,可以尝试右键以管理员身份运行。

    Q:示波器在接收数据时总是提示与当前版本不符?

    A:数据传输控制台的数据接收是针对该版本最后一次编译后的数据进行校验的,当接收到是数据与该版本不符合时,会出现此提示。 解决方法:

  • 1.检查自己对该版本的apk打包和安装是否正确,不存在数据混淆的情况,在安装前,请先卸载移动端已有的安装程序,防止安装数据混淆;
  • 2.在移动终端运行的apk只能是当前测试的版本,如果移动端存在除此之外有其他的apk应用,为了防止TT接收到的数据是这些应用的数据, 需要在移动端的设置下的应用中强行停止其他的由TT编译过的应用后台运行,或者卸载掉。
  • Q:adb调试andriod设备需满足的先决条件?
    • A:请按以下步骤连接电脑,adb命名才可用:

      • 手机已root
      • 安装手机驱动
      • 请使用好的usb数据线
      • 开启usb调试模式(一般是在系统设置,开发人员选项中;4.4以上版本请在设置中找到关于手机选项-双击软件信息-连续点击内部版本号5次,系统设置中就会多出来一个开发人员选项 )
      • 安装 adb tools v1.30以上的版本,太老的版本会有莫名其妙的问题
      • 当启用了usb调试选项后,手机通过usb连接到电脑是会弹出一个提示框确认是否允许usb调试
    Q:adb devices 查看连接设备时,如何解决设备未授权(如下图)?

    输入adb shell 则提示如下图:

    解决方法:

    • 查看开发人员选项里usb调试是否打开
    • 是否使用了优质的usb连接线
    • 尝试在cmd命令行里输入 adb kill-server ,然后adb start-server ,最后再输入adb devices
    • 如果以上方法均无效,最后一个方法可能也是出现问题最直接的原因,找到系统变量中 设置的Android_SDK_HOME,将其整个删除,关闭cmd重新打开,再输入adb devices ,设备终于显示正常了

    Q:adb devices 查看连接设备时,如何解决端口号被占用(如下图)?

    解决方法:

    cmd命令行中输入: netstat -aon|findstr 5037,查找该端口被占用对应的进程号

    右击状态栏,启动任务管理器,找到先前找到占用5037端口号的那个进程,点击右键,选择结束进程数

    再次在cmd命令行中输入 adb devices ,设备已经能正常识别。

    Q:获取不到硬件信息
  • 1.未添加获取硬件信息的权限
  • A:在AndroidManifest.xml中添加权限<uses-permission> android:name="android.permission.READ_PHONE_STATE"</uses-permission >

  • 2.在app的代码中,有在启动之前的初始化动作,导致获取硬件信息的时候无法获取
  • A:在启动界面启动时,手动在启动时添加函数ZoaExp.HardWareInfo(this);

    1. 在客户端创建好项目以后, 对项目进行插装.

    具体操作如下:

    ① 选中需要编译的项目后, 点击添加, 选择工程的路径

    ② 找到工程路径

    由于AndroidStudio工程层级较深, 建议到…\XXXApp\app\src\main\java目录下

    ③ 找到.Class文件路径, 一般在…\app\build\intermediates\classes

    ※注意:因为AS的class会把v7等编译进来, 此处最好将路径关联到../com层级

    ④ 配置好编译路径后, 选择编译即可, 如图:

    2. 将编译好的代码打包运行

    打包过程如下:

    ① 使用插装的代码替换原代码.

    在../src/main目录下的目录结构如下:

    其中src-instru就是我们插装后的代码, 只需将原java目录的代码备份, 再用src-instru (即插装后的代码) 来作为源代码使用(建议直接将目录名src-instru 改为java).

    ② 导入所需要的jar包,并配置权限, 最后将程序打包编译就可以了!

    ※注意: 打包前需导入jar包, 并配置权限

    ①导入jar包:

    在jar包点击右键 – Add as library

    ② 配置权限, 否则由于初始化等问题将引起程序ExceptionInInitializerError闪退

    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    Q:星云测试中“块”是什么概念?

    A:代码块是一条代码路径,它具有一个入口点、一个出口点和一组全部按顺序运行的指令。当代码块到达决策点(如新的条件语句块、函数调用、异常引发、enter、leave、try、catch 或finally 构造)时,该代码块将结束。星云测试把整个代码进行了分块处理,为了覆盖率等级展示,对每个块进行“语句块”、“条件块”等划分标识。

    Q:星云测试中的代码覆盖率有参考一些开源资料设计的吗?

    A:星云代码自动添加探针这项技术采用自己研发框架进行。探针点的位置采用传统白盒测试方法。

    Q:关于测试用例跟代码关联这部分功能,有些客户也尝试着用一些白盒测试工具在系统层面上过做代码覆盖率,但是没办法知道运行的测试用例所对应的代码(如网站、后台业务等),只能一次性运行完毕后把结果进行一个汇总。精准测试能解决这个问题吗?

    A:没办法区分每个测试测试用例自己所对应的测试用例,这个主要和被测环境有关系,如被测环境是个手机应用,那测试人员只要针对自己拿到手的手机进行应用操作,他对应操作的测试用例就完全是自己手机的功能,但是在如(网站、后台业务等)这些环境需要同时处理多个测试人员的操作数据,针对这种被测环境,星云测试在数据传输时对其加了个标签符并绑定到运行该测试用例的人员上进行数据区分,如网页测试人员,星云测试会要求其先去取一个cookie值并绑定其测试用户,进行数据采集时候在绑定其测试用例,并且为了支持多模块(微服务)的场景,星云测试还支持cookie值的继承用户多模块调用的数据区分。

    Q:星云测试对测试人员的工作量是如何分析?

    A:传统的测试肯定是以运行多少测试用例数目,查找到多少缺陷进行核算,而这种方式,对于有些测试人员是很不公平的,如该测试人员运行的模块很多,测试用例也设计的很好,但就是测不出问题,你不能说他在工作上就表现的很差。而通过这个工程师实效精准分析系统可以看出来他每日的工作量。

    Q:测试工程师实效图中的贡献度是怎么算的?

    A:根据测试人员运行的测试用例对代码的覆盖情况计算并结合测试人员运行的测试用例数、缺陷数,综合展示测试工程师的贡献度。

    Q:星云测试是怎么统计覆盖率的?

    A:与传统的白盒测试一样,在代码块里加入探针,程序运行过程中,只要程序触发了探针就会被记录,并覆盖到代码,最后通过覆盖到的代码的分子/分母进行计算可视化的展示。

    Q:精准测试是要尽量把代码覆盖率做到100%吗?

    A:覆盖率当然越高越好,但代码覆盖率要到100%相对比较困难,且投入的成本比较高,除非一些军工强制要求或者大型企业核心项目,精准测试的主要目的是为了通过覆盖率去转化黑盒过程中不补充处,并通过一系列覆盖率基础数据计算帮助传统黑盒测试从白盒角度进行测试完善。

    Q:星云测试是否支持敏捷迭代模式,是否需要一次性的把所有的功能一起进行测试?

    A:星云测试的覆盖率累计功能就是会用户在版本迭代过程中根据自己需要,把几天,几周的所需要的测试覆盖率信息进行汇总,并以当前累计的版本为基础数据进行各项覆盖率的累加,用于项目的整体分析。

    Q:为什么eclipse打包后的apk安装在手机上后,打不开应用

    A:应用打不开不是打包有问题,就是源码本身存在问题。

    解决方法:

  • 1.请确认不是源码本身的问题;
  • 2.检查自己的jdk安装是否正确;
  • 3.检查自己的环境变量值的配置中是否有中文字符,配置是否正确。
  • Q:在打开eclipse打包apk的时候总是提示需要更新adt是什么原因?

    A:提示更新是因为两者之间版本不相符造成的。

    解决方法: 可以在eclipse中设置默认的sdk版本是19(eclipse设置默认步骤:窗口——首选项——Android ——选择sdk19为默认版本——应用—— 确定)