关闭

要想探索性测试玩得溜,掌握这5个核心技巧!

发表于:2024-8-30 08:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:William Wang    来源:51Testing软件测试网原创

  引言
  在当今信息化社会,软件已成为支撑各行各业高效运作的关键载体,其质量直接影响到用户体验、业务运行乃至企业竞争力。随着软件复杂度的不断提升以及市场对快速迭代和高质量交付的需求日益迫切,传统的线性、预定义的测试方法逐渐显现出局限性。在这种背景下,探索性测试(Exploratory Testing, ET)作为一种强调测试人员主观能动性、即时创造性和系统行为探索的测试方法,逐渐受到广泛关注并被应用于各类软件项目的测试实践中。在接下来的章节中,笔者会给大家介绍探索性测试的理论知识、实践操作和未来发展,相信通过这篇文章能够让大家对探索性测试方法有更多的了解认知,同时能够熟练运用到提升软件质量和优化测试流程中。
  一、定义与核心理念
  首先我们来了解什么是探索性测试?它是一种非线性、灵活且高度依赖测试人员专业知识与经验的测试方法。它并不依赖于详尽的预定义测试用例集,而是鼓励测试人员在了解系统特性和需求的基础上,运用自身的直觉和创造性思维,实时地设计和执行测试,以发现潜在的软件缺陷和质量问题。其核心理念包括以下几个方面:
  探索性测试重视测试人员的才能和专业知识,强调他们在测试过程中的主观能动性和创造性思维。假设一名经验丰富的测试工程师在测试一个新的在线支付系统时,他不仅按照既定的测试案例执行,还根据自己对用户行为的理解,模拟了不同网络环境下的支付流程(如弱网络、断网重连等),以及用户可能的非线性操作序列(比如中途取消支付、切换支付方式等),发现了系统在网络不稳定情况下的处理漏洞
  测试设计和执行是同步进行的,而不是提前完全规划好的。这意味着测试人员一边探索软件一边构造测试用例,能够随着对软件理解的加深和新发现的问题不断调整测试策略。比如,开发团队提供了一个API的初步版本,测试工程师开始用Postman进行基础的GET和POST请求测试。在测试过程中,他们发现该API在处理大量并发请求时响应缓慢。于是,测试团队立刻设计了一系列高负载测试用例,模拟实际使用中可能出现的高并发场景,并使用JMeter进行压力测试。通过实时监控和调整测试策略,他们不仅定位了性能瓶颈,还提出了解决方案建议。
  探索性测试强调在测试过程中学习,测试人员持续学习软件的行为模式、系统特性以及潜在问题,根据实时反馈快速适应和优化测试活动。笔者所在公司的电商网站有一次引入了智能推荐系统,测试团队在探索性测试中不仅仅验证推荐算法的基本功能,还通过分析用户行为日志和访谈产品经理,学习用户在使用推荐功能时的习惯和偏好。他们发现,用户在特定时段(如节假日前夕)对某些类别的商品推荐更为敏感。基于此洞察,测试人员设计了模拟这些特定情境的测试场景,比如高流量时段的系统稳定性测试、个性化推荐准确性的深度测试等,以此来更贴近用户实际使用情况,优化测试效果。这就是测试团队深度挖掘并学习用户的行为模式,然后用来优化测试的成功实践。
  测试人员在探索性测试中有较高的个人自由度,同时也承担着相应的责任,即在无严格预定计划的情况下,也要尽可能地发现和预防潜在的问题。在之前一个与外部小游戏程序供应商的合作项目里,笔者所在团队的一位测试工程师基于对玩家行为的假设,设计了一系列创新的测试场景,如快速连续点击、长时间无操作后的游戏状态恢复、以及在游戏内同时进行多个复杂操作的测试,旨在发现可能的性能瓶颈和逻辑错误。这种创造性的测试设计不仅依赖于测试人员的自由度,也体现了其对产品质量负责的态度。
  在AI驱动的软件产品测试中,团队首次使用了一套基本的测试用例集。通过分析测试结果和机器学习模型的行为,发现模型在处理某些边缘输入时预测准确性下降。基于这些发现,第二个迭代中,测试人员调整了测试策略,引入更多极端和边缘案例,比如极端数值、不常见格式的输入数据等,同时利用自动化工具生成更多此类测试用例,以更全面地挑战模型的边界。随着迭代次数的增加,测试集越来越丰富,模型的鲁棒性得到了显著增强。通过这种迭代的方式不断优化测试活动的价值输出,测试人员不断在每次测试迭代中积累经验,优化测试路径和策略,寻找到可能导致软件失败的新场景和边缘案例。
  综上所述,探索性测试以其独特的理念和方法,为企业应对复杂软件项目的测试挑战提供了有力武器,成为现代软件测试不可或缺的一部分。本文后续章节中,将进一步探讨探索性测试的实施方法、应用场景以及与其它测试方法的结合,旨在帮助读者深入理解和掌握探索性测试,提升软件测试的效果与效率。
  二、探索性测试的实施方法与技巧?
  2.1 制定测试章程(Charter) 
  测试章程(Charter)是探索性测试的行动指南,为测试人员提供明确的目标、范围和方法。制定Charter有助于确保测试活动的聚焦和高效,具体步骤包括下图所示:
  首先,明确本次探索性测试希望达成的具体目标,如验证某个新功能、检查特定性能指标、找出特定风险区域的问题等。假设一款跨平台应用程序最近添加了一个实时视频编辑功能。本次探索性测试的目标是验证该功能在不同操作系统(如Windows、macOS、Android、iOS)和浏览器(Chrome、Firefox、Safari)上的兼容性与表现是否一致,特别是关注视频渲染速度、音频同步及特效应用等方面是否存在差异或问题。
  然后界定测试范围,确定测试对象的具体范围,包括涉及的功能模块、数据类型、用户角色、系统环境等,避免测试活动过于分散。在对一个移动应用进行跨平台测试时,如果资源有限,那么假定本轮探索性测试仅覆盖Android操作系统,版本范围为Android 8.0到Android 12。测试将针对不同品牌和型号的设备,但排除了iOS和其他旧版Android系统。这样的限定确保了测试的深度,避免因环境过多而导致测试覆盖面不够深入。
  接着是设定时间限制,为本次探索性测试设定合理的时间预算,以保持测试的紧迫感和专注度。我们时常会在一个敏捷开发团队中,为新功能模块安排了一次为期半天(4小时)的探索性测试冲刺。在这段时间内,测试团队集中精力对即将发布的用户故事进行全面的探索,包括功能验证、界面测试、基本的兼容性检查等。时间的紧迫促使团队成员保持高度专注,快速识别并报告问题。
  还有需要列出测试策略,列出可能采用的测试方法、工具、数据源等,为测试人员提供探索的线索和思路。例如要设计一个App应用性能的测试策略:
  测试方法:进行压力测试和稳定性测试,模拟大量用户同时操作应用的不同功能;采用探索性负载测试,逐步增加并发用户数和操作复杂度,直至应用崩溃或响应时间不可接受。
  工具:使用JMeter或LoadRunner进行性能测试脚本编写和执行;利用Android Studio的Profiler或Xcode的Instruments监控应用资源消耗,包括CPU、内存、网络和电池使用情况。
  数据源:基于生产环境的日志分析,选取高流量时间段的真实用户行为数据作为测试依据;创建虚拟用户场景,模拟不同网络条件(如2G、3G、4G、WiFi)下的应用表现。
  最后是记录预期产出,明确本次探索性测试期望的产出,如发现的问题数量、撰写的问题报告、提出的改进建议等,便于后期评估测试效果。假定一个新提交测试项目,预期发现并记录至少10个高优先级的系统缺陷,其中包括至少2个安全性问题、3个性能瓶颈,以及5个影响用户体验的功能性错误。所有缺陷需按照严重程度和优先级进行分类,并在测试管理工具(如Jira)中详细记录,包括重现步骤、影响范围和建议解决方案。
  2.2 结合思维导图进行测试设计 
  思维导图是一种可视化思维工具,可以帮助测试人员梳理复杂系统的关系,激发创新思维,为探索性测试设计提供支持。具体应用包括:绘制系统架构图,梳理业务流程,构建测试思维树,以问题或风险点为核心,通过思维导图展开相关联的功能、数据、边界条件等,形成多层次、全方位的测试思维树,指导测试设计。
  为了便于读者理解,下面附录一个详细的支付类的PayApp的Charter范例的思维导图,App版本是V1.0,可以作为参考:
本文节选自第七十九期《51测试天地》
探索性测试:理论根基、实践精髓与未来趋势》一文
想继续阅读全文或查看更多精彩内容,请点击下载:
  版权声明:本文出自《51测试天地》第七十九期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号