章五 带上眼罩测试软件(2)

简介: 章五 带上眼罩测试软件(2)三、状态测试软件测试的另一个方面是通过不同的状态验证程序的逻辑流程。软件状态是指软件当前所处的条件或者模式。注意:软件测试员必须测试程序的状态及其转换。1、测试软件的逻辑流程前面讲过,要使测试可以控制,就必须通过建立只包含最关键数字的等价划分来减少候选数据。
章五 带上眼罩测试软件(2)
三、状态测试
软件测试的另一个方面是通过不同的状态验证程序的逻辑流程。
软件状态是指软件当前所处的条件或者模式。
注意:软件测试员必须测试程序的状态及其转换。
1、测试软件的逻辑流程
前面讲过,要使测试可以控制,就必须通过建立只包含最关键数字的等价划分来减少候选数据。测试软件的状态和逻辑流程有同样的问题。
对于软件测试,解决方法是运用等价划分技术选择状态和分支。
(1)建立状态转换图
这种图可能作为产品说明的一部分被提供出来。绘制状态转换图有几种技术。可使用方框和箭头,也可使用圆圈和箭头。
注意:状态转换图可能会变得非常大,如果预计状态图会如此复杂,那么就找一些商业软件来绘制和管理。
状态转换图应该表示出以下项目:
(1.1)软件可能进入的每一种独立状态;
如果不能断定是否为独立状态,它就可能是;如以后发现不是,随时可将其剔除。
(1.2)从一种状态转入另一种状态所需的输入和条件;
可能是按键、菜单选择、传感器信号或者电话振铃等。
(1.3)进入或者退出某种状态时的设置条件及输出结果。
包括显示的菜单和按钮、设置的标志位、产生的打印输出、执行的运算等。
2、减少要测试的状态及转换的数量
为大型软件产品建立状态图是一项艰巨的任务,但愿只测试整个软件的一部分,使建立状态图变成一个可以接受的任务。
遍历所有的分支是不可能的,需要将大量的可能性减少到可以操作的测试用例集合。有5种实现方法:
(1)每种状态至少访问一次;
(2)测试看起来是最常见和最普遍的状态转换;
(3)测试状态之间最不常用的分支;
(4)测试所有错误状态及其返回值;
(5)测试随机状态转换。
3、进行具体测试
确定要测试的状态及其转换之后,就可以定义测试用例了。
测试状态及其转换包括检查所有的状态变量(state variables)——与进入和退出状态相关的静态条件、信息、值、功能等。
把对状态及其转换的假定与项目小组的产品说明书作者和程序员讨论是个好主意,他们可以提供软件测试员可能想不到的、表面现象背后的状态内幕。
文档涂改标志:当文档载入编辑器,一个称为文档涂改标记(dirty document flag)的状态变量即被清除,软件处于“洁净”状态。只要文档任何修改,软件就保持这种状态。
状态变量也许看不见,但是很重要。
4、失败状态测试
测试包括审查软件、描绘状态、尝试各种合法可能性、确认状态及其转换正常。
和数据测试一样,相反的做法是找到使测试软件失败的案例。
(1)竞争条件和时序错乱
多任务(multitasking)是指操作系统设计用来同时执行多个独立的进程。
设计充分利用多任务的软件才是艰巨的任务。必须随时处理被中断的情况,能够与其它软件在系统中同时运行,并且共享内存、磁盘、通信以及其它硬件资源。
可能产生竞争条件问题(race condition)。
竞争条件测试难以设计,最好是首先仔细查看状态转换图中的每一个状态,以找出哪些外部影响会中断该状态。
(2)重复、压迫和重负
重复测试(repetition testing)是不断执行同样的操作。最简单的是不停地启动、关闭程序。
进行反复测试的主要原因是检查是否存在内存泄漏(memory leaks)。如果计算机内存被分配进行某些操作,但是操作完成时没有完全释放,就会产生一个常见的软件问题。结果是最后程序耗尽了它赖以工作的内存空间。
压迫测试(stress testing)是使软件在不够理想的条件下运行——内存小,磁盘空间少、CPU速度慢、调制解调器速率低等。观察软件对外部资源的要求和依赖的程度。压迫测试是将支持降到最低限度,目的在于尽可能地限制软件的必要条件。
重负测试(load testing)与压迫测试相反。压迫测试是尽量限制条件,而重负测试是尽量提供条件任其发挥。让软件处理尽可能大的数据文件。最大限度地发掘软件的能力,让它不堪重负。
注意:重复、压迫和重负测试应联合使用,同时进行,这时找出以其它方式难以发现的严重缺陷的一个可靠的方法。
软件测试员的任务是确保软件在这样恶劣的条件下仍能正常工作,否则就报告软件缺陷。
5、其它黑盒测试技术
(1)像笨拙的用户那样做
(2)在已经找到的软件缺陷的地方再找找
(3)像黑客一样考虑问题
(4)凭借经验、自觉和预感 
目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【8月更文挑战第27天】在软件开发的海洋中,自动化测试是确保航船不偏离航线的关键罗盘。随着人工智能(AI)技术的兴起,这艘航船正乘风破浪,以前所未有的速度前进。本文将探索如何通过AI技术优化自动化测试流程,不仅提高测试的效率和覆盖范围,而且增强测试用例的智能生成和结果分析能力。我们将从AI在自动化测试中的应用入手,深入探讨其对测试准确性和效率的影响,以及面临的挑战与未来的发展方向。
|
7天前
|
机器学习/深度学习 人工智能 安全
软件测试中的探索性测试:一种高效发现软件缺陷的方法
本文将深入探讨软件测试中的一种关键方法——探索性测试。探索性测试是一种动态的、探索性的软件测试方法,它依赖于测试人员的直觉和经验,通过实际操作软件来发现潜在的问题和缺陷。与传统的基于预定义用例的测试方法相比,探索性测试更加灵活,能够更全面地覆盖软件的各个方面,从而更有效地发现难以预见的错误和漏洞。
|
9天前
|
测试技术 持续交付 Python
自动化测试之美:打造高效的软件质量保障体系
【9月更文挑战第25天】在软件开发的海洋中,自动化测试是一艘能够引领我们高效航行的帆船。它不仅能帮助我们发现缺陷,更是一个持续集成和持续部署(CI/CD)过程中不可或缺的部分。本文将通过浅显易懂的语言和实际代码示例,引导读者理解自动化测试的价值,并学会如何实施它,从而提升软件的质量与开发效率。
28 4
|
9天前
|
敏捷开发 监控 测试技术
提升软件质量的利器:自动化测试的实践与反思
在软件开发的生命周期中,测试作为保障产品质量的重要环节,其重要性不言而喻。随着敏捷开发和持续集成等实践的普及,传统的手动测试方式已逐渐无法满足快速迭代的需求。因此,自动化测试作为一种提高测试效率和准确性的有效手段,正受到越来越多开发者的青睐。本文将深入探讨自动化测试的价值、实施步骤以及在实践中可能遇到的问题和解决方案,帮助读者更好地理解和应用自动化测试。
13 2
|
15天前
|
测试技术 持续交付 云计算
提升软件质量的关键路径:高效测试策略与实践
在当今数字化时代,软件已成为企业运营和产品服务的核心。随着软件开发周期的不断缩短和市场需求的迅速变化,确保软件质量成为开发过程中的首要任务。本文将探讨如何通过高效的测试策略和实践来提升软件质量,包括自动化测试、持续集成、代码审查等关键技术和方法。通过对这些技术的应用和整合,软件开发团队可以在竞争激烈的市场环境中保持领先地位,为用户提供高质量的产品和服务。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的自动化测试:提升软件质量的未来之路
【9月更文挑战第3天】AI驱动的自动化测试是提升软件质量的未来之路。它借助AI技术的力量,实现了测试用例的智能生成、测试策略的优化、故障预测与定位等功能的自动化和智能化。随着技术的不断进步和应用场景的不断拓展,AI驱动的自动化测试将在未来发挥更加重要的作用,为软件开发和运维提供更加高效、准确和可靠的解决方案。
|
9天前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
|
1月前
|
安全 测试技术 数据库
华测检测软件登记测试
软件产品登记测试由检测机构根据委托方提供的材料,验证软件功能是否正常运行。自2000年起,测试报告可用于增值税退税、双软认证评估及高新企业认定等。测试涵盖应用、嵌入式、数据库及系统软件等,依据GB/T 25000.51-2016标准,确保软件质量并提升产品销售力及企业信任度。由具备CNAS及CMA资质的CTI华测检测提供专业服务,涵盖通用应用软件测评、APP安全检测及信息安全服务等多个方向。
|
2月前
|
监控 数据管理 jenkins
深入理解与应用软件自动化测试框架
【8月更文挑战第30天】在现代软件开发周期中,自动化测试已成为提高测试效率、保证软件质量的关键步骤。本文将探讨自动化测试框架的设计与实现,重点放在如何根据不同项目需求选择合适的测试框架,以及如何有效地集成到现有的开发和测试流程中。通过分析几个流行的自动化测试工具,如Selenium、Appium和JUnit,我们将讨论它们的特点、优势以及可能面临的挑战。此外,文章还将介绍一些最佳实践,帮助读者构建稳定且易于维护的自动化测试环境。
|
19天前
|
敏捷开发 人工智能 测试技术
提升软件质量的关键——高效软件测试策略与实践
在软件开发过程中,测试是一个至关重要的环节。它不仅决定了产品的可靠性和用户体验,还直接影响到企业的声誉和市场竞争力。本文将详细探讨如何通过科学的测试策略和方法,确保软件质量达到高标准的要求。从测试流程的设计、自动化测试工具的应用,到持续集成和持续部署的实践,我们将全面解析如何在软件开发中实施有效的测试,以降低错误率,缩短上市时间,并提供优质的软件产品。
64 0
下一篇
无影云桌面