精准测试技术体系经过近6年的商业项目实践日臻成熟,大量商业应用案例的正面积极反馈,表明它已经成为新的软件测试技术方向体系。星云精准测试灵巧详细的功能设计和高度可靠的产品内核得到了市场的广泛认可,对于国际上原有的白盒测试工具来讲,是一种质的飞跃。
2012年,精准测试的商用工具正式进入设计和研发阶段。与引进国外技术不一样,精准测试的核心技术体系是星云测试团队在国内的原创设计和研发。产品经过3年的悉心研发、反复内测、不断优化后,2014年精准测试在CSTQB会议上,发布了第一个商用版本ThreadingTest,引起了很大反响。6年前,行业上还全面沉浸在黑盒测试的大氛围中,从未见过精准测试的超前的运行方法和提供的强大智能的功能,由于理念与设计过于超前,早期有一些业内质疑的声音。但由于产品独到的优秀特点和巨大的潜在价值,诸多伯乐开始试用,给了产品在实际场景中不断优化、强化的宝贵机会。经过不同领域、不同客户的各种高复杂度大型系统的百般锤炼、验证后,自2016年开始,精准测试开始赢得全行业的重视和响应。
优秀的商用落地性是精准测试技术流行的一个重要因素。由于精准测试把准了黑盒测试无法解决的难题和固有瓶颈,踏准了测试技术发展大的进程,并从设计一开始就特意注重了商业场景下使用要求复杂性,因此它从诞生之日起就不仅仅是一套理论,而是有着非常强的实用性基因和可扩展架构,多场景应用成果卓然。
精准测试最底层的核心技术:“一种基于用例与源码双向追溯的测试装置及方法”,类似在重建量子纠缠的场景和数据。它成功的将功能用例和对应的代码二者之间的追溯路线,实现了精准无误的可视化。这彻底解决了在黑盒的状态下,软件工程师们无法获知程序内部运行轨迹的难题。自此开始,计算机处理海量测试数据的强大分析能力开始展现。
我们知道,所有的黑盒测试都是人工进行的,它依赖的是人的算力,而软件正确性验证的工作量,主要是组合路径膨胀的问题,人的算力是远远跟不上的。那么精准测试如何从测试的角度对业务进行深度的测试辅助分析呢?我们用量子纠缠的形象类比来说明这个问题。量子纠缠理论我们可以简单理解为两个处在纠缠态的粒子一旦分开,不论分开多远,如果对其中一个粒子作用,另一个粒子会立即发生变化,且是瞬时变化。“一个粒子”会与“另一个粒子”产生相互作用,两个表面互相不关联的粒子,互相作用互相影响,他们对外是一个整体,无法单独描述“单个粒子”的性质,只能描述这“两个粒子”的整体性质,这就叫做“量子纠缠”。类比到软件测试上,我们的被测试软件中常见的软件界面和功能输入输出以及渲染它的复杂代码,他们之间就和两个纠缠在一起的粒子一样,具备强关联性。一个发生了变化,另一个必定发生变化。
精准测试的另一核心功能是:“回归测试用例的自动选取”,就是基于用例和代码的追溯(量子纠缠)关系在进行运算之后全自动得出的。用例和代码精准的追溯机制,使数据开始可以实施大量的智能测试算法。在软件测试理论界,大量论文算法的基础都是默认建立在用例和代码的关系上进行分析的,但因其追溯机制工业实现难度极大,所以一直停留在学术理论阶段。星云测试引领的精准测试方法体系,落地在精确便捷的商用产品和大型解决方案中,让大量先进的测试分析方法和理论,得以实实在在的验证。
精准测试首次明确的提出了:如何采集和应用双向追溯数据,进行测试辅助分析系统的构建。不管是纯软件系统还是运行在设备中的软件系统,用例与代码精准的数据可追溯性,都是基础性的强需求。比如金融转账业务、用手机拍照、机器人控制器的动作控制指令等,每个操作都有与之对应的代码。星云精准测试产品的强大之处在于:所有的分析算法不需要和被测系统的业务功能做特定的适配,因此可以应用于任意软件系统的测试辅助分析。而传统的白盒在产品实现上以采集和分析总体覆盖率为主,没有能力将覆盖细化到用例层级,因此传统的白盒测试囿于覆盖率的概念中,无法实现更高层次的测试辅助分析需求。
星云测试产品的技术优越性及应用的易用性,使它成为新一代软件测试技术流的中坚力量。星云精准测试在企业应用场景中,为了方便客户还设计了完全静默的“傻瓜”运行模式,客户基本无需增加额外的学习成本。比如测试工程师打开测试用例的excel表格,当他准备执行某个用例的时候,只需点击这一项测试用例。随后通过VBA技术,直接调用星云精准测试的后台接口,再附加一整套深入应用后台执行线程的用户标签技术,就可以将用例和代码关联和分离出来(这里说的分离是指类似于J2EE服务端后台应用)。在对外提供多用户并发访问的情况下,可分离出每个用户执行的用例所对应的相应代码。
前面我们提到功能和代码这两个量子数据的重建,以前主要出现在研发/开发人员相对比较零散的执行单步调试功能的时候(即单元测试),无法存储。国外白盒工具因其设计基因的限制,无法支撑超大型、高复杂度的系统级测试需求。在星云精准测试体系中,只要测试工程师执行测试用例,几乎不需要额外付出,在建立测试用例与数据的对应关系的同时,瞬间即可将海量数据实时采集并存储起来,用于后续测试大数据的分析和运算上。它的内核设计,使之可以轻松应用在数亿行的超大型应用上,实时采集、存储测试数据,而对原有系统的响应性能不产生干扰。
星云精准测试对软件测试体系是重大的技术革新,它从以下几个层面改变并提升了测试:
1. 对软件测试的深度进行了大幅度的拓宽,让计算机有能力直接对测试用例进行辅助分析,给出更深入的测试决策分析依据。传统测试主要通过人工业务测试发现缺陷,定位缺陷必须由开发人员进行,二者信息没有精确的数据交互。精准测试主要基于测试人员标识的用例状态,以及自动记录的用例对应的代码路径进行频谱分析。它可以自动计算缺陷产生的代码位置,在发现缺陷的同时,同步产生缺陷定位的结果数据。精准测试提供的测试用例的聚类分析,是基于测试用例的路径空间距离进行聚类,聚类的结果可以直接对用例执行正确性进行审核,对用例进行等价类划分、分析缺陷密集区以及对用例执行分布进行评估等。精准测试提供的回归用例选取结果,经由海量的计算精准推荐而来,总体算法思路与人工分析的思路是类似的,采用人工智能算法模式把大量的计算完全交由计算机去总结分析,精准、稳定、可靠、高速。这个功能相当于解放了测试和开发团队大量的人力资源,彻底解决因团队成员变更而引入的未知风险。
2. 精准测试开辟的测试方法新体系,支撑了黑盒测试快速提升测试效能比的刚需。精准测试对于企业来讲,相对于比需要人工编写、维护庞大自动化脚本的自动化测试,工作量是低很多的。精准测试和自动化测试是并行的技术方向,企业应用可以根据各自团队的特点来选择,并没有绝对的应用时序依赖关系。自动化测试近些年的应用遇到一个广泛的批评就是:让测试团队疲于应付用例的编写而不是测试用例设计等测试核心技术。精准测试属于测试分析系统,着眼点和立意相对较高,在测试理论、方法和商业应用落地验证与成果上,形成较好的整体闭环。它把测试需要关注的核心,引领到一个正确方向上来。
3. 精准测试在技术特性上解决了测试结果可信性的问题。在精准测试之前,我们所见到的所有测试数据都是易伪造、易篡改的。例如我们通常使用的测试管理系统,一个用例是否被有效执行,绝大部分是在测试管理系统中被人工录入的。精准测试是在用例动态执行过程中,由计算机内部算法真实记录对应的程序运行逻辑,然后形成后面对测试数据进行精确分析的数据源基础。所以其底层程序运行的数据是没有办法也绝对不允许进行伪造和篡改的。精准测试果断去除了阻碍测试行业发展的重要障碍,让测试的结果精准化、可量化、可衡量化、可信化。此举,将大幅减低测试行业本身的管理成本,有效推动测试行业的快速、健康发展。
4. 精准测试大幅提升了开发和测试部门的协作效能。前面提到全景调试器,测试工程师执行完用例,即时产生代码层级的全景调试数据;测试完成后一旦用例存在缺陷,那么基于这个全景调试图以及高度可视化的数据路径追溯,开发人员可以直接对缺陷进行定位,不需要在开发环境下重现缺陷,再单步调试以解决问题。实施精准测试之前,开发人员苦于很难有效参与对测试用例进行审核;实施精准测试后,用例的执行结果都映射到了代码层,开发人员通过代码的覆盖视图很容易就可以协助测试人员补充和确认用例,开发和测试的协作变得非常简单和直接有效。
不可否认,在精准测试之前,开发和测试存在沟通不畅的问题。通过精准测试在项目中的有效实施我们会发现,精准测试可以帮助开发提供非常有价值的数据:例如代码和用例的反向追溯可以帮助开发人员修改代码做参考,精准测试自动计算回归范围减轻了开发人员必须协助测试进行分析的工作量,因此,精准测试对开发和测试来讲,是一举两得、相得益彰的。
5. 星云精准测试发明了多个全新的、适应敏捷迭代开发模型下的覆盖率计算方法。覆盖率是白盒测试最基本的技术,但是随着敏捷迭代的开发模式,即使最高端的白盒测试工具已经几乎没有用武之地,原因就在于由于迭代很快,在某个版本上通常只能采集少量的覆盖率后新版本就发布了。本应在一个版本上分析的覆盖数据,分布到了数个代码结构不一样的程序版本上,因此原有的统计方法和参考意义基本上都失效了。精准测试提供了累计覆盖率,能够将多个版本的覆盖率以最新版本的代码结构进行投影,在控制流上进行累加。这样测试团队无需关注每个版本的覆盖情况,即可关注一个完整测试周期内所有版本的累积覆盖率。另外,考虑到敏捷迭代每个版本的测试需求,即:针对特定模块和功能范围进行测试(并不是全量测试),精准测试提供了相关覆盖率的计算方法。它可以自动圈定某个用例和用例集有关的代码范围(这些也是基于用例和代码的关系分析基础上动态计算的),在运行少量用例或者某个功能模块的情况下,它可以自动确定相关代码,把不相关的代码从覆盖率的分母中过滤掉。这样相关覆盖率在仅仅运行部分少量用例的情况下,依然具有很强的统计和参照意义。
精准测试的定义
精准测试定义:由中国团队发起并原创完成测试理念设计和商用产品研发的全新测试技术。旨在测试用例执行过程中,全自动建立任意运行模式的软件系统的功能点与源代码之间高度的可视化追溯机制,获取功能点相关的代码覆盖率并进行精准回归等测试用例深度辅助分析算法的应用。精准测试是测试理论界首次同时使用测试用例及其相关代码两个关键因子,进行质量综合考量和分析的创新测试方法体系。
基本定义
精准测试在测试用例执行过程中,可以同步全自动建立任意运行模式的软件系统功能点与源代码之间的高度可视化追溯机制,即通过内部算法能够将缺陷对应的代码出错位置直接定位出来;能够获取功能点相关的代码覆盖率并进行精准回归等,使测试用例深度辅助分析算法得以强化应用。这是软件测试首次同时使用测试用例及其相关代码两个关键因子,进行质量综合考量和分析的创新测试理论方法体系。这种有效的数据追溯与“量子联动”的突破性技术特性,大大增强了测试的深度与广度,打破了测试部门的成长天花板,为测试过程本身的价值挖掘和测试数据资产的增值,提供了必要而充分的条件。
关键技术
精准测试体系贯穿整个软件测试生命周期。精准测试主要侧重于系统级测试,在单元测试、集成测试、系统测试、验收测试、回归测试中,均能赋予测试数据强大的追溯能力。关键核心技术有:测试用例和代码逻辑的双向追溯,测试示波器、覆盖率可视化、回归测试用例的自动选取、缺陷最后执行时序分析、智能缺陷定位、敏捷环境下多版本白盒测试数据的聚合、聚类分析、结合代码结构与动态数据的测试漏洞检出等。
精准测试在测试用例执行过程中,为用户从底层自动建立任意运行模式的软件系统功能点与源代码之间的可视化追溯机制,使用户获取用例级的代码覆盖率等多种高级测试数据。这一突破性的创新智能算法,有力的打破了软件开发、测试、维护及管理人员等之间的数据孤岛状态,实现了软件测试过程和结果的高度精准可视化,在软件高可靠性和高可信度方面,提供了全面而有力的数据支撑。精准测试运行模式是灰盒模式,即:可以在黑盒功能测试的时候,同步完成数据采集和分析计算,让“点测”团队也可轻易切入到精准测试模式,无需改变现有测试形式与流程,不增加额外的技术学习与转换成本。
应用范围
精准测试适用于任何形态的软件系统。星云精准测试可应用于各种软件包括嵌入式系统、分布式系统、web应用系统、单机软件系统等各类软件的测试,并且完全不受限于被测试软件本身的业务需求。
用户收益
1. 实现从发现缺陷到预防缺陷的转型。减少因为缺陷而对整个研发运维流程造成的返工成本。使发现缺陷前移,减少因项目后期的严重缺陷而导致产品交付延期、成本增高,影响交付质量。
2. 建立跨需求、开发、测试等部门的测试协同平台。实现业务数据可追溯化和路径可视化。
3. 优化技术与业务方案。根据不同的质量要求,优先级顺序、技术实现手段等,实现智能灵活的技术方案推荐、交付和应变机制。减少无数据支撑造成的内耗。
4. 企业“精准众测”平台,支撑千人团队同时在线。测试数据可以根据管理需要做分析,为企业内的成本管控提供选型参考。实现跨地区,跨部门的业务人员,开发人员和测试人员的测试协同,即使不在同一办公地点的人员,也可针对测试需求,测试任务,测试用例和测试缺陷等方面进行远程沟通和实时协同作用,最终完成整个测试过程的实施。
5. 支持敏捷开发与测试模式。关注新功能的增量测试,支持自动化回归测试,实现高效的IT交付。
精准测试的基础架构
精准测试从某些层面来讲,赋予了测试用例真正的生命力。测试用例是测试数据的一种,当测试数据实现路线可追溯可视化的时候,一些高级算法的强大能力就可以显示出来。我们从精准测试的整体架构图中可以做一具体分析。
精准测试的总体架构图
第一层:利用先进的前置编译器,为客户做源码静态结构分析(在客户的实际环境中,根据客户的需求进行相关的技术配合);
第二层:将处理好的系统程序放入测试环境运行,测试工程师通过人工或程序自动化的形式,开始执行用例(人工执行用例可以和测试管理平台或者Excel表格方式进行对接),精准测试的 “软件示波器”采集运行数据并进行高速智能运算,获取精确的测试数据;
第三层:根据采集的代码与对应的测试用例,在星云精准测试平台中实现用例与源码的互相追溯;
第四层:通过精准测试的分析平台,可以对测试数据进行缺陷定位、用例聚类分析、回归测试用例和最小测试用例集等功能的计算,用户还可以根据需求,批量生成相应的测试报告,或进行测试数据高级分析。
领取专属 10元无门槛券
私享最新 技术干货