0


软硬件测试策略及方法

    在用于测试软件和硬件的技术之间,既存在相似,也存在差异。很显然,软件系统不会发生磨损,不会随着时间的推移而衰老、退化,当初软件中的任何缺陷依然存在,但不会产生新的缺陷,除非对软件系统进行了变更。而硬件却不是这样,如VLSI芯片,也许随着时间的推移,会因一个当初在芯片制造和测试时并不存在的缺陷而发生故障。

软件测试:
以软件内部结构和具体实现的角度划分:
白盒测试,黑盒测试,灰盒测试。
以执行程序的角度划分:
静态测试,动态测试。
以软件开发的过程按阶段划分:
单元测试,集成测试,确认测试,系统测试,验收测试。

    其他还有回归测试、冒烟测试、随机测试。

黑盒测试包括:功能测试和性能测试;
功能测试有:逻辑功能测试、界面测试、易用性测试、安装测试、兼容测试;
性能测试有:一般性能测试、稳定性测试、压力测试、负载测试

16种测试策略:

    功能测试、性能测试、压力测试、容量测试、安全性测试、GUI测试、可用性测试、安装测试、配置测试、 异常测试、备份测试、健壮性测试、文档测试、在线帮助测试、网络测试、稳定性测试(在:正常情况下测试;非正常情况下测试;边界测试;非法、极端测试);    

** 白盒测试 **英文是White Box Testing。又称结构测试或者逻辑驱动测试。

    白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软性验证。
白盒测试常用工具有: Jtest、 VcSmith, Jcontract, C++ Test, CodeWizard, logiscope

    **黑盒测试 **英文是Black Box Testing。

    又称功能测试或者数据驱动测试黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。黑盒测试常用工具有: AutoRunner,winrunner

    **单元测试** 英文是Unit Testing。

    单元测试是最微小规模的测试:以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有个设计很好的体系结构;还可能需要开发测试驱动器模块或测试套具。

    **集成测试** 英文是Integration Testing。

    集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。
     集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。
     集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别。

    **冒烟测试 **英文是Smoke testing。在测试中发现问题,然后修复这个问题,想知道此问题是否真的解决了。

    **系统测试** 英文是System Testing。

    系统测试是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。
     系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。

    **回归测试** 英文是Regression testing。

    回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但己经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。因此应当鼓励对所有回归测试用例进行自动化测试(指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误)

    **随机测试 **英文是Ad hoc testing。随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。

    **验收测试** 英文是Acceptance testing。

    验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。
     验收测试一般有三种策略:正式验收、非正式验收或Alpha测试、Beta测试

    Alpha 测试:在将最终产品发布给最终用户之前,执行以识别所有可能的问题和错误。Alpha 测试由作为组织内部员工的测试人员执行。主要目标是确定典型用户可能执行的任务并对其进行测试。 尽可能简单地说,这种测试被称为 alpha 只是因为它在软件开发的早期、接近尾声和 beta 测试之前完成。alpha 测试的主要焦点是使用黑盒和白盒技术模拟真实用户。

    Beta 测试:是由软件应用程序的“真实用户”在“真实环境”中进行的,它可以被认为是一种外部用户验收测试。这是将产品运送给客户之前的最终测试。来自客户的直接反馈是 Beta 测试的主要优势。此测试有助于在客户环境中测试产品。 该软件的 Beta 版发布给有限数量的产品最终用户,以获取对产品质量的反馈。Beta 测试降低了产品故障风险,并通过客户验证提高了产品质量。

    **基于设计的测试 **英文是design-based testing,是根据软件的构架或详细设计引出测试用例的一种方法。

    一种基于设计模型的测试方法(Model Based TestIng System,MATIS).该方法利用用户界面自动生成方法,把设计模型中的类属性定义和实现中的控件属性组织在一起,构建描述界面的逻辑对照表,辅助测试脚本引擎执行自动测试脚本.借助设计模型中扩展的类定义,MATIS方法可以自动生成测试用例和测试数据

    **文档测试**英文是documentation testing,测试关注于文档的正确性

