• 0
  • 0
分享


摘要: 

        有些人认为探索性测试是一项低成本思维的任务,测试人员只是浏览应用程序,看看会出现什么。然而我们不应该忽视这样做,因为有时它确实揭示了一些有趣的错误,但是测试人员在探索应用程序时可以遵循一些技术和模式。让我们来看一个在探索性测试中使用的两步过程。

        我认为软件工程中最被低估的测试类型是探索性测试。有些人认为这是一个不费力的任务,测试人员只是浏览应用程序,看看会出现什么。

        我们都知道探索性测试不是临时测试,这意味着需要遵循一些技术和模式。当我对一个经历了变化的软件应用程序进行探索性测试时,我使用这样一个两步过程。


步骤1:在不知道发生了什么变化的情况下接近测试中的应用程序。

        这将确保现有行为不受影响,关键路径功能不会改变。如果您的测试失败,它将揭示应用程序已经经历的变更,这可能是预期的行为,也可能是在实现变更时引入的潜在缺陷。

        但是,为了做到这一点,需要有一个关键路径产品计划,这样我就可以在每次做出更改时参考它。并且这个产品计划需要由整个团队来更新和维护。


步骤2:在完全了解预期行为之后,接近被测试的应用程序。

        这需要对用户需求文档进行彻底的分析。测试人员需要与工程和产品团队成员密切合作,以了解影响的领域,这反过来有助于发现边缘案例。这也需要完全理解端到端的产品行为,最重要的是集成点。

        让我们看一个例子来更好地理解探索性测试的重要性以及上述两种技术是如何有益的。

        假设我们有一个允许用户上传文档的软件应用程序,它是使用多层架构实现的:

    •    表示层—帮助用户上传、替换、删除文档以及从服务器上的文件夹下载文档的GUI

    •    应用层—运行业务逻辑,如验证文件类型、验证用户权限等。

    •    数据层—存储上传的文件、审计条目等。

        该应用程序目前仅允许具有特定角色A的用户上传pdf文件。产品团队要求的更改是不再允许具有角色A的用户下载文件,并将添加一个新角色,角色B,它可以上传jpg和png文件以及pdf文件。

        在这个改变实现之后,就由测试人员来做探索性的测试了。在步骤1中,在不知道发生了什么变化(上传jpg或png文件的能力)的情况下,测试人员最初会尝试上传pdf文件,用另一个pdf文件替换它们,删除,并以角色a的用户身份下载上传的pdf文件。因此,当测试人员尝试下载pdf文件时,该测试会失败,因为该角色的这一更改会删除该能力。实现的变更不应该中断任何其他流程。

        这种方法将确保现有的关键路径功能不受影响,并且还揭示了一个不允许测试人员前进的变更,提示他们前进到步骤2。

        现在,测试人员浏览用户需求文档,并分析所需的更改。影响范围将包括架构的所有三层,因此将为每一层设计测试:

    •    表示层——错误消息措辞、操作简便性等。

    •    应用层—文件验证和与权限相关的测试

    •    数据层—文件大小和审计条目

        到现在为止,你可能认为这些是每个测试人员在测试应用程序时通常采取的步骤。探索性测试在哪里出现?

        假设在执行上述步骤时,您拍摄了一个截图,该截图被保存为jpg格式,文件名中包含当前日期和时间戳。由于日期和时间格式的原因,它有特殊的字符和空格,当这个文件上传时,它将无法通过测试,因为文件名中的空格将被转换为“%20”,代码可能无法处理它。

        这个事实不会在测试计划或验收标准中提及;只有从不同的角度探索应用程序,才能发现这个问题。

        当你试图用自己的方式解决问题时,你会发现一个全新的视角。其他人可能已经用任何图像文件测试了这个过程,但是因为一个测试人员使用了一个截屏,它暴露了这个问题。

        文件的可用性可能是下游应用程序的关键要求。这个问题也可能在集成测试过程中被发现,集成测试是进行探索性测试时要记住的另一个重要测试。确保记住所有的集成点,并从这些点提取或向这些点推送正确的数据是非常重要的。

        在这种情况下可以完成的另一个测试是负载测试。应用程序还应该处理试图下载同一文件的并发用户。一个探索性的测试人员还应该有能力在真实的场景中描绘应用程序。

        探索性测试是关于以不同的心态,作为不同的用户来思考,并且在考虑用例的所有可能性的同时检查应用程序的所有层。

        有几个工具可以用来遵循这项技术。我一直热衷于制作思维导图来表示应用程序的端到端功能。它帮助我无缝地找到有影响的领域,避免因错综复杂而陷入困境,忽略大局。

        此外,探索性测试并不总是与手动测试相关联。探索性测试的结果可以揭示需要自动化测试的领域。

        为了有效地执行探索性测试,团队的每个成员都遵循一套测试过程是很重要的。每个人都需要兼任测试的职责,在软件开发生命周期的某个时刻进行探索性测试,从需求收集开始,一直到变更发布到生产。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   功能    ·查看水杯是否有注水线    · 倒水刚好到注水线, 水是否会流出来    · 倒水超过注水线, 水是否会流出来    · 倒水超过注水线, 杯子是否会变形    · 杯盖拧紧之后是否会漏水    · 倒热水, 杯子是否会变形    · 倒凉水, 杯子是否会变形    · 杯子是否隔热    · 水杯的容量刻度与它的标准容量是否一致    · 杯子的材质是否易碎    · ...
            0 0 888
            分享
          •   1、用户定义的变量  当我们每次去调用接口都要手动修改手机号码,并且注册和登录接口都要同步修改,这样操作相当繁琐,针对这个问题我们使用用户定义的变量的工具进行优化。  添加:在线程组上:右键—>添加—>配置元件—>用户定义的变量  用户自定义变量是固定的,与下面的“用户参数”有点不同(比如:${__Random(1000,9999,)},多个虚拟用户请求时,生成的四位数都是固定同一个)  我们把注册和登录的手机号和密码都提取出来放到这里。  定义了之后,我们需要调用该参数,调用方式是在对应的取样器里,使用${key}的格式替换取样器请求体里的值,这样我们就可以每次只修改一...
            0 0 963
            分享
          •   据泄密者 Majin Bu 称,苹果将于明天推出第11代基础款iPad。Majin Bu 声称,新款 iPad 将采用与第 10 代机型相同的设计,而且配件"将完全兼容"。上周,同一位泄密者声称苹果将首次推出带有可互换磁性笔尖的第三代 Apple Pencil,而今天的传言是在有关苹果明天可能推出的产品的相互矛盾的报道之后出现的。  彭博社的马克-格尔曼(Mark Gurman)周日表示,虽然新款 iPad正在开发中,但预计本月不会推出新机型,而 9to5Mac 和 Supercharged News 的报道则称,苹果计划最快于周二推出新款 iPad mini、iPad...
            0 0 1335
            分享
          •   想做程序员,想学软件测试,是自学还是培训好?学习的关键是什么呢?  大家纠结的点在于,我是应该去参加培训班还是选择自学,我自身的话没有参加过培训班,所以我觉得没有什么发言权来给大家什么建议。不过我后来去咨询了几个朋友,有一个是在培训机构当老师,还有两个曾经也接受过培训。我根据他们说的,还有结合我自己的一些想法来给大家做个分享。当然如果你有什么补充的,可以在评论区留言!  关于自学还是选择培训有几点——  第一:  你是零基础的小白,自学约等于浪费时间。这个公式在多数情况下都成立,当然,如果你有自信的话可以去试一下。  第二:  如果你有一到两年的开发/测试的经验,想在技术上有所提升,那这个...
            0 0 922
            分享
          • 1.Android APP 内存不足时, 系统如何结束进程获得内存?系统优先结束被挂起(暂停)的进程,释放内存。2.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄 漏、代码编写错误。3.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?开放性问题,带点主观意见 1.对比其他熟悉的自动化工具的优缺点 2.自动化的简要方案(简要的同时关键内容请具体)。(提示: appnium 等)4.Android 测试与 web 测试有什么区别?相同点:设计测试用例均依据等价类、边界值等方法,测试原理相同;大多...
            13 14 3067
            分享
      • 51testing软件测试圈微信