一、测试概述进行软件测试二、测试分类1、按测试方法分类1.1黑盒测试把被测软件看成一个黑盒。我们不关心盒子里面的结构,只关心软件的输入数据和输出。结果。它只是检查程序的功能是否按照需求说明书的规定正常使用,程序是否能正确接收输入数据并产生正确的输出信息。黑盒测试侧重于程序的外部结构,而不考虑内部逻辑结构,主要测试软件界面和软件功能。利用黑盒技术设计测试用例的方法包括等价类划分、边界值分析、错误推测、因果图、综合策略1.2白盒测试,打开盒盖,研究里面的源代码和程序结果。是按照程序内部结构测试程序,通过测试检查产品内部动作是否按照设计规范的规定正常进行,测试程序中各通道是否能正常工作根据预定要求。1.3灰盒测试介于黑盒和白盒测试之间。可以这样理解,灰盒测试关注的是输入到输出的正确性,同时也关注内部性能。但是,这个重点不如白盒测试那么详细和完整。一些具有代表性的现象、事件和标志用于判断内部运行状态。有时输出是正确的,但内部实际上是错误的。这样的例子很多。如果每次都通过白盒测试进行操作,效率会很低,所以需要采用这样的灰盒方式。2.根据测试过程/开发阶段,单元测试用于测试软件的基本组件。测试的目的是验证软件基本组件的正确性。接口是否正确系统测试对集成软件系统进行全面测试的目的是验证软件系统的正确性和性能是否满足规范规定的要求。验收测试部署软件前的最后一个测试操作是确保软件准备就绪。向软件购买者证明软件系统满足其用户的要求2.1单元测试阶段模块接口测试通过被测模块的数据流进行测试。调用被测模块时的输入参数是否与模块形参的个数、属性、顺序相匹配。本地数据结构测试是为了保证程序执行时模块中暂存的数据是完整和正确的,而模块的本地数据结构往往是出错的根源。路径测试是指测试模块中重要的执行路径。错误处理测试一个比较完整的模块设计要求能够预见错误情况,并设置适当的错误处理,以便一旦程序失败,可以重新安排错误程序,保证其逻辑正确性。边界条件测试大量错误发生在输入或输出边界。因此,针对各种边缘情况设计测试用例可以检测到更多错误。2.2集成测试阶段在集成测试中,我们主要关注以下内容:连接各个模块,经过模块接口的数据是否会丢失。各个子模块的组合是否能达到预期的功能。一个模块的功能是否会对另一个模块的功能产生不利影响。是不是全局数据结构有问题。单个模块的累积误差是否会被放大到不可接受的程度。2.3系统测试阶段一般系统的主要测试工作都集中在系统测试阶段。根据不同的系统进行的测试也有很多种,比如功能测试,就是验证产品的功能,检查是否满足要求。性能测试是通过自动化测试工具模拟各种正常、峰值和异常的负载情况来测试系统的性能。安全测试,检查系统防止非法入侵的能力。兼容性测试主要是测试系统在不同的软硬件环境下能否正常运行。2.4验收测试阶段功能确认测试安全可靠性测试兼容性测试可用性测试可扩展性测试资源占用率测试用户文档验收3.按测试重点划分3.1功能测试功能测试检查实际功能是否满足用户需求需要。功能测试可以细分为多种类型:逻辑功能测试、接口测试、可用性测试、安装测试、兼容性测试等。没有严重的错误。可用性测试从合理性和使用方便性的角度对软件系统进行检查,发现使用中的人为因素或问题。安装测试安装测试的目的不是发现软件错误,而是发现安装错误。兼容性测试这类测试主要是想验证软件产品在不同版本之间的兼容性。兼容性测试有两种基本类型:向后兼容性,测试新版本的软件是否保留其早期版本的功能;交叉兼容性,验证两个相关但不同产品的共存;包括电源故障、硬件或网络错误等),系统是否能正常工作而不对系统造成任何损坏。为此,可以采用各种人工干预手段来模拟硬件故障,从而检查:错误检测功能(系统是否可以检测到硬件故障或故障)是否可以切换或启动备份硬件,是否可以保护现有硬件当发生故障时,正在运行的作业和系统状态是否可以在系统恢复后从上次记录的无错误状态继续执行作业等。如果系统自动恢复(由系统本身执行),重新初始化,数据恢复、重启等应一一进行正确性评估。如果恢复需要人工干预,需要评估平均恢复时间,判断是否在允许范围内。文档测试检查用户文档(例如用户手册)的清晰度和准确性。确保叙述正确。可支持性测试验证系统的支持策略对公司和用户是可行的。它通过试点支持流程(例如,修补有问题的部件等)、对结果进行质量分析、审查诊断工具、维护或内部维护文档来实现;平均最短时间。另一种常见的方法是在发布前将产品交给用户,为用户提供支持服务的计划,并获得用户对支持服务的反馈。互连测试验证两个或多个不同系统之间的互连性。此类测试适用于支持标准规范或承诺支持其他系统互连的软件系统。3.2性能测试性能测试是通过自动化测试工具,模拟各种正常、峰值和异常负载情况,对系统的各项性能指标进行测试。软件的性能包括很多方面,主要包括时间性能和空间性能。时间性能主要是指软件的特定响应时间。例如登录所需时间、交易所需时间等。空间性能主要是指软件运行时消耗的系统资源。如硬件资源、CPU、内存、网络带宽消耗等。性能测试方法是通过模拟生产运行的业务压力,结合使用场景,测试系统性能是否满足生产性能要求。通俗地说,这种方法就是验证系统在特定运行条件下的能力状态。性能测试的特点如下:主要目的是验证系统是否具备系统所宣称的能力。需要提前了解被测系统的经典场景,有明确的性能目标,跑在一定的环境中。也就是说,这种方法是建立在对系统性能有了解和需求目标明确的前提下,在一个已经确定的环境中进行的。负载测试是通过对被测系统不断施加压力,直到性能指标达到极限来进行的。方法是不断给一个系统加压,看你什么时候超过了“我的要求”或者系统崩溃了。主要目的是找出系统处理能力的极限。需要在特定的测试环境下进行,通常需要考虑北侧系统的业务压力和典型场景,让测试结果具有业务意义。一般用于了解系统的性能容量,或配合性能调优使用。压力测试测试系统在某种饱和状态下(例如CPU和内存饱和时)能够处理的会话能力,以及系统是否会出错。也就是说,这种测试就是让系统承受很大的压力,看系统是否稳定,哪里会出现问题。主要目的是检查系统在压力下应该如何表现。一般通过模拟负载等方法,使系统的资源使用达到较高的水平。一般用来测试系统的稳定性。配置测试配置测试方法通过调整被测系统的软硬件环境,了解各种配置对系统性能的影响程度,从而找到各种系统资源的优化分配原则。这种测试的重点是“微调”,通过对软件和硬件的不断调整,找出它们的最佳状态,使系统达到最强状态。主要目的是了解各种因素对系统性能的影响程度,从而确定最值得进行的调优操作。一般是在初步了解系统性能状态后进行。一般用于性能调优和规划能力。可靠性测试在系统承受一定业务压力的情况下,让系统运行一段时间,检查是否稳定。这种测试的重点是“稳定”,不需要给系统太大的压力,只要系统能长期处于稳定状态即可。主要目的是验证是否支持长期稳定运行。需要在压力下连续运行一段时间(2~3天)。在测试过程中,需要关注系统的运行状态。测试容量是通过测试预先分析出反映软件系统应用特性(如最大并发用户数、数据库记录数等)的指标的限值。系统在其极限值状态下无任何软件故障或保持其主要功能。普通手术。并发测试通过模拟用户并发访问,测试多个用户并发访问同一个应用程序、模块或数据记录时是否会出现死锁或其他性能问题。这种类型的测试侧重于多个用户同时(同时)强调一个模块或操作。主要目的是发现系统中可能隐藏的并发访问问题。关注系统可能出现的并发问题,如内存泄漏、线程死锁、资源争用等。可以在开发的各个阶段使用,需要相关测试工具的配合和支持。4、根据测试是否使用自动化工具来划分4.1手工测试手工测试是将测试用例一个一个地执行,通过键盘、鼠标等输入一些参数,检查返回的结果是否符合预期的结果。4.2自动化测试自动化测试是将人为驱动的测试行为转化为机器执行的过程。通常,测试用例设计好并通过评审后,测试人员按照测试用例中描述的程序一步步执行测试,并将实际结果与预期结果进行比较。在这个过程中,为了节省人力、时间或硬件资源,提高测试效率,引入了自动化测试的概念。自动化测试:可分为功能自动化测试和性能自动化测试。我们一般所说的自动化测试,是指功能性的自动化测试。通过相关的测试技术,将一个程序通过编码来测试一个软件的功能,使该程序可以反复执行,进行反复测试。如果一个软件的一小部分发生变化,我们只需要修改一部分代码就可以对整个软件进行反复的功能测试。这大大提高了测试效率。性能自动化测试,除了前期,目前的性能测试工作都是通过性能测试工具的辅助来完成的。性能工具可以模拟数千个用户向系统发送请求,验证系统的处理能力。5.其他测试方法5.1冒烟测试是指在系统地对新版本进行大规模测试之前,先验证软件的基本功能是否实现,是否可测试。引入软件测试,意味着测试团队在正式测试新版本之前,投入较少的人力和时间来验证软件的主要功能。如果主要功能没有实现,会召回开发组重新开发。这样做的好处是可以节省大量的时间和人力成本。5.2回归测试是指修改旧代码后重新执行测试,确认修改后没有引入新的错误或导致其他代码产生错误。回归测试一般从第二轮软件测试开始,验证第一轮发现的问题是否已经修复。当然,回归也是一个循环的过程。如果回归问题失败,开发者需要对其进行修改,重新进行回归,直到通过。5.3随机测试是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,发现一些边际误差。随机测试可以发现一些隐藏的bug,但它也有很多缺点。比如测试不系统,代码覆盖率和需求覆盖率无法统计,发现的问题难以复现等。它通常在测试结束时执行。其实,更专业的随机测试升级版,叫做探索性测试。探索性测试是一种测试思维的技术。它没有太多实际的测试方法、技术和工具,但却是所有测试人员都应该掌握的一种测试思维方式??。探索强调测试人员的主观能动性,摒弃复杂的测试计划和测试用例设计过程,强调遇到问题及时改变测试策略。5.4安全测试安全测试是在IT软件产品的生命周期中,特别是从产品开发基本完成到发布阶段,对产品进行检查的过程,以验证产品是否满足定义的安全要求和产品质量标准。安全测试也越来越受到企业的重视和关注,因为安全问题造成的后果是不可估量的。尤其是互联网产品,最容易受到各种安全攻击。5.5场景测试用户需求的测试称为场景测试。场景测试首先在系统测试阶段通过测试,然后在用户确认阶段,用户进行场景测试进行产品验收。做场景测试,其实需要从需求入手。按需与用户沟通,确认用户的实际场景,然后分析这些场景,并据此设计产品方案,获取用户使用产品的应用场景,并安排优先级;然后根据场景的优先级开发产品;最后根据场景的优先级进行测试,并结合软件的实际情况,给出了扩展场景,并给出了使用说明,推荐给用户。5.6可访问性测试软件可访问性测试是指测试软件是否为残疾用户提供足够的可访问性。5.7本地化/全球化测试确保应用程序的全球准备就绪需要三个阶段的测试:全球化测试、本地化测试和本地化测试。全球化测试确保应用程序在任何文化或语言环境中都能正常运行可本地化测试验证程序的用户界面可以轻松翻译成任何目标语言本地化测试检查特定目标文化或语言环境的产品本地化三、中英文比较table中英文单元测试UnitTestIntegrationTestIntergrationTestSystemTestSystemTestAcceptanceTestAcceptanceTestFunctionTestFunctionTestUsabilityTestUsabilityTestInstallationTestInstallationTestCompatibilityTestRecoveryTestRecoveryTestDocumentationTestDocumentationTestSupportabilityTestSupportabilityTestInteroperabilityTest互操作性测试负载测试负载测试压力测试压力测试配置测试配置测试可靠性测试可靠性测试容量测试容量测试并发测试并发测试冒烟测试冒烟测试回归测试随机测试Ad-hoc测试安全测试安全测试场景测试场景测试可访问性测试可访问性测试本地化/GlobalizationTestLocalization/GlobalizationTest4.参考链接软件测试常用术语汇总测试准入标准