文档测试有三大类分别是开发文件、用户文件、管理文件。
1)开发文件:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。
2)用户文件:用户手册、操作手册。
3)管理文件:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。软件测试中的文档测试主要是对相关的设计报告和用户使用说明进行测试,对于设计报告主要是测试程序与设计报告中的设计思想是否一致;对于用户使用说明进行测试时,主要是测试用户使用说明书中对程序操作方法的描述是否正确,重点是用户使用说明中提到的操作例子要进行测试,保证采用的例子能够在程序中正确完成操作。
一般来说,文档是软件的重要组成部分,因此文档测试也是软件测试的主要内容。在软件的整个生命周期中会出现很多文档,通常可以把文档粗略地分为三类:开发文档,管理文档和用户文档。
由于文档与代码不同,不能直接运行,对于文档的测试通常只能以文档审查的方式进行。对于管理文档和审查通常归属于管理范畴,而不是软件测试范畴,因为对于管理文档审查的目的不是为了发现和消除用户所看到的软件中的缺陷,而是为了更好地管理软件开发的过程。对于开发文档,由于这些文档本身体现了所在开发阶段的软件实际形态,对于这些文档的测试实际上是早期软件测试的主要活动。用户文档是那些随程序一起交付给用户的文档,它们实际上是交付给用户的软件的重要组成部分。对于这些文档的测试是对最终软件产品测试的一部分

    **域测试** 英文是domain testing,定义参考等价划分测试(equivalence partition testing);

    一般分为单域测试和多域测试,其中单域测试包括设备测试和业务测试,设备测试包括测试某个系统的软交换设备、中继媒体网关设备、信令网关设备、接入媒体网关和IAD等设备。等价类划分有两种不同的情况:有效等价类和无效等价类。设计时要同时考虑这两种等价类,因为软件不仅要能接收合理的数据,也要能经受意外的考验。
     有效等价类:是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能;
     无效等价类:与有效等价类的定义恰巧相反 。

    **接口测试** 英文是interface testing,接口测试测试系统组件间接口的一种测试。

接口测试的好处:

    由于接口测试代码本身就是用junit(当然接口的类型不同,不一定是Junit来实现)来实现的,是属于自动化测试的范畴,因此必定也包含自动化测试所固有的优势。
     1)提高测试质量
     软件开发的过程是一个持续集成和改进的过程,而每一次的改进都可能引进新bug,因此当软件的一部,或者全部修改时,都需要对软件产品重新进行测试。其目的是要验证修改后的产品是符合需求的,而当没有自动化测试代码时,往往会由于各种各样的原因,回归不充分,导致bug遗漏。
     2)提高测试效率
     软件系统的规模越来越大,功能点越来越多,开发人员的自测或者测试人员的人工测试非常耗时和繁琐,势必导致测试效率的低下,而自动化测试正好解决这些耗时繁琐的任务,在对外接口功能不变的情况下,达到了一次编写,永久使用的效果。
     3)提高测试覆盖
     通过手工测试很难测试到一些更深层次的异常和安全的问题,通过一些辅助的一些测试工具,能分析出代码的覆盖率,通过覆盖率的提高来提高测试的深度
     4)更好地重现软件缺陷

由于每次执行都是相同的代码,一旦代码出错,必定回归出错
5)更好定位错误
由于接口测试是一种自下向上的测试,因此一量出错,非常容易定位出错,不向系统测试那样了,一旦有Bug,需要几层验证之后才能确定出错位置
6)降低修改bug的成本
接口测试基本和开发人员的编码平行工作,因此发现问题会比系统测试早很多,因此减少了修改bug的成本。
7)增进测试人员和开发人员之间的合作关系
测试工程师为了更好地开展工作,需要对开发技术有深入的理解和实践,有了与开发工程师更多的交流。
8)降低了项目不能按时发布的风险
由于接口测试很早就介入,在提交给系统测试前对项目代码的核心模块已经做了详尽的测试,必定加速系统测试的时间,由此来保证项目的按时发布
9)提升测试人员的技能
做接口测试必须了解开发人员的开发流程和一些开发技能,也需要了解测试工具的一些使用方法和一些测试思想,提升了测试人员的技术附加值,提高了自身的竞争力。
10)促使项目开发过程的规范化
要进行接口,需要完善的文档进行保障,没有测试文档,接口测试将寸步难行,接口测试将增加开发过程规范化产出,而规范化产出也保证了项目质量。

