《Qt:2023软件测试初学者指南(15页).pdf》由会员分享,可在线阅读,更多相关《Qt:2023软件测试初学者指南(15页).pdf(15页珍藏版)》请在三个皮匠报告上搜索。
1、白皮书软件测试初学者指南自动化.提升.部署质量.全面了解相关信息,帮助您在手动测试、自动化测试和软件质量管理方面做出明智的选择。Qt Group软件测试初学者指南2软件质量管理(SQM)导论软件质量管理(SQM)指的是对软件整个生命周期的管理过程。SQM 是一个多方面的过程,从产品概念开始,经过构想、测试到公开发布。软件质量管理(SQM)主要组成部分为质量计划、质量保证(QA)、质量控制(QC)和软件测试。质量计划软件质量管理始于计划阶段,测试人员为软件创建目标和目的,并创建帮助实现这些目标的战略计划。质量计划是 SQM 的支柱,因为它建立了执行整个过程所需的要素。质量保证(QA)质量保证(Q
2、A)是软件质量管理(SQM)的一部分,它确保软件产品是根据已批准的设计规范构建的。测试人员遵循开发过程,检查是否符合标准,并确保产品设计的所有方面都能正确运行。质量控制(QC)质量控制是测试的一个阶段,在这个阶段识别缺陷,评估功能,并执行其他任务以消除缺陷并做出最终的微调。国际软件测试资质认证委员会(ISTQB)将质量控制定义为“旨在评估组件或系统质量的活动”。质量保证是一项创建和维护导致最终结果的过程,质量控制则是检查最终结果-它着眼于最终产品的质量。质量保证(QA)和质量控制(QC)这两个概念在不同情况下经常会互相使用,尽管不完全正确:因为 QA 是以过程为导向,专注于防止缺陷,而 QC
3、是以产品为导向,专注于通过测试识别缺陷。软件测试用户之前通过测试和验证以保证软件产品质量的过程。它有助于确保最终产品在满足设计、功能和规格的基础上达到最佳质量,并符合规定的标准(如 ISO 9000、CMMI、TMMI 等)。软件测试还可以帮助公司在发布前发现缺陷,从而避免犯下代价高昂的错误。这些措施都有助于为消费者提供最佳体验。在本指南中,我们将主要关注 SQM 的最后一个方面测试。1.Qt Group软件测试初学者指南3哪些类型的测试是可执行的?质量保证认证质量保证的职能软件测试可以是手动或是自动的,这取决于产品本身。顾名思义,手动测试需要人机交互和测试,而无需自动化工具。QA 测试人员遵
4、循测试计划,模拟真实用户与应用程序交互,以分析程序的功能和体验。另一方面,自动化软件测试使用自动化工具来执行测试用例。因此,它更适合于大规模的测试,有助于加快重复的测试任务。发布产品的组织可以通过取得以下几类行业认证来证明产品满足行业标准并保持质量实践。客户也可将这些认证作为评估软件供应商的一种方式。在下一节中,我们将详细讨论手动测试,以及如何将它用于特定的用例,包括介绍如何使用 Test Center 进行手动测试。ISO 9000:为企业建立和维持有效的质量保证(QA)体系的国际标准。要获得 ISO 9000 认证,组织必须对其职能、产品、服务和流程进行审核。能力成熟度模型集成(CMMI)
5、级别:用于分析一个组织流程的成熟度,并为流程改进提供建议。测试成熟度模型集成:一个五级模型,它提供了一个框架,帮助公司评估其测试过程的成熟度并对其进行优化。验证:确定产品是否满足用户的特定需求,同时有助于检查程序是否按预期工作。文档:跟踪与开发和测试过程相关的活动。保证产品质量:确保产品在功能、性能、安全性和耐久性方面满足客户的期望。质量改进计划:有效地监测和控制整个软件开发生命周期(SDLC)的质量。Qt Group软件测试初学者指南4软件开发中手动测试的作用公司进行手动软件测试以确保他们新应用程序或产品在向公众发布之前没有错误和缺陷。这包括了让质量保证(QA)团队像用户一样与程序交互,根据
6、预先定义的预期行为审查软件的行为,并报告可能发现的任何问题。点击按钮或链接查看它们是否正常工作。检查用户能否在文本栏输入数据。查看搜索栏、下拉菜单和导航是否工作正常。举例:如果一家公司正在准备发布一款应用,那么 QA 团队就必须:手动测试过程中使用的测试类型黑盒测试这种方法也被称为“行为测试”,有助于从目标用户的角度来看待应用程序。黑盒测试屏蔽了 QA 团队对程序内部代码的了解。通过模拟真实用户的行为,可以切实地测试应用程序的功能和非功能行为,同时有助于发现任何被忽视的bug。单元测试单元测试也称为模块测试或组件测试,它对应用程序源代码的每个单元或组件进行测试,以确保每个功能按预期运行。因为单
7、元测试需要对程序架构和代码具备全面的理解,所以通常由开发者而不是测试工程师执行这种类型的测试。单元测试除了使错误检测和预防更直接外,它还能减少调试。白盒测试白盒测试,也称为透明盒测试或结构测试,测试人员能够访问并知晓被测试软件的底层结构和逻辑。测试人员选择输入,使用代码进行测试,并确定输出。它的目标是使应用程序更加安全,同时增强其美观性和可用性。注意:您可能会遇到“灰盒测试”这个术语,它指的是黑盒测试和白盒测试的组合。2.Qt Group软件测试初学者指南5集成测试集成测试对集成了多个组件的程序进行评估。它通常在单元测试之后执行,目的是发现各接口和它们之间交互的问题。系统测试系统测试有时称为端
8、到端测试,是在单元测试和集成每个组件之后进行的,用来测试整个系统。系统测试通过将最终应用程序与初始需求进行对比来验证最终应用程序。验收测试验收测试是指实际的最终用户验证应用程序是否满足他们的需求和商定的要求,通常在项目的最后阶段进行。检查项目需求,以检查客户的期望,需要做什么,并理解软件的预期行为应该是什么 制定测试计划 创建满足需求且涵盖各种场景的测试用例 与 QA 负责人一起评估测试用例,有时也与客户一起评估 执行测试用例以检测可能存在的问题 报告并修复任何发现的问题 问题一旦修复,需再次运行失败的测试以验证修复的结果循序渐进:如何做手动测试Qt Group软件测试初学者指南62.1.使用
9、 Test Center 进行手动测试Test Center 是一个用于管理测试结果,并将测试集成在整个开发周期中的紧凑型平台。Test Center 提供了一个测试结果仪表板,作为存储、跟踪和评估在项目开发的每个阶段收集到的测试结果的综合管理中心。其内置的统计报告功能能够帮助测试人员轻松评估开发项目随着时间推移的进展和整体健康状况。测试管理页面提供了生成手动测试所需的所有必要信息,使创建和维护测试变得轻而易举。文本编辑功能支持 Markdown 语法,节省时间同时也省去了繁琐的文本编辑。此外,编辑器也支持添加附件和在线图片,使测试人员能够在执行手动测试时轻松地访问所有相关数据和文档。另一个有
10、用的工具是步骤共享(Shared Step),您可以利用它复用已有的步骤。这对于需要不同设置步骤的手动测试尤其有帮助。Qt Group软件测试初学者指南7管理测试周期在Test Center中,手动测试周期是分批进行的。这将手工和自动测试连接起来。当一批手工测试完成后,相应的结果将自动 反映在相关的结果视图中。手动测试执行手动测试的执行和创建一样简单。您可以使用创建测试时用到的相同的文本编辑工具来运行它们。测试人员如果发现了任何错误,可以很轻松地将错误描述、屏幕截图或其他附件添加到对应的手工测试结果中。这样一来,测试人员可以轻松地提交相关支持信息来记录测试失败。问题跟踪和溯源Test Cent
11、er 2.0 通过支持各类自定义 Jira 字段,提升了与 Jira 的集成能力,特别是问题创建。此外,今年早些时候发布的 Test Center 3.0 提供了对 Coco 覆盖率报告的支持,使用户可以直接从 Test Center 中浏览和分析他们的代码覆盖率报告。同时,它还具有 Test Center 早期版本的增强功能。当测试人员发现缺陷后,他们可以在 Test Center 中进行手动测试的同时在 Jira上快速创建问题。所有系统用户都可以访问在手动测试期间创建的Bug。特别是,共享步骤确保在早期运行的测试中发现的错误也可以被其他测试人员访问。执行概览页面汇总展示所有手动测试的状态,
12、以及它们在周期中的进度。根据可用的测试人员,手工测试可以在这里进行分配或重新分配。同样,测试人员可以利用此视图查看所有分配的手动测试的执行情况,并启动手动测试流程。执行概览还允许查看已完成的测试周期,并在需要再次运行时轻松地重新安排。Qt Group软件测试初学者指南8从其他手动测试工具迁移由于测试中心专用的基于 API 的导入机制,只需要少量的配置,那些已经在Zephyr 或 Xray 中处理手动测试的用户可以很轻松地切换到 Test Center 的手动测试。并且支持导入 Gherkin 特性文件,为使用 Gherkin 记录手动测试的用户向自动化测试迁移提供了便利。接下来,我们将深入探讨
13、自动化测试,使用自动化测试的四个理由,以及如何使用 Squish 进行自动化测试。软件开发中自动化测试的优势自动化测试是使用脚本序列来执行测试用例套件的过程。QA 测试人员使用的语言有 Python、JavaScript 和 Ruby。该脚本用来测试错误、缺陷和产品开发过程中出现的任何错误。在完成测试后,它会生成一份报告,概述其发现,然后可以与以前的测试结果进行比较。自动化测试的主要优点是将手动操作简化为一组脚本,可以在一天中的任何时间重复执行。1.成本效益:自动化测试取代了许多费时且高成本的手动测试,降低了测试的总体成本。2.速度:自动化测试能够比手动测试运行得更快,因为它们不需要任何人工交
14、互或输入。因此,自动化测试可以更快地产生结果。3.更低的风险:手动测试人员在运行他们的测试用例时经常会犯错误,使用自动化工具可以在一定程度上避免这种情况。4.提升产品质量:软件中的 Bug 越少,就意味着客户能够拥有更好的用户体验,这将为使用您的软件的企业增加销售额。使用自动化测试的原因3.Qt Group软件测试初学者指南9哪些类型的测试应该自动化?为了最大限度地提高测试自动化的投资回报率(ROI),您必须选择最合适的测试进行自动化。注意事项如下:容易受到人为错误影响的测试 重复和单调的测试 需要使用大量数据集的大范围测试 无法手动执行的测试(例如,具有大量数据集的测试)耗时的测试 必须持续
15、完成的关键业务或高风险测试 必须在多个硬件或软件平台上执行的测试自动化测试的类型代码分析代码分析是检查源代码错误和漏洞的过程。这可以通过不同的工具来完成,例如动态或静态分析工具。动态分析在程序运行时执行,而静态分析在软件测试开始前进行,无需运行程序。单元测试在单元测试中对程序的每个功能进行测试,以确保其正常运行。这确保了软件的组件在最终发布之前都经过了全面的测试。集成测试端到端测试,通常称为集成测试,确定应用程序的各个组件是否正常运行。集成测试通过将应用程序的各个模块集成并测试,来评估它们的性能,从而评估模块之间的通信。自动化验收测试(AAT)通常是测试的最后一个阶段。最终,它在一个类似生成环
16、境中测试整个概念,以证明应用程序按用户预期执行。冒烟测试冒烟测试的目的是提供一种快速的方法来初步评估软件的功能。如果未通过评估,它将被标记为“不稳定版本”并退回给开发人员,然后他们可以执行更多的测试来找到问题的根源。Qt Group软件测试初学者指南103.1.使用 Squish 进行自动化测试 自动化测试是软件开发过程中不可或缺的一部分。测试用于验证应用程序的功能并发现需要消除的 bug。Squish 是一个名字恰如其名的自动化测试解决方案,该工具提供功能和可视化(GUI)测试功能,支持 Qt、Java、Web、Windows、iOS、Android 等。Squish 提供了一个 IDE 和
17、一个框架,允许您实现和自动化 GUI 的验收测试,并实时验证应用程序是否符合其需求。它能够用 JavaScript 和其他语言录制和编写测试脚本,并使用基于属性的对象标识。它有两个部分:运行器用来读取和运行脚本,和服务器挂钩,用来控制被测试的应用程序。Squish 的特性:支持所有主要的 GUI 框架 完全支持桌面端,移动端,Web 和嵌入式平台 录制测试脚本 强大的对象识别和验证能力 良好的集成环境 支持行为驱动开发 使用命令行工具进行完全控制广泛支持 GUI 自动化测试Squish 的 UI 技术支持 Windows、Mac、Java 和 Web 应用程序以及 Android 和iOS 等
18、移动平台的 GUI 自动化测试。Squish 的使用和操作很简单。用户可以使用标准编程语言,如 Python、JavaScript、Ruby、Perl 和 Tcl 等创建测试用例。他们还可以选择使用 Gherkin测试语言使用行为驱动开发(BDD)的方法进行测试。此外,Squish 具有自动化测试脚本录制和识别高级交互和对象而非低级事件的功能。测试人员需要做的就是按下录制按钮,然后继续他们在应用程序中的工作。执行操作后,Squish 会自动创建一个测试脚本。验证和识别测试Squish 具有各种验证和识别功能,可以轻松测试您的应用程序。比如,您可以通过对象属性进行验证,比较两个屏幕截图,直观地比
19、较复杂项目的信息、几何形状、拓扑结构和界面设计,或者进行 OCR 文本对比和图片搜索。Qt Group软件测试初学者指南11测试 Qt 应用程序Squish 完全支持 Qt,这让用户能够轻松地测试 Qt 应用程序。对于跨平台的 Qt应用程序,在一个平台上使用 Squish 进行测试,在更换到另一个平台上进行测试时无需更改测试代码。Squish 通常只需要二进制文件。Squish 支持 Qt Widgets、QML 和 QtQuick 控件以及典型和复杂的按钮、菜单、列表、表格等。使用 Qt WebKit 和 Qt Web Engine 实现的嵌入式 Web 内容也能被识别。无论是 Qt 和 Q
20、ML 控件,模型还是其他对象,都可以使用 Squish 访问它们。用户还可以将测试脚本的函数链接到 Qt Signals 和 Qt Events,这样测试脚本能够响应应用程序的信号和事件。Squish 支持诸如触摸、轻击、滑动等基本手势的自动化测试。还支持捏和其他复杂的多点触控动作。Squish 开发团队在研究使用 Qt IVI 模块测试车载信息娱乐(IVI)应用上投入了大量时间和精力。C+和 QML 都允许访问这些车辆特性。此外,还提供了一个核心 API,用于向 Qt IVI 模块添加新的 IVI 特性和绑定,以测试车辆交互。Qt Group软件测试初学者指南12应用程序由于 Squish
21、可以与使用先进技术开发的多种软件一起运行,因此该工具在软件开发中很受欢迎。此外,它可以用于各种测试方法。例如,公司可以使用 Squish 进行用户界面测试、功能测试、回归测试和关键字驱动测试。Squish 还可以在 Android 和 Java 等各种平台上测试应用程序。Squish 的优点 测试中的高一致性和最小冗余 出色的可重用性和可扩展性 可根据集成要求进行修改 测试执行阶段的高性能和高效率3.2.使用 Test Center 改进测试管理使用测试结果管理平台,如 Test Center,可以增强您的测试管理和报告管理功能。它可以作为测试和所有测试结果的集中且有组织的存储库。在 Qt T
22、est Center 中,通过内置的、自动统计报告导入您的测试数据,您可以查看自动和手动测试套件统计数据、可视化趋势和分析测试执行的历史数据。从手动测试切换至自动化测试手动测试是一种模拟用户行为以确保软件按预期工作的方法。尽管手动测试对于某些测试情况更有效,但它并不总是最好的选择。从管理测试环境的复杂性到人为错误带来的风险,手工测试存在一些障碍,促使众多企业重新考虑自动化测试是否是他们下一个项目的理想选择。自动化测试方法可以帮助公司克服这些障碍,并在更短时间内提供更多的测试机会。4.Qt Group软件测试初学者指南13自动化在测试中的优势减少常规测试的时间鉴于手动测试会耗费大量时间,测试人员
23、只能手动覆盖有限的测试领域。随着软件变得越来越复杂,手动测试在规模上也更具挑战性。另一方面,自动化测试通过消除如回归测试等常规测试期间的人工干预来加快质量保证过程。增加测试覆盖率随着执行次数的增加,手动测试难免会遇到瓶颈,并且这些测试的质量在很大程度上依赖于特定测试人员的专业知识。此外,由于测试人员的特殊性质,很难每次都复制同一组测试。自动化测试可以提高测试覆盖率,而与手动测试不同的是自动化测试可以在不同的设置上同时执行多个测试,并使用不同的参数。降低人为错误的风险当个人参与手动测试过程时无论多么小心,都有可能发生人为错误,毕竟人无完人。在某些情况下,有些人可能会跳过一些步骤,最终可能导致增加
24、他们的工作量并进一步延误开发过程。因此,自动化测试降低了出错的可能性。此外,由于每个操作都被自动记录下来,因此任何问题都可能被发现并立即修复。决定哪些测试用例应该自动化当计划转向自动化测试时,要确定它如何能够帮助最大限度地提高团队的效率。例如,实现重复测试的自动化可以节省您的时间和精力。从手动测试转为自动化测试以下是一些转为自动化测试的实用技巧。回归测试:这些测试是广泛的,重复的,并且依赖于相同的输入变量数据驱动测试:许多功能测试需要使用多个不同的数据集进行测试,来评估一系列正面和负面的结果性能测试套件:自动化测试可用于加快在不同条件下的系统性能测试 API 测试:自动化测试能更快地发现缺陷,
25、因为每当 API 被修改时,它们都会触发 API 回归测试Qt Group软件测试初学者指南14此外,您的团队还应该能够确定哪些测试用例要自动化,哪些不用。有些测试用例在手动测试时完成更有效或不能使用自动化测试,例如:探索性测试:真正的用户对程序的探索不同于标准化的例行程序。探索性测试不能自动化,因为它需要人类的认知。用户体验(UX)测试:自动化工具必须在捕捉人们对产品的感受、他们使用产品的可能性以及产品的美观程度等主观因素方面迎头赶上。可达性测试:最好通过手工测试来实现,通过手工测试检查用户与进程或应用程序的交互。选择正确的框架选择正确的框架测试套件的效率依赖于所选择的框架。正确的选择将取决
26、于程序员的技能、组织的软件开发过程和软件的性质。为 了 获 得 可 靠 的 结 果,请 选 择 与 团 队 成 员 的 技 能 匹 配 的 框 架。例 如,JavaScript、Python、Ruby、Tcl 和 Perl 通常用于测试自动化框架。然而,最好选择一个您的团队最适应的框架,以缩短学习曲线。选择正确的工具转向自动化测试需要合适的工具。选择符合您业务目标的工具是至关重要的。与选择正确的框架类似,不仅要考虑您的当前目标,还要考虑您未来的目标。例如,五年后这个工具还会存在吗?是否经常发布新版本?技术支持如何?最终,正确的工具应该帮助您解决问题并适应您不断变化的需求。设定易于管理的目标和快
27、速的学习曲线测试自动化经常被誉为许多软件测试挑战的“万金油”。然而,从手动测试过渡到自动化测试可能并不那么容易,因此最好从易于管理的目标入手。您可以将最常用的回归测试套件或最长或最繁琐的测试套件自动化。首先,找出反复出现的 Bug 并消除它们,然后逐步提高自动化程度以覆盖更多的测试领域。Qt Group软件测试初学者指南15衡量自动化测试工具的性能在评估自动化测试工具时,找到一些适当的指标至关重要,这样可以确保工具足够高效,能够满足您的测试目标。以下是一些可以考虑的切入点:与使用该工具之前相比,现在执行测试的周转效率提升了多少 创建和修改测试所花费的时间差异 开发测试套件的时间是否缩短了5.结论软件测试不仅是一种需求,而且是一个产品乃至公司可能发布的所有未来产品在市场上成功的关键因素。以测试为重点实施软件质量管理策略可以确保您的公司遵循最佳实践,并且您的最终产品能够满足甚至超过用户的预期。迈出软件质量管理的第一步了解更多