李华伟 中国科学院计算技术研究所研究员
寿国础 北京邮电大学教授
软件、集成电路和网络是信息系统的基础,其质量决定了信息系统能否稳定可靠运行,涉及到国民经济和国家信息安全的诸多方面。随着信息技术的发展和信息系统的日益广泛应用,软件、硬件与网络越来越复杂,由质量问题带来的可靠和安全隐患问题日益突出,软件-集成电路-网络测试技术在质量保障和安全隐患检测中发挥着越来越重要的作用。
软件测试能够发现软件中存在的错误和缺陷,验证软件的功能和性能是否满足用户的需求,是保证软件质量、提升开发人员信心的重要手段。据统计,在美国,软件开发过程中超过50%的支出用于软件测试,在我国,这个比例大约是20%左右,国产软件质量尚存在很大差距。
软件测试的方法种类繁多,根据不同的标准分类如下。1)按照测试过程是否在计算机上执行分为静态测试、动态测试和解释执行;2)按照测试过程是否考察软件的内部结构分为黑盒(黑箱)测试和白盒(白箱)测试;3)按照软件测试的环境分为全数字(仿真)测试、(半)实物仿真测试以及专用测试环境下的仿真测试;4)按照软件测试的对象分为源程序审查和走查、单元测试、部件测试(组装测试)、配置项测试(确认测试)、软件系统测试(软件系统联试)、系统测试、交付前的可靠性(增长)测试、交付时的鉴定/验收测试以及回归测试;5)按照参加测试人员的属性分为内部测试、用户测试/鉴定测试、资格测试、第三方测试和软件合格性审查。测试工具的自动化是近年来学术和产业界关注的重点。
近些年来,学术界在软件测试领域的研究成果主要集中于自动化的测试数据生成、测试策略、回归测试等方面,其中的关键技术包括基于动态符号执行的测试数据生成、基于元启发式搜索的优化、自适应的随机测试、组合测试、基于模型的测试、测试用例集的约简和优化等;而产业界的工作则主要侧重于测试执行框架的研发(比如广泛应用的xUnit框架)和提高集成测试效率的持续集成(Continuous Integration)等方面。
尽管国内外学者在软件测试方法及理论研究方面取得了长足的进展,但是随着移动应用、Web应用、云计算、面向服务的架构和软件生产线等新兴技术的不断涌现,传统的软件开发模式和软件体系架构已发生了重大变化,一些面向传统软件(单一语言编写、非分布式、规模不大)的测试方法逐渐显露出其不足,不再适用于“多源异构、分布式、高动态”的现代软件。如何针对此类软件的特点,开展高效的性能与可靠性测试、存储和能量测试、安全性测试、GUI测试和生产线测试等,将是未来的研究发展方向。
软件的安全性测试近些年来逐步受到重视,功能验证、漏洞扫描和模拟攻击是其常用的方法。
按照摩尔定律发展的集成电路已创造出巨额效益,在人们的生活和工作中无处不在,因此,集成电路元器件的质量关系到千家万户。保障元器件质量的测试技术涉及集成电路生命周期的各阶段,如图1所示。下面从设计验证、芯片测试、硅后调试、集成电路安全隐患检测四个方面简要探讨目前业界正在应用的先进的集成电路测试技术。
图1 集成电路元器件生命周期的测试技术
1) 设计验证。设计验证是为了在芯片流片之前找到并排除设计中的错误,保证设计与其功能规范相符合。据统计,设计人员往往要将整个设计流程中50%~70%的时间用于系统功能的验证;在目前多数工程项目中,验证工程师数目超过了设计工程师,对于复杂的设计更是达到了2:1甚至3:1的比率。设计验证技术主要包括模拟方法和形式化方法两大类。模拟验证是业界主流的验证方法,它通过施加输入激励进行模拟,并将模拟结果和参考模型的结果进行比较以验证设计的正确性。业界推荐使用的先进模拟验证方法包括:使用SystemVerilog语言建立参考功能模型,开发基于约束随机的激励生成平台,采用断言技术为验证提供良好的可观察性、提高对潜在内部设计错误的检测能力,并进行代码覆盖率和功能覆盖率的统计来指导验证资源向未覆盖的部分倾斜。为了提高验证资源的可重用性,验证工程师可以利用UVM(以SystemVerilog类库为主体的验证平台开发框架)中可重用组件构建具有标准化层次结构和接口的功能验证环境。一些典型或规范的设计已经有可以利用的验证IP来辅助建设验证平台。上述模拟验证技术在我国集成电路设计研究机构和企业均已得到不同程度的应用。
模拟方法具有良好的可扩展性,并可适用于各种类型的设计;但它不是一种完全的方法,并且对于边缘属性的验证效率较低。形式化验证则是借助基于数学的方法来证明设计满足规范的部分或全部属性,是一种完全的验证方法。形式化验证方法主要包括等价性检验、定理证明和模型检验三类。等价性检验主要用来检查设计在不同的抽象层次间的功能等价性,已在国内外业界广泛使用,但不能直接应用于功能验证。定理证明方法主要是通过数学定理推演来证明特定的设计属性,难以得到推广应用。模型检验方法具有规范化、易于自动化、完全的特点,但在使用时会面临状态爆炸等问题,导致其处理规模有限。模型检验方法的应用需要验证人员具备专门知识,目前在我国尚不具备广泛应用条件。
此外,为了方便系统级的验证,FPGA原型仿真验证方法在国内外业界广泛使用。
在研究领域,将模拟方法和形式化方法结合在一起的半形式化验证方法是一个颇具前景的方向,代表性方法是抽象信息引导的验证激励生成。
2) 芯片测试。芯片测试用于发现有缺陷的芯片,流片出来的每一片芯片都需要经过测试。复杂高端芯片的测试成本正在接近甚至超过设计成本。测试并不是等芯片制造出来才考虑的问题,在设计过程中就必须考虑是否能开发出高质量的测试集、测试开发时间和难易程度、对每个芯片进行测试的成本等问题,从而进行有效的可测试性设计和高故障覆盖率的测试生成。
成熟的可测试性设计技术主要有扫描设计、边界扫描设计(JTAG,用于板级测试)、存储器内建自测试、逻辑电路内建自测试等。为避免过高的测试功耗损坏芯片或影响测试准确性,需要进行低功耗的可测试性设计和测试生成。随着SOC设计的发展,从边界扫描设计标准IEEE 1149.1扩展出来嵌入式核测试标准IEEE 1500来支持SOC测试;此外,三维集成电路也推动了三维测试封装结构的研发和应用。在测试生成方面,由于芯片性能增加及与性能相关的缺陷越来越显著,时延测试得到广泛应用。在研究领域,小时延缺陷对电路可靠性的影响受到关注;串扰噪声、电源噪声对芯片时延的影响,以及开关级或晶体管级电路的充放电路径引起的时延变化,都需要在时延测试生成中加以考虑。针对微处理器以及包含处理器核的SOC,基于软件的自测试技术采用指令构成的软件程序来测试处理器本身或处理器核周围的电路,并已在Intel等公司的产品中得到应用。此外,新型逻辑和存储器件的测试都需要持续探索。
3) 硅后调试。随着芯片设计越来越复杂以及单位面积上的晶体管数目快速增加,遗留到硅后阶段的错误也随之增多,因此,复杂的设计需要在量产之前经过首次流片的硅后调试阶段。据统计,到2006年采用90nm工艺时,芯片设计周期中超过35%的时间都用于硅后调试。这表明硅后调试已经成为制约芯片上市时间的重要因素。硅后调试如果不能发现遗留在芯片中的错误,就会在量产甚至投向市场之后造成重大损失。所以调试需要尽可能找出留在芯片中的错误,包括功能错误和电气错误。造成调试越来越困难的原因,一方面是由于在正常功能模式下受到输出引脚的限制,芯片内部信号的可观测性非常差;另一方面新工艺也带来了新挑战,一些难以发现的电气错误在新的工艺下开始出现。
集成电路调试主要是通过获取数据和分析数据来对错误进行定位。物理探针技术曾被广泛用于获取电路内部数据,然而随着特征尺寸不断变小和集成电路复杂度的提高,利用物理探针技术获取数据也变得十分困难。一种有效的方法是先利用其他调试技术将错误限定到物理探针可以处理的范围,然后再通过物理手段进一步定位错误根源。为在硅后阶段较快发现和定位错误,可调试性设计已成为一种普遍接受的设计方案。常用的可调试性设计技术有基于扫描链的技术和基于追踪缓存的技术。基于扫描链的技术通过在调试模式下将片中多条扫描链连接成一条扫描链,将其配置成JTAG结构中的一个特殊的数据寄存器并通过TDI和TDO端口将数据扫出,从而提高了内部信号的可观测性。基于追踪缓存的技术通过将芯片中需要观测的信号连接到芯片上的追踪缓存中,在芯片运行过程中保存这些信号的值,可以得到这些信号在一段连续时间内的值。电气错误的建模、追踪信号的选择、错误的定位等是集成电路调试中关注的关键问题,也是研究的热点。在国际上,ARM、MIPS等企业为其处理器核定制专门的调试结构。在国内,基于扫描链的调试技术在一些先进的处理器设计中已经开始应用;同时,从边界扫描设计延伸出来的调试技术(如EJTAG)也得到一定应用。而我国多数中低端芯片设计不考虑可调试性设计,或仅仅支持利用板级测试的JTAG提供简单的板级调试。
4) 集成电路安全隐患检测。一颗集成电路芯片的产生需要用户、设计方、第三方IP提供者、制造厂家等多方参与,若在不可控的中间过程引入集成电路安全隐患,这些隐患一旦被激活会导致芯片自毁、信息泄漏或被篡改、芯片功能失效等,致使信息系统运行不稳定甚至毁坏、信息被窃取或篡改,最终使得敌方获利,给用户造成不可挽回的损失。
集成电路安全隐患主要包括设计漏洞、硬件木马和恶意伪造芯片。设计漏洞指由于设计人员开发硬件时的疏忽,或者是硬件描述语言自身的局限性,导致集成电路内部的部分电路在一定情况下可被利用,进而威胁信息系统的安全。硬件木马指在集成电路内部被恶意植入的部分电路,为攻击留下电子后门,在一定情况下可被激活、执行。恶意伪造芯片指利用老旧翻新、反向工程等手段得到未经设计制造厂商授权的非法芯片,同时也可能在伪造芯片中植入硬件木马。相对于设计漏洞等被动式安全隐患,以硬件木马和恶意伪造芯片等为主的主动式安全隐患恶意性更强、危害更大。
设计阶段进行的硅前硬件木马检测,其目标在于确认设计过程中使用的第三方IP核、第三方芯片设计工具和系统设计的安全。对于IP核中硬件木马检测,可通过物理隔离的方法来限制不信任的IP核,并限制可信核与不可信核间的通信。系统级可采取硬件冗余的方法保护系统的安全。对于设计在电路源代码中的硬件木马,研究人员提出一些源代码分析技术,来判定电路中容易被木马利用的信号。在流片之后,硅后硬件木马检测的目标在于确认第三方芯片制造厂商是否在版图级或物理级上给芯片植入硬件木马电路,检测手段比较受限并往往假定具有黄金参考模型,主流方法是侧通道分析法和激活检测法。
目前,集成电路安全隐患对信息安全的威胁受到国内外军方、大学和科研机构等的紧密关注,进一步的研究需要解决两方面的问题。1)为复杂多样的安全隐患建立有效的检测模型;2)解决集成度高、工艺偏差大的背景下安全隐患的有效检测。集成电路安全隐患检测技术目前多处于实验室研究阶段,其推广应用还有很长的路要走。
网络的地位从来没有像现在这么重要,深刻影响着人们的工作、生活以及社会活动的方方面面。未来网络已酝酿从头再来的设计思想,革新传统网络的体系架构,而实际网络的部署通常是一个循序渐进的演进过程。无论网络是演进还是变革,网络测试均伴随而行。以下选取光纤网络、无线网络、网络业务质量以及典型未来网络架构等作为网络测试的热点进行简要探讨。
1) 光纤网络测试。随着移动互联网、云计算、大数据等应用的飞速发展,接入网带宽不断提升,网络流量迅猛增加,100G光纤网络已成为运营商光纤网络升级和新建的方向,100G的测试需求也已从实验室转入到目前的规模化网络部署中。相对40G以下速率的光纤传输,新的100G光纤网络不仅有更高的传输带宽,而且采用了多波长、多通道和新的传输调制方式,所以测试方式与以前相比有所不同,包括从普遍的单波长、单通道测试变成为多波长、多通道测试。另外,由于各种不同的调制方式具备不同的传输适应性而形成光传输调制方式的差异,也引起了测试方法的升级更新。
光纤网络的进一步发展也将促进测试技术的升级。光纤网络光层技术将更多采用更具透明性的全光传送方式取代光-电-光转换方式,采用相干接收实现更高速的信号检测能力,采用新颖的调制技术以提高频谱效率、改善信号质量以及降低成本。从光纤网络组网层面看,结合软件定义网络(SDN)的软件定义光网络(SDON)技术的研究近年来风头正劲,有不少运营商与设备厂商的联合试验和测试已经开展,规模较大的是光互联论坛(OIF)与开放网络基金会(ONF)联合举办的全球光传送网SDN互操作性演示与测试,成功实现了支持南向/北向接口的多厂商互操作。
2) 无线网络测试。随着新的4G无线网络的商业化部署和运营,相关的测试需求也会随之发生一些转变。同时,无线通信业已寻找出新的技术突破点,从而在2020年左右实现向下一代5G无线网络的演进,来满足不断增长的新业务和市场应用需要。
过去20年来,如MIMO、OFDM等无线空中接口技术为移动网络容量带来了近20倍的增长,而新频谱的获得带来了25倍的容量增长。毫无疑问,空口技术和频谱的提升及扩展还将继续,因此,也需要进一步提升测试能力和开发新的测试方案以满足5G带来的新测试要求,例如大规模天线阵列系统的仿真和测量、信道测量与建模以及新的无线接口物理层设计和验证等。
网络架构的改进预计会给网络容量带来40倍的增长,主要来自于异构网络的部署以及信息与通信技术(ICT)的融合,目前主要的改进方式包括:小基站致密化、与无线局域网(WLAN)等多接入技术融合与流量卸载、D2D、联合资源调度和干扰协调提高宏基站和微基站的资源利用率等。考虑到频谱资源的稀缺以及空中接口技术,频谱利用率已经接近容量极限,基于ICT技术融合的网络架构的革新成为未来更长远无线网络容量提升的主要驱动力。由于赋予了未来无线网络连接人与人、物与物、人与物等更广泛应用的期望,将涉及容量、时延、能效、用户体验等更多、更高指标的要求,势必对无线网络测试方法提出新的需求和挑战。
3) 网络业务质量评测。传统的网络测试主要关注网络从部署到运行过程中的网络性能,QoS参数用来保障用户的服务质量。在网络建设与工程验收阶段,网络测试用于检查网络性能是否达到设计的指标要求;在网络运行阶段,网络可能会由于网络设备故障或业务流量激增导致性能下降,可以通过网络测试来定位故障、确定网络优化方案;在网络服务过程中,网络运营商为用户提供相应级别的服务质量,网络测试能够检验服务质量与服务承诺的一致性,有利于用户和网络运营商对服务质量达成共识。
而在当今的网络生态中,业务成功的关键要看用户的体验质量即QoE的好坏,激烈的市场竞争使运营商意识到:提高终端用户的满意度,留住用户并扩大用户规模是生存和盈利的关键。根据维基百科的解释,QoE是人们对特定的产品、服务或应用程序的期望、感受、感知、认知、满意度,QoE成为反映人们的质量需求和期望的蓝图。由于QoE的重要性,QoE及其评测是近些年的一个热门研究方向。QoE的评测需要有标准化的度量指标和相应的测试技术。人类主观感受的复杂性使得QoE的评测存在难点问题,包括如何确定用户体验质量的影响因素、评测指标的定量化以及经济有效的客观评测工具。
4) 未来网络测试。虽然前述的几个热点也将是支持未来网络所需要的,但从网络变革的角度看,目前较有代表性的未来网络架构包括软件定义网络(SDN)、网络功能虚拟化(NFV)、信息中心网络(ICN)等。
软件定义网络是一种数据平面与控制平面相分离,并可直接对控制平面编程的新型网络架构。作为SDN南向接口的OpenFlow协议实现了控制器与网络节点设备的相互通信。随着OpenFlow协议的研究与应用的持续推进,其标准已经更新到1.5版本。SDN的北向接口用于控制器支持应用层,但是北向接口的标准化比南向接口要缓慢和复杂。针对南向、北向接口的测试是SDN测试的重点,通常包括一致性测试、互通性测试,以检测实现的接口协议与标准的符合程度以及不同系统间的互连互通能力。SDN其他测试还可以包括检测SDN组网、协议实现的性能参数以及在各极端环境下运行能力的性能测试和鲁棒性测试等。由于SDN涵盖不同接口、不同厂商以及不同版本的接口协议和组网方案,需要有行之有效的测试框架和测试方法来解决相应的测试问题。
网络功能虚拟化使用通用性硬件以及虚拟化技术来运行网络及实现业务功能。NFV由国际主流运营商提出,并联合多家设备厂商在ETSI建立标准组,以推动NFV产业化发展。NFV解耦了传统专用设备的软硬件,引入了虚拟化技术来池化物理资源,对网络架构的改动很大,需要通过测试来验证NFV系统是否满足运营商的组网要求。已进行的NFV测试主要包括虚拟化系统平台、业务软件以及可用性测试,系统平台和业务的测试均包含了功能测试与性能测试。
信息中心网络(ICN)或内容中心网络(CCN)是为适应用户访问网络时对信息内容的获取而提出的新型网络架构,其网络的基本行为模式是请求和获取信息内容,而非传统IP网络的端到端可达。ICN/CCN所涉及的关键技术主要包括命名机制、缓存策略、路由与转发机制、传输策略、移动性等。IETF组织开始讨论CCNx协议,旨在推进ICN/CCN的标准化与应用。
近年来,我国的软件测试、集成电路测试与网络测试技术都有了长足的进步,在国际学术界有了越来越多的成果报道,在国内业界发挥着越来越多的作用。软件-集成电路-网络测试技术的研究与应用采用产-学-研相结合的方式是未来的发展趋势。