** 可移植性测试**英文是Portability testing。又称兼容性测试。可移植性测试是指测试软件是否可以被成功移植到指定的硬件或软件平台上

    **用户界面测试 **英文是User interface testing。又称UI测试。用户界面测试是指测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等。UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。用户界面测试用户分析软件用户界面的设计是否合乎用户期望或要求。

    **安装测试 **英文是Installing testing。安装测试是确保软件在正常情况和异常情况下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。核实软件在安装后可立即正常运行        

    **自动化测试 **英文是Automated Testing。

    使用自动化测试工具来进行测试,这类测试般不需要人干预,通常在GUI、性能等测试和功能测试中用得较多。通过录制测试脚本,然后执行这个测试脚本来实现测试过程的自动化。国内领先的自动化测试服务提供商是泽众软件。自动化测试工具有QTP, Testcomplete, AutoRunner和TAR等

    **端到端测试** 英文是End to End Testing.

    端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试及性能测试。端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的优点的测试方法。

    **卸载测试** 英文是Uninstall Testing。

    卸载测试是对软件的全部、部分或升级卸载处理过程的测试。主要是测试软件能否卸载,卸载是否干净,对系统有无更改,在系统中的残留与后来的生成文件如何处理等。还有原来更改的系统值是否修改回去

    **接受测试** 英文是Accept Testing。

    接受测试是基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。一般从功能、用户界面、性能、业务关联性进行测试。

    **性能测试** 英文是Performance Testing。

    性能测试是在交替进行负荷和强迫测试时常用的术语。理想的“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。性能测试一般包括负载测试和压力测试。通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会出现内存泄露(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢,

    1)健全测试 英文是Sanity testing。
     健全测试是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试能力。例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,不具备进一步测试的条件。
     2)衰竭测试 英文是Failure Testing。
     衰竭测试是指软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。
     3)负载测试 英文是Load testing。
     负载测试是测试一个应用在重负荷下的表现。例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。(是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。)

    负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

    4)强迫测试 英文是Force Testing。
     强迫测试是在交替进行负荷和性能测试时常用的术语。也用于描述对象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。
     5)压力测试 英文是Stress Testing。和负载测试差不多。
     压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。(是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。)
     6)恢复测试 英文是Recovery testing。
     恢复测试是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。恢复测试指通过人为的让软件(或者硬件)出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。
     恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动(restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。

    **安全测试**英文是Security Testing。

    安全测试是测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如:
     ①想方设法截取或破译口令;
     ②专门定做软件破坏系统的保护机制;
     ③故意导致系统失败,企图趁恢复之机非法进入;
     ④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图

    **兼容测试** 英文是Compatibility Testing。

    兼容测试是测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。向上兼容向下兼容,软件兼容硬件兼容。软件的兼容性有很多需要考虑的地方

    **可用性测试** 英文是Practical Usability Testing.

    可用性测试是对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查、用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。

    **比较测试** 英文是Compare Testing。

    比较测试是指与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。

来取长补短,以增强产品的竞争力。

    **可接受性测试** 英文是Acceptability Testing。

    可接受性测试是在把测试的版本交付测试部门大范围测试以前进行的对最

基本功能的简单测试。因为在把测试的版本交付测试部门大范围测试以前应该先验证该版本对于所测试的功能基本上比较稳定。必须满足一些最低要求。比如不会很容易程序就挂起或崩溃。如果一个新版本没通过可测试性的验证,就应该阻拦测试部门花时间在该测试版本上测试。同时还要找到造成该版本不稳定的主要缺陷并督促尽快加以修正

    **边界条件测试** 英文是Boudary Testing。又称边界值测试。

    一种黑盒测试方法,适度等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。因此针对各种边界情况设计测试用例,可以查出更多的错误

边界条件测试是环绕边界值的测试。通常意味着测试软件各功能是否能正确处理最大值,最小值或者所设计软件能够处理的最长的字符串等等。

    **等价划分测试 **英文是equivalence partition testing。

    等价划分测试是根据等价类设计测试用例的一种技术。是黑盒测试的典型方法之一,通过把被测试程序所有可能的输入数据域划分成若干部分。从每一部分中选取少数有代表性的数据作为测试用例,可有效减少测试次数,极大提高软件测试效率,缩短软件开发周期,等价类划分测试的目的就是为了在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果。有效等价类和无效等价类。有效等价类中的数据代表的是一组符合需求文档的正确的有意义数据。无效等价类则正相反。

    **强力测试** 英文是Mightiness Testing。

强力测试通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。比如,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机

    **装配/安装/配置测试 **是验证软件程序在不同厂家的硬件上,所支持的不

同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。比如,把英文版的Microsoft Office 2003安装在韩文版的Windows Me上,再验证所有功能都正常运行。

    **隐藏数据测试 **在软件验收和确认阶段是十分必要和重要的一部分。程序的质量不仅仅通过用户界面的可视化数据来验证,而且必须包括遍历系统的所有数据。

    假设一个应用程序要求用户两条信息-----用户名和密码来创建帐户。这个用户输入这两条数据后保存。最后,一个确认窗口将通过数据库中找到这条数据来显示用户名和密码给用户,为了验证所有的数据保存是否正确,一个QA测试人员会在这个确认窗口简单的查看下用户名和密码。如果他们成功了?假设数据库记录了第三条信息-创建日期,它可能不会出现在确认窗口,而只在存档中才出现。如果创建日期保留的不正确,而QA测试人员只验证屏幕上的数据,那么这个问题就不可能被发现。创建日期可能就是一个bug,由于一个用户帐户保存了一个错误的日期到数据库中,这个问题也不可能会被引起注意,因为它被用户界面所隐藏。这只是一个简单的例子,但是它却演化出了一点:隐藏数据测试的重要性。

    **判定表 **英文是decision table,是指一个表格,用于显示条件和条件导致动作的集合。

    定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
     判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
     在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题

    **深度测试** 英文Depth test,是指执行一个产品的一个特性的所有细节,但不测试所有特性。
     当比较函数返回真的时候才显示出效果来。必须启用“#深度测试”,才能执行测试。不使用的时候需要关闭。

    **逆向测试/反向测试/负面测试** 英文是Negative Testing,测试描准于使系统不能工作。负面测试与正面测试的比较:

    负面测试(Negative testing)是相对于正面测试(Positive testing)而言的。它们也是测试设计时的两个非常重要的划分。简单点说,正面测试就是测试系统是否完成了它应该完成的工作;而负面测试就是测试系统是否不执行它不应该完成的操作。形象一点,正面测试就象个毕恭毕敬的小学生,老师叫我做什么,我就做什么;而负面测试就象一个调皮捣蛋的孩子,你叫我这样做,我偏不这样做,而且和你对着干。开发人员也是最讨厌修改此类bug的。

    **非功能性需求测试** 英文是non-functional requirements testing ,是与功能不相关的需求测试,如:性能测试、可用性测试等。

为什么非功能性需求很重要?
在您设计解决方案的过程中满足功能性需求当然是很重要的。但是,如果没有考虑非功能性需求,您的解决方案则很难取得实效
非功能性需求特点: 1.不要脱离实际环境; 2.可靠性; 3.可用性; 4.有效性; 5.可维护性; 6.可移植性。

原创:Douze.的博客_CSDN博客-领域博主 欢迎分享,转载请保留出处。

参考文献:软件与硬件测试 - 百度文库


本文转载自: https://blog.csdn.net/xiaozhao5212/article/details/124978932
版权归原作者 Douze. 所有, 如有侵权,请联系我们删除。

“软硬件测试策略及方法”的评论:

还没有评论