星云精准云测试
Q:精准测试是什么?

A:精准测试通俗点来讲就是使软件黑盒子变成透明盒,软件逻辑与测试数据完全实现可追溯、可视和可度量的一种高级测试方法。精准测试是灰盒测试的完整实现,用户几乎无感知即可实现系统级(含单元级)的缺陷精准定位与预防。它有传统白盒测试的覆盖率等基础技术,更极大的扩展了白盒测试技术的边界,仅覆盖率一种就根据客户实际使用场景增加了实时覆盖率、增量覆盖率、累计覆盖率、轮次覆盖率等。另外,精准测试的测试用例和代码逻辑的双向追溯、软件测试示波器、覆盖率可视化、回归测试用例的自动选取、缺陷最后执行时序分析、智能缺陷定位、敏捷环境下多版本白盒测试数据的聚合、聚类分析、结合代码结构与动态数据的测试漏洞检出等高级特性,都开创了软件测试的新方向。

Q:精准测试是cs架构还是bs架构?

A:精准测试是cs+bs结构的,客户端和后台server的通信属于CS,web报表系统属于BS。目前,精准测试的Web端支持客户端所有功能

Q:已经有了自动化测试,还需要使用精准测试吗?

A:自动化测试和精准测试并不冲突,是可以互联互补的。对于精准测试而言可以用于手工测试也可以与自动化无缝联接。自动化从根本上来讲,还是属于黑盒范畴。精准测试与自动化平台联接的意义在于为用户节省更多的时间,并极大增强自动化测试的可靠性。它可以帮助自动化进行深度的测试数据分析,如:智能回归测试用例选取、测试用例最小集、最后运行时序等,使自动化测试内部逻辑也可以变得透明、可见。

  • 智能回归测试用例选取:帮助推选出当前变动所影响的自动化用例。
  • 自动化测试用例最小集:可以对自动化测试用例进行评审,分析满足当前代码覆盖率所需要的自动化测试用例集。
  • 最后运行时序:查看自动化运行过程中出现崩溃的自动化用例,并进行缺陷定位。
  • Q:精准测试是否和具体业务有关,对应用的场景有什么限制?

    A:精准测试技术主要和代码语言有关(现支持java、C/C++、JS),对行业、具体业务、测试场景没有约束。

    Q:使用精准测试后,是不是会增加开发人员工作量?

    A:如果用户的CI/CD的开发平台与星云精准测试平台对接后,在插装编译环节,基本上不增加额外的工作量。在接下来的代码修复工作中,由于精准测试有非常优秀的源码与测试用例的强追溯关联关系,一些高效的Debug能力得以实现。比如覆盖率可视化、缺陷的快速定位、崩溃时的50个代码块的追溯排查、回归测试用例推荐等,都可以极大的用真正数字化的方法提高开发的工作效率,而不用根据经验进行大海捞针式探索式排查。

    Q:精准测试可以在哪些阶段使用?

    A:精准测试可以应用在开发和测试的各个阶段,从单元测试、集成测试、系统测试、接口测试、UAT测试等。

    Q:采用了精准测试后,软件开发方的测试会有什么变化?

    A:不会改变原有的测试方式。精准测试属于新一代测试分析系统,对原有流程进行智能优化,它的引入本身对原有流程干扰几乎为零。比如以前当新版本发布后,需要组织大量人力分析变更影响范围,而使用精准测试后,该数据可由平台自动提供和分析,不一定非得组织大型的由开发、测试共同参与的分析会。再比如原有测试流程通常要对用例充分性进行分析,但因为开发人员无法深入理解测试用例,测试也无法提供测试执行时候的代码级数据,因此分析非常困难和耗时。引入精准测试后,开发人员可以自己在平台上直接分析测试执行对应的代码层数据。让原有开发、测试的协同流程变得更顺畅。

    Q:精准测试的测试能效提升有没有度量过?大概是多少?

    A:同样的人力投入情况下,星云精准测试可以让使客户的被测系统的覆盖率提升30%左右,整体能效提高3-5倍。因精准测试可以提供智能缺陷定位、智能回归等各种智能分析方法,可以切实地使测试执行效率、协同效率、管理效率大幅度的提升。

    Q:精准测试产品可以对哪些软件进行插装测试?

    A:目前精准测试平台可以对JAVA、C/C++、JS进行插装测试。

    Q:精准测试插装是否对原有程序的运行有影响?

    A:星云精准测试产品为标准商用产品, 插装不会影响任何程序原有的功能,精准测试程序严格按照语法规范,经过严密测试,目前已经可以支持到嵌入式内核级的测试。另外精准测试只是运行在测试环境和准生产环境,无需发布到生产环境。

    Q:插装的可靠性怎么保证?

    A:商业化的插装系统在内部和客户现场经历过非常严格和苛刻的测试,因此用户无需担心可靠性问题,对于一些程序内部各种可能情况都有考虑,例如程序运行中分子进程的情况。而通信程序则经过非常长期的高压力的测试,可靠性非常高。星云有大量的商业案例可以佐证。

    Q:代码插装规则是怎么样?插装时需要人工插装吗?

    A:插装规则一般情况,用户无需自己调整,是根据语法规则设定的,和被测试系统本身的应用以及业务无关。插装使用过脚本一键式自动插装,无需人工插装。

    Q:精准测试如何编译?前置编译器和用户原来的编译是什么关系?

    A:星云精准测试编译前需要进行星云的插装,插装的目的是为了加入探针用于数据采集,而星云的前置分析器主要目的是为了进行代码扫描、代码分块、代码插装和代码骨架信息发送到服务端,最终生成星云插装后的源代码和分块数据库json文件,再通过项目原有的编译器进行编译,这样,在项目的编译适配上,会比较通用。

    Q:软件示波器波形图有何意义?为何录制用例一定要点击开始和结束?

    A:测试示波器的波形主要的意义在于告诉测试人员执行用例的过程中数据是否正常采集,如果采集失败,在测试示波器上就会显示成一根横线,正常采集就会形成波形。星云的测试示波器中的开始与停止,用于区分测试用例的执行范围。对被测程序来说只要触发了代码即可发送测试数据,而为了区分测试用例对应的测试代码范围,需要有个录制用例的功能通过开始和结束的时间区间,对其区间内进行操作所触发的探针数据,绑定到其对应的测试用例中。

    如果只是统计全局覆盖率不需要每个用例点击开始和结束,如果需要区分到用例级,是需要每个用例都点击开始和结束的。如果企业的测试管理平台对接,选择用例在测试管理点一下就可以了,不需要每一个都要点击开始和结束。

    Q:软件示波器的波形三个波形分别代表什么?

    A:示波器把采集到的测试数据通过可视化的窗口界面进行实时展示,内容涵盖采集到的块、条件和函数信息。蓝色波形代表写入的数值,黄色波形表示读取的数值,用户可以清晰的看到被测系统的数据变化。

    三个波形分别表示收到和写入数据库的语句块数据数量、条件判定数据数量、函数数据数量,以每秒为单位进行数量的曲线绘制。

    Q:在用示波器进行测试时,能否记录程序参数的变化?

    A:精准测试产品主要关注程序覆盖率,所以示波器只记录程序运行的覆盖情况,不记录程序的数值变化,不过我们有其他产品可以记录程序运行的数值变化等等。

    Q:精准测试的覆盖率数据是否是实时获取的?

    A:星云精准测试的软件示波器所产生的波形是实时获取数据后所形成的,在覆盖率可视化界面会动态的实时获得当前的覆盖率信息,并进行展示。

    Q:怎么样保证精准测试的覆盖率准确性?

    A:星云精准测试插装的桩点以及生成的代码文件是明文提供给企业用户。星云精准测试还提供一套可视化系统保证了整个覆盖率的准确性,熟悉代码的用户可以通过可视化窗口看到代码的分块情况、具体的覆盖情况以及覆盖率统计的计算方法等。

    Q:怎么区分不同用例、不同执行人员的测试所覆盖的代码?

    A:每个测试人员有一个用户标识,通过我们的插件传递到系统的执行线程,实现区分并发访问的用例和代码数据的区分。

    Q:什么是代码块覆盖率,和行覆盖率有什么区别?

    A:代码块是一条顺序的代码路径,它具有一个入口点,一个出口点和一组全部按顺序运行的指令。当代码块到达决策点(如新的条件语句块、函数调用、异常引发、enter、leave、try、catch或finally构造)时,该代码块将结束。

    精准测试采用的代码块覆盖率更具优势,在覆盖率标准上更明确,传统行覆盖率会在覆盖率比值上产生一定的失真,而代码块统计更加精准。同时,星云精准测试支持行覆盖和代码块覆盖的转换。

    Q:回归测试的优先级是怎么计算出来的?

    A:回归测试用例选取时,因测试用例与代码已经形成双向追溯的历史数据,我们可以通过对比回归版本与测试用例ID最后运行版本的函数变化情况,统计出这些变动影响值,并计算出需要回归的用例。

    Q:有些底层模块的修改,影响了所有的用例,要怎么进行处理?

    A:因公共模块变更所引发出来的回归用例,可以通过精准测试的修正回归优先级进行查看(可以看到这个用例修改过的函数有没有被其他测试用例测试到)。当动态修正回归优先级为零时,说明这个用例底下的所有被修改过的函数都被其它用例覆盖到了,测试人员可以根据修正回归优先级判断是否回归测试该用例。 同时精准测试支持静态修正回归优先级算法,在新版本插装编译之后,会自动对公共模块的干扰进行修正,在进行回归分析时,就可以看到修正后的回归优先级,再根据修正后的回归优先级进行回归测试,精准度更高。

    Q:回归测试选出的用例怎么用自动化工具测试?

    A:精准测试的回归是根据测试用例与代码的双向追溯关系下,历史版本与新版本之间的函数差异计算而来。与自动化对接后,每个版本发布后,通过对历史版本中所运行的自动化用例进行回归计算,优先推荐出因代码变更所影响的自动化测试用例集合,并通过该集合信息重新驱动自动化对应的脚本进行测试。

    Q:聚类分析如何分类?怎么把功能相近的测试用例分类在一起?

    A:它是根据精准经测试系统采集的测试用例执行的代码路径距离,进行分类的。通常功能相近的用例,在程序上走的函数和代码路径肯定是相似的,所以相近的功能会分类到一起。