软件可靠性测试与测试环境
- 格式:doc
- 大小:145.00 KB
- 文档页数:9
软件测试中的测试环境搭建和维护在软件测试中,测试环境的搭建和维护是一项关键任务。
一个良好的测试环境可以确保测试的准确性和可靠性,提高测试效率。
本文将介绍如何进行测试环境的搭建和维护。
一、测试环境的搭建1.确定测试环境需求在搭建测试环境之前,需要明确测试的目标和需求。
根据软件测试计划和测试用例,确定所需的硬件设备、操作系统、数据库、网络配置等。
2.准备硬件设备根据测试需求,准备适当的硬件设备,如服务器、客户端机器、网络设备等。
确保硬件设备的配置满足测试要求,并按照测试计划中的要求进行配置。
3.安装操作系统和软件根据测试环境需求,选择合适的操作系统版本,并在硬件设备上进行安装。
安装操作系统后,根据需要安装所需的测试工具和软件,如IDE、测试管理工具、数据库、Web服务器等。
4.配置网络环境在测试环境搭建过程中,需要配置适当的网络环境,确保测试过程中的数据传输和通信正常。
配置网络地址、端口号、防火墙等,以满足测试需求。
5.创建测试数据库根据测试需求,创建测试数据库,并导入测试数据。
设置数据库的用户权限,并进行必要的数据清理和备份,以保证测试环境的稳定性和一致性。
二、测试环境的维护1.定期备份与恢复为了确保测试环境的可靠性,需要定期备份测试环境的数据和配置信息。
备份包括数据库备份、系统配置文件备份等。
在出现异常情况时,能够及时恢复测试环境,以减少测试中断时间。
2.监控与性能优化测试环境通常会面临大量的测试任务,因此需要监控测试环境的性能。
定期检查硬件设备、网络带宽、数据库负载等指标,及时发现并解决潜在问题。
对于性能瓶颈,可以通过调整配置、优化代码等方式提升测试环境的性能。
3.升级和配置更新随着项目的进行,会有新的测试需求和新的测试工具出现。
因此,需要定期进行升级和配置更新。
在升级和更新过程中,需要保证测试环境的稳定性和兼容性。
4.问题记录和解决在测试环境中,可能会出现各种问题和异常情况,如软件崩溃、网络中断等。
软件测试中的可靠性与可用性测试在软件开发的过程中,为了确保软件的质量和稳定性,必须进行各种类型的测试。
其中,可靠性和可用性测试是非常重要的两个方面。
本文将探讨软件测试中的可靠性和可用性测试,并介绍它们的意义和具体方法。
一、可靠性测试可靠性测试是指通过对软件进行一系列的测试和评估,来确定该软件在一定时间内能够持续正常运行的能力。
可靠性测试旨在发现软件中的错误或缺陷,并确保软件在各种环境下都能正常运行。
1.1 可靠性测试的意义可靠性测试的主要目的是发现软件中的缺陷和错误,并提供相应的修复措施。
可靠性测试对于确保软件的功能正常运行、提高用户满意度、降低维护成本等方面具有重要意义。
1.2 可靠性测试的方法可靠性测试可以采用多种方法和技术,下面介绍几种常用的可靠性测试方法:1.2.1 基本功能验证测试基本功能验证测试是最基本的可靠性测试方法之一。
通过对软件的基本功能进行验证,确保软件在各种情况下都能正常运行。
例如,输入非法数据时,软件是否能够给出正确的提示信息。
1.2.2 压力测试压力测试是通过模拟软件在高负载或极端条件下的运行情况,来评估软件的可靠性。
在压力测试中,可以测试软件在超负荷情况下是否能够继续正确运行,并评估软件的性能表现。
1.2.3 冒烟测试冒烟测试是指对软件的主要功能进行初步验证,以确保软件能够正常启动和运行。
冒烟测试是可靠性测试的一种快速测试方法,通常在开发过程中的每个阶段进行,以及在软件发布前进行。
1.2.4 回归测试回归测试是在对软件进行修改或更新后,重新运行之前测试过的测试用例,以确保新的修改或更新没有引入新的错误。
回归测试是一种重要的可靠性测试方法,可以帮助开发人员识别并修复由于软件修改引入的新问题。
二、可用性测试可用性测试是评估软件用户界面的易用性和用户满意度的过程。
可用性测试旨在确保软件在用户角度下的易用性和友好性,并提供改进建议以增强用户体验。
2.1 可用性测试的意义可用性测试对于提高用户满意度、降低培训成本、减少误操作和提高用户生产力具有重要意义。
软件测试报告可靠性测试报告软件测试报告可靠性测试报告1. 引言在软件开发过程中,可靠性是一个至关重要的指标。
软件测试是保证软件可靠性的一项重要环节。
本报告将对软件进行可靠性测试,并详细记录测试过程、结果和分析。
2. 测试目的可靠性测试的目的是评估软件在特定条件下的稳定性和健壮性,以验证系统在长时间运行中是否会出现错误、崩溃或数据损坏等问题。
此外,我们还将分析可靠性测试的结果,提供给开发团队进行问题修复和改进。
3. 测试环境为了保证测试结果的准确性和可重复性,我们使用了以下测试环境:- 操作系统:Windows 10- 测试工具:XXX测试工具版本号- 测试设备:XXX服务器4. 测试内容在可靠性测试中,我们通过模拟正常和异常的使用情况来评估软件的稳定性和可靠性。
具体的测试内容包括:- 正常使用情况下的功能测试:验证软件在正常使用情况下的功能是否正常、稳定。
- 负载测试:通过模拟高负载情况下的使用,测试软件的稳定性和性能表现。
- 压力测试:通过模拟大量并发用户的情况下,测试软件的响应速度和系统资源消耗情况。
- 安全测试:测试软件在面对恶意攻击和异常输入时的抵抗能力和自我恢复能力。
5. 测试过程基于上述测试内容,我们按照以下步骤进行了可靠性测试:1) 设计测试用例:根据软件的功能和需求,设计了一组全面的测试用例,覆盖了核心功能和边界条件。
2) 搭建测试环境:配置了测试环境,包括操作系统、测试工具和测试设备。
3) 执行测试用例:按照测试计划,逐个执行测试用例,并记录测试结果。
4) 分析测试结果:根据测试结果和预设的可靠性指标,对软件的可靠性进行评估和分析。
5) 编写测试报告:整理测试结果和分析,撰写可靠性测试报告。
6. 测试结果根据我们的测试和分析,以下是软件的可靠性测试结果:- 正常使用情况下,软件所有功能均正常运行,未发现任何错误或异常。
- 在高负载和压力测试中,软件表现稳定,没有出现崩溃或明显的性能问题。
什么是软件可靠性软件可靠性测试是一种系统性的、全面性的测试方法,其特点包括:1.测试的目的是验证软件的可靠性,而非其他方面的功能。
2.测试时需要考虑各种可能的环境条件和使用情况。
3.测试需要使用大量的数据和测试用例,以尽可能地覆盖软件的各种功能和情况。
4.测试需要进行长时间的运行和观察,以检验软件在不同时间段和条件下的可靠性表现。
5.测试结果需要进行统计和分析,以确定软件的可靠性评估和改进方案。
软件可靠性测试的方法软件可靠性测试的方法包括:1.静态测试:主要是对软件的代码和文档进行检查和分析,以发现可能存在的问题和错误。
2.动态测试:主要是通过执行软件的各种功能和测试用例,以检验软件的可靠性和稳定性。
3.随机测试:主要是通过随机生成各种输入数据和情况,以测试软件的鲁棒性和容错性。
4.压力测试:主要是通过模拟大量的用户和数据负载,以测试软件的性能和可靠性。
5.回归测试:主要是在软件修改或升级后,重新执行之前的测试用例,以确保软件的可靠性没有受到影响。
总之,软件可靠性是软件质量的一个重要方面,需要通过严格的测试和评估来保证。
在测试过程中,需要考虑各种可能的环境和情况,以尽可能地发现和解决软件的问题和错误。
软件可靠性测试是软件可靠性保证过程中非常关键的一步。
经过软件可靠性测试的软件并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。
从工程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失效,由此所造成的危害也小。
一个大型的工程软件没有错误是不可能的,至少理论上还不能证明一个大型的工程软件能没有错误。
因此,保证软件可靠性的关键不是确保软件没有错误,而是要确保软件的关键部分没有错误。
更确切地说,是要确保软件中没有对可靠性影响较大的错误。
这正是软件可靠性测试的目的之一。
软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找对可靠性影响较大的故障。
软件可靠性测试与分析方法软件可靠性是指软件系统在特定环境下正常运行的能力,即不出现错误或故障的能力。
在软件开发过程中,确保软件的可靠性是非常重要的。
为了评估和提高软件的可靠性,软件可靠性测试与分析方法应运而生。
软件可靠性测试是通过模拟真实环境下的使用情况,检测软件在各种条件下的性能,以评估软件的可靠性。
下面将介绍几种常见的软件可靠性测试方法。
一、功能测试功能测试是最常用的软件测试方法之一。
它通过验证软件是否能够按照设计目标完成各项功能来评估软件的可靠性。
在功能测试中,测试人员会模拟用户的实际操作,测试软件在各种输入条件下的输出结果是否符合预期。
二、负载测试负载测试是测试软件在正常和超负荷条件下的稳定性和性能的方法。
在负载测试中,测试人员会模拟多个用户同时访问软件,测试软件在高负载情况下是否能够正常运行,并监测其性能和可靠性。
三、压力测试压力测试是测试软件在超过正常工作范围条件下是否能够继续保持稳定的方法。
在压力测试中,测试人员会通过增加用户数量或者模拟高频率请求等方式对软件进行测试,以验证其在极限压力下的可靠性。
四、故障注入测试故障注入测试是一种主动注入故障以测试软件可靠性的方法。
在故障注入测试中,测试人员会有意地引入一些错误和故障,观察软件在这些异常情况下的表现和响应能力,从而评估软件的可靠性及其对异常情况的适应能力。
五、冗余测试冗余测试是通过增加系统的冗余度来提高软件可靠性的测试方法。
在冗余测试中,测试人员会在软件系统中增加备份设备、冗余的网络连接等冗余机制,以确保即使出现故障或错误,系统仍然能够保持正常工作。
除了软件可靠性测试外,对软件进行可靠性分析也是提高软件可靠性的重要手段。
一、失效模式和效应分析(FMEA)FMEA是一种系统性的分析方法,用于识别和评估系统中可能存在的失效模式和其对系统性能的影响。
通过FMEA分析,可以找到软件中潜在的设计问题,并采取措施进行改进,以提高软件的可靠性。
软件测试中的可靠性与稳定性测试软件测试是软件开发生命周期中非常重要的一环,它有助于发现和解决软件中的问题,确保软件质量。
在软件测试过程中,可靠性与稳定性测试是不可或缺的一部分。
本文将探讨软件测试中的可靠性与稳定性测试的重要性、基本原理和常见的测试方法。
可靠性和稳定性是软件成功的关键因素,它们在软件测试中的作用不可忽视。
可靠性指的是软件在给定条件下保持其期望功能的能力,而稳定性则是指软件在各种环境和负载压力下的表现一致性。
只有在软件可靠性和稳定性测试通过后,用户才能放心地使用该软件。
在进行可靠性测试时,需要考虑以下几个方面。
首先是功能测试,通过对软件功能的全面测试,确保软件满足用户的功能需求。
其次是压力测试,通过对软件在高负载状态下的测试,评估其性能和稳定性。
此外,还需要进行兼容性测试,确保软件在不同的操作系统和设备上的兼容性。
最后是安全性测试,通过测试软件的安全机制,防止恶意攻击和数据泄露。
稳定性测试主要针对软件在长时间运行和不稳定环境下的表现。
在进行稳定性测试时,首先需要模拟各种可能的环境条件,并进行测试以验证软件在不同环境下的表现。
同时,也需要对软件进行长时间的运行测试,以评估其在持续运行时是否产生内存泄漏、资源消耗过多等问题。
为了确保软件可靠性和稳定性测试的准确性和全面性,我们可以采用一些常见的测试方法。
首先是单元测试,即对软件的最小单元进行独立测试,确保各个单元功能的正确性。
接下来是集成测试,将各个单元进行组合测试,确保它们之间的协作正常。
然后是系统测试,对整个软件系统进行全面测试,检查系统的功能是否满足需求。
最后是回归测试,当软件进行升级或修改后,需要重新进行测试,确保修改不会影响其他模块的功能。
除了以上的测试方法,还可以采用自动化测试工具来提高测试效率和准确性。
自动化测试可以减少人为错误,并且可以重复执行相同的测试用例,提高测试的覆盖范围和深度。
总之,软件测试中的可靠性与稳定性测试对于确保软件质量至关重要。
软件测试报告可靠性测试的挑战与解决方案总结在软件开发过程中,软件测试是一个至关重要的环节,其目的是验证和评估软件的可靠性和稳定性。
可靠性测试作为软件测试的一个重要组成部分,其目标是测量软件在特定条件下的可靠性。
然而,在进行可靠性测试时,会面临一些挑战。
本文将总结软件测试报告可靠性测试的挑战,并提供解决方案。
一、挑战1. 复杂性挑战:现代软件越来越复杂,由于软件中可能存在的各种复杂性,如并发性、多线程、分布式等,给可靠性测试带来了很大的挑战。
同时,软件与硬件和其他外部系统的交互也增加了可靠性测试的复杂性。
2. 环境挑战:软件可靠性测试需要在模拟现实环境下进行,以评估软件在不同条件下的可靠性。
然而,模拟复杂的现实环境是困难且耗费资源的,因此很多情况下无法完全模拟所有可能的环境,这将对测试结果的准确性和可靠性产生影响。
3. 数据挑战:对于某些系统,特定数据的输入可能会导致不同的软件行为。
通过使用大量和多样化的数据进行测试,可以更好地评估软件的可靠性。
然而,获取适当的测试数据并进行充分测试是具有挑战性的。
4. 时间和成本挑战:可靠性测试是一项耗费时间和人力成本的工作。
测试各种条件下的软件的可靠性需要更多的时间和成本。
然而,在开发周期紧张的情况下,时间和成本的压力可能会限制可靠性测试的深度和广度。
二、解决方案1. 制定完善的测试计划:合理的测试计划是进行可靠性测试的关键。
测试计划应考虑到软件系统的复杂性,并设计相应的测试用例和测试环境。
同时,测试计划应根据项目的时间和资源限制,合理安排测试的深度和广度。
2. 使用合适的测试工具和技术:为了解决复杂性挑战,可以使用自动化测试工具和技术来提高测试效率和准确性。
自动化测试可以模拟各种条件下的测试环境,减少人为错误,并提供全面的测试覆盖。
3. 采用多样化的测试数据:为了应对数据挑战,可以采用多样化的测试数据集合,包括正常情况下的输入数据和异常情况下的输入数据。
同时,可以通过生成测试数据来增加测试的广度和深度,以更好地评估软件的可靠性。
软件测试报告系统可靠性测试详细记录1. 引言软件测试报告系统是一种重要的工具,用于评估软件系统的可靠性和稳定性。
本文将详细记录软件测试报告系统进行可靠性测试的结果和过程,以提供客观准确的数据和信息。
2. 测试环境和配置为了保证可靠性测试的准确性,我们在以下环境和配置下进行了测试:- 操作系统:Windows 10- 浏览器:Google Chrome, Mozilla Firefox, Microsoft Edge- 测试工具:Selenium WebDriver, JUnit- 软件版本:软件测试报告系统 v1.03. 测试目标我们的测试目标是评估软件测试报告系统在各种条件下的可靠性。
具体目标包括:- 系统是否能够正常启动和关闭;- 系统是否能够正确加载和显示测试报告数据;- 系统是否能够准确计算测试指标和生成报告;- 系统在面对大量用户请求时是否能够保持稳定性。
4. 测试方法为了全面评估软件测试报告系统的可靠性,我们采用了以下测试方法:- 功能测试:测试系统的各个功能模块是否按照设计和预期进行工作;- 兼容性测试:测试系统在不同操作系统和浏览器下的兼容性;- 性能测试:测试系统在面对不同用户负载时的性能表现;- 压力测试:测试系统在极限负载情况下的稳定性。
5. 测试结果和分析5.1 功能测试我们对软件测试报告系统的各个功能模块进行了全面的测试,包括登录、报告生成、数据导入导出等功能。
在所有测试用例中,系统均能正常运行并按照预期生成正确的结果。
5.2 兼容性测试我们在不同的操作系统和浏览器下测试了软件测试报告系统的兼容性。
测试结果表明,在Windows 10操作系统下,系统在Google Chrome、Mozilla Firefox和Microsoft Edge等主流浏览器上均能正常运行和显示。
5.3 性能测试我们通过模拟不同用户负载对软件测试报告系统进行了性能测试。
测试结果显示,系统在处理正常用户负载时响应迅速,报告生成时间在可接受范围内。
软件系统可靠性测试方案模板
概述
该测试方案旨在确保软件系统在使用过程中具有稳定性和可靠性。
测试目标
1. 确保软件系统可以长时间稳定运行,不会出现崩溃、死机等
问题;
2. 确保软件系统在承受大量数据处理和用户并发操作时,不会
出现运行缓慢或失去响应的情况;
3. 确保软件系统在不断变化的操作环境下,仍然可以正常运行。
测试环境
1. 操作系统:Windows 10;
2. 浏览器:Google Chrome, Safari, Firefox;
3. 设备:台式机、笔记本电脑、平板电脑、手机等。
测试方法
1. 功能测试:对软件系统的各项功能进行全面测试,确保功能
的正确性;
2. 性能测试:对软件系统在处理大量数据和用户并发时的性能
进行测试,确保系统的运行速度和稳定性;
3. 兼容性测试:测试软件系统在不同操作系统、浏览器和设备
上的兼容性,确保系统的通用性;
4. 安全测试:对软件系统的各项安全功能进行测试,确保数据
安全和系统稳定;
5. 回归测试:在软件系统更新版本之后,测试系统各项功能是
否正常。
测试结果分析
测试结果将以测试报告的形式呈现,包括测试目标、测试环境、测试方法、测试结果等内容。
测试报告将由测试团队负责编写,并
提交给开发团队进行修改和优化。
测试计划
具体测试计划根据软件开发进度和测试人员安排而定,测试团队将按照计划进行测试,并提交测试报告和修改建议。
总结
该测试方案将确保软件系统的可靠性和稳定性,提高系统的品质和用户满意度。
测试团队将会认真执行测试计划,不断完善测试方案,为软件开发和运维保驾护航。
软件 摘要:阐述了软件测试,特别是软件可靠性测试的概念,论述了软件运行剖面和测试用例的生成方法。文中给出了一个已经开发成功的嵌入式软件仿真测试环境,包括该测试环境的体系结构与基本功能。
关键词:软件测试;软件可靠性测试;测试环境 近二、三十年来,随着计算机在军用与民用产品上的应用日益增多,软件缺陷所引发的产品故障,甚至灾难性事故也越来越严重。据美国国家宇航局NASA的统 计:在80年代初,软件引起的故障与硬件引起的故障,其比率约为1.1∶1.0,到了80年代末,这一比率已达到2.5∶1.0。在我国,这一比率至少已 达到3∶1。随着21世纪的来临,信息技术的迅猛发展,计算机已深入到军用、民用的各个领域,甚至居民的日常生活之中,因此,软件故障将日益成为高新技术产品发展的瓶颈。
为了提高软件的质量和可靠性,必须在软件开发的生命周期中,抓紧软件的设计、测试与管理这几个关键环节。鉴于篇幅所限,本文将只阐述软件测试,尤其是软件可靠性测试及其测试的环境。
1、软件可靠性测试的概念 软件测试的目的是为了发现软件中存在的缺陷并予以排除,以确保其功能能满足需求。
软件可靠性测试是为了达到或验证用户对软件的可靠性要求而对软件进行的测试;通过测试发现并纠正软件中的缺陷,提高其可靠性水平,并验证它是否达到了用 户的可靠性要求。软件可靠性测试能有效地暴露在实际使用过程中影响可靠性要求的软件缺陷,最先暴露的一般是高发生概率的缺陷,然后是较低发生概率的缺陷。
软件可靠性测试的一般流程如图1所示。 图1 软件可靠性测试流程图 软件可靠性测试中最关键的三个环节是: ① 根据用户实际使用软件的方式,构造软件运行剖面,生成测试用例; ② 开发软件可靠性测试的环境,使被测软件能在该环境中得以测试; ③ 对测试结果进行分析,并作出软件可靠性的预计。 本文将对前两个环节进行探讨。 2、软件运行剖面构造与测试用例生成方法 2.1 软件运行剖面的构造 软件可靠性测试的主要特点是按照用户实际使用软件的方式来测试软件。软件的运行剖面(operational profile)是定量描述用户实际使用软件方式的有力工具。构造软件的运行剖面是实现软件可靠性测试的关键步骤,也是软件可靠性测试最主要的特征。
在构造运行剖面的过程中,需要了解用户是如何使用该软件的。要充分了解用户使用软件的各种模式和各种功能,完成这些功能相应的输入变量。同时,还要了解 用户在使用软件时各系统模式和功能发生的概率。这些信息大都来自软件开发的文档、规格说明书和接口文件等资料。这需要用户与测试人员不断地交换信息。系统 模式及功能划分得越完整,概率越准确,构造出的运行剖面越能说明软件的实际使用情况。
构造软件的运行剖面的方法是按照一种层次结构,自顶向下地把用户使用软件的输入空间划分为系统模式剖面,把系统模式剖面划分为功能剖面,最后把功能剖面划分为运行剖面。 图2展示出系统模式剖面、功能剖面和运行剖面的层次关系。 图2 系统模式剖面、功能剖面和运行剖面的关系 测试用例是根据运行剖面随机生成的。在运行剖面中规定了每个输入变量的取值区间,并且认为变量在取值区间内均匀分布或分段均匀分布(由于很难确定变 量的具体分布,这里假设为均匀分布)。软件可靠性测试是一种随机测试,测试用例的选取方式是随机选取。因此,根据随机测试的原则,在运行剖面给定的输入变 量的取值区间内任意抽取一个变量的实际取值。将各个变量按顺序组合起来便生成了测试用例。用于软件可靠性测试的测试用例可以定义为:根据运行剖面生成的、 完成对某一功能进行测试的、按顺序输入到被测软件的一系列输入变量的有序组合。
根据运行剖面生成测试用例的过程为:运行剖面由一系列变量的取值区间和该运行发生的概率组成。
首先,要随机抽取一个运行来实现对某一功能的一次测试。抽取运行的过程如下:
① 将运行剖面{OPi|OPi=<Oi,Pi>,i=1,2,…,N}中所有运行发生的概率Pi求前j项和,形成一个数列{Sj},其中,j=1,2,…,N;N为软件运行剖面中运行总数,规定S0=0,并有S1=P1,Sn=1.0,Sj-Sj-1=Pj。这里运行相互独立。
② 任给一个随机数η∈(0,1.0),观察η落在哪个区间,若η满足Sj-1<η≤Sj,则该随机数η与Pj这个概率值对应,那么这次随机抽到的运行为Oj。
其次,要进行第二次抽样来确定运行中每个取值区间将取到的实体(即具体取值)。实体的确定将按照输入变量的属性分两种情况进行:
① 对于连续型输入变量,运行剖面给出的是该变量的取值区间的上下限[Rij.down,Rij.up]。抽样时将根据输入变量的数据类型,在区间[Rij.down,Rij.up]内任意抽取一个满足输入变量数据类型的具体值,作为该输入变量的实体。 ② 对于离散型输入变量,运行剖面给出的是一组离散点Rij,j=1,2,…,mi;mi为离散点的个数。抽样时将在[1,mi]内任意抽取一个整数j,以确定选哪一个离散点作为该输入变量的实体,并将该实体转化为该输入变量的数据类型。
通过对运行和各个实体两个步骤的抽样,完成了一个测试用例的生成。不断重复上述步骤,直到生成所需数量的测试用例为止。
对一个已通过验收鉴定并投入使用的软件,据其实际使用的情况生成了相应的运行剖面与测试用例,然后对该软件进行可靠性测试。用生成的400个测试用例,共测试出60个软件故障。对这些故障进行分析,剔除了相同故障后,剩下9个故障。测试结果可参见表1。
表1 软件可靠性测试记录测试用例号:1~400 测试用 例序号 测试日期 开始测 试时间 失效发 生时刻 测试运行 时间/s 累计运行 时间/s 失效 序号 失效现象 失效 等级
15 1996-11-09 15∶18∶13 15∶19∶12 59.8 897.8 1 解释图形少一个门, 用户程序出错 1*
27 1996-11-10 13∶02∶26 13∶04∶11 105.3 1711.1 2 拖动滚动条画图时死机 1 44 1996-11-10 15∶37∶58 15∶40∶38 160.3 2708.2 3 非最大化画图时死机 1 78 1996-11-11 14∶20∶10 14∶22∶14 124.0 4471.8 4 输入故障树信息存不住 1 108 1996-11-12 10∶50∶29 10∶51∶31 61.3 6444.8 5 诊断解释说明字符串无结尾 3 160 1996-11-13 10∶16∶15 10∶16∶47 32.3 9134.9 6 程序执行非法操作,未死机 3 236 1996-11-14 15∶23∶07 15∶24∶09 62.5 12951.9 7 开始画图时死机 1 324 1996-11-17 22∶02∶05 22∶03∶11 66.2 17820.9 8 画图位置偏,移滚动条死机 1 386 1996-11-18 14∶48∶02 14∶48∶57 54.3 21116.0 9 禁门条件错解释不画图 1 *注:失效等级是失效造成的危害程度的级别。一级是最为严重的后果。 3、软件可靠性仿真测试环境 一般的软件测试环境较为简单,本文将着重阐述嵌入式软件的可靠性仿真测试环境。所谓嵌入式软件是指嵌入式计算机系统用的软件,绝大多数军用和民用产品中使用的都是这类软件。
对于嵌入式软件,在系统集成完成到投入实际的使用两个阶段之间,缺乏一种有效的手段对其进行测试,特别是进行可靠性测试。在进行系统集成时进行 的测试由于无法加入其交联系统,从而许多诸如时序错误、接口错误很难暴露出来,而一旦系统投入到实际环境中进行测试,则引发两个问题:一是由于软件测试, 特别是可靠性测试需要施加大规模的测试用例进行长时间的测试,许多机械设备的寿命如陀螺仪等不允许进行如此长的试验;二是如果嵌入式软件一旦在实际环境下 出错,有可能会影响其他交联系统,甚至对其他系统及整个系统造成无法弥补的损失,有时也可能会危及人的安全。因此构建一种仿真测试环境就成为迫切的需要。
嵌入式软件仿真测试环境是一个自动的、实时的、非侵入性的(non-intrusively)的闭环测试环境。它能够逼真地模拟被测软件运行所 需的真实物理环境,并且能够组织被测软件的输入,来驱动被测软件运行,同时接收被测软件的输出结果,从而完成对嵌入式软件的测试。
3.1 测试环境的体系结构 测试环境的体系结构定义系统的组成和各个节点的定义以及它们的物理连接和数据通信协议。它同时决定了其功能是如何组织和整个测试环境的载荷是如何分布的。以下对最基本的结构进行说明。
仿真测试环境的基本结构如图3所示。 (1)主机(Host) Host通常是一台UNIX工作站或Windows NT PC机。它的主要任务是:用户命令接口;系统配置;测试用例及测试方案生成;测试脚本编写;测试过程监控;测试回放;测试结果分析和处理;可靠性评估;测 试文档辅助生成;数据库管理。有时,数据库采用专门的数据库服务器。
图3 仿真测试环境的基本结构 通常,Host在测试开始后,同激励/仿真(S&S)的通信仅限于用户的命令和一些监控信息。如果实时约束许可,并且在可以使用大缓冲 技术的条件下,或者采用诸如FastLink和ScramNet等网络延迟确定性较好的网络时,可以考虑在Host和S&S之间进行实时数据的传 输。
(2)激励/仿真(Stimulator/Simulator,S&S) S&S一般采用具备实时处理能力的工作站或微机,它们可以是运行实时操作系统的工作站和微机,也可以是本文后面提及的对普通操作系统进 行实时扩展的微机。S&S还包括一系列的I/O设备(如MIL-STD-1553、ARINC429、ARINC629、RS-232/422、 A/D、D/A等)和它们的驱动程序。
S&S的任务主要包括:解释测试脚本,对数据进行仿真处理;生成激励信号,驱动被测软件运行;接收测试数据,进行实时比较;实时显示。
(3)Host和S&S的通信 Host和S&S通信通常采用以下方式进行通信:TCP/IP;Shared Memory;FastLink;
ScramNet。 通常在使用TCP/IP的情况下,由于其固有的随机性,使得网络延迟确定性较差,因此在测试开始后,Host同激励/仿真(S&S)的 通信仅限于用户的命令和一些监控信息。如果实时约束许可,并且可以使用大缓冲技术的条件下,或者当采用诸如FastLink和ScramNet等网络延迟 确定性较好的网络时,可以考虑在Host和S&S之间进行实时数据的传输。
3.2 测试环境的基本功能 为了完成软件可靠性测试,一个完备的仿真测试环境应具备以下的基本功能:初始化;测试准备;测试;测试结果分析处理;测试文档管理;日常维护管理。