• 0
  • 0
分享
  • 外表简单内里复杂的功能测试,如何进行?——软件测试圈
  • 曼倩诙谐 2022-07-22 11:13:20 字数 1802 阅读 897 收藏 0

  问题引出

  不知道大家有没有遇到这样的测试场景:一个Web应用,待测功能很简单,只需要点击按钮启动运行,经过一系列内部运算,返回给用户一个结果列表。

  从可见的交付给用户的最上层UI功能来看,待测功能只是一个简单的“启动”—“观察结果”。

  但是,我想当测试人员接手这样一个测试项目的时候,恐怕应该是先“惊喜”后“恐慌”吧?!

  “惊喜”:这么简单,点一下看一下结果不就测完了?

  “恐慌”:这么简单?会不会还有什么测试点我遗漏了,怎么感觉有点惴惴不安呢?!

  这样的测试场景,我想几乎每个测试人员在职业生涯中都会遇到。那么,是不是真的就是“点一点”看看结果就行了呢?显然不是。

  那么,对于这样类型的待测项目我们应该怎么去设计测试或者进行测试呢,或者有什么测试技巧需要掌握的呢?

  需要说明的是:在这里,我们不讨论什么先进行单元测试、再进行集成测试、最后系统测试这类的分层测试设计理念,也不细致讨论使用什么判定表、等价类等具体的黑盒或白盒测试方法。

  我们本文讨论的核心是:从业务层面出发,思考如何进行这类项目的测试,及我们需要借助或抓住的一些测试灵感。

  问题思考

  问题1:如何确定“点一点”返回的结果是正确的呢?

  比如:点一点搜索某个“number=100”的数据有多少个,返回结果有10个。

  既然,我们不能确定“点一点”返回给我们的结果是正确的。那么,我们可以模拟数据,以此判定结果的正确性。具体怎么做呢?

  例如:确定系统内没有number=200的数据,模拟、输入100个number=200的数据。通过被测系统查询,返回number=200的数据数量。

  若返回数量为100个则表明系统正确性,通过测试;

  若返回数量不是100个,则表明系统存在错误,测试失败。

  以此模拟数据,来判定被测系统的正确性与否。

  因此,如何进行外表简单的应用功能测试?需要掌握的第一个测试技巧是:学会模拟测试数据。

  问题2:如何丰富测试数据样本呢?

  比如:在1中,我们证明了某类测试数据测试场景下,被测系统的正确性。但是,在其他类型测试数据输入情况下,被测系统是否会响应正确呢?

  也许,看到这个问题,有的人会说:继续模拟更多类型的测试数据呗,比如string啊、int啊、list啊等等。

  不得不说,这的确是一个方法。但是,数据类型多种多样,系统数据边界我们也不得而知(从业务层面出发,我们不知悉代码内部细节),我们如何能够枚举完所有的数据类型和模拟数据边界值呢?!

  要解决这个问题,从用户的角度出发,有一个很好的建议:如果可以,尽量使用真实数据进行测试。

  如果我们能获得真实数据采样样本,那么可以很好地解决我们模拟数据样本不够丰富和模拟数据与真实数据之间存在差异的问题。而且,真实数据能让我们更接近用户的使用环境。

  问题3:对于内部逻辑复杂的应用,最终返回结果正确,但是我还是有点担心内部运算有没有出问题呢?

  比如:某个应用,只需web页面点击即可触发,但后台程序涉及多个组件,如何确定运算过程中各个组件的正确性。

  解决多个组件联合作业的问题,常用的方法是:阶段性测试,即每次只测试一个组件正确性,最终联合确定整个系统正确性。

  但从业务层面出发,有一个简单的技巧就是:如果可以,请随时观察后台程序日志打印。

  日志是一个很好的测试媒介,借助日志可以发现许多未曾暴露到前端呈现在用户面前的问题。我们要善于抓住日志中的“error”、“warn”等等信息。

  问题4:如何快速地了解被测系统的一些“不为人知“的细节?

  比如:观察到日志中某个”可疑“信息,但是无法确定是否是故障,或者系统重启后,表现与预期不一致,无法确定是否是故障。

  这个时候,作为场内测试人员,你就需要同开发人员保持良好的伙伴关系。

  开发人员对被测系统内部细节的了解程度远胜于测试人员,同开发人员保持良好的伙伴关系,可以在遇到问题的第一时间求助开发人员而得到很好的答疑。并且,在开发人员的指导下,可以帮助我们更快地熟悉被测系统。

  问题总结

  针对本文的核心问题:如何进行外表简单的应用功能测试?在此给出了4点建议。如下表所示:

1.png

  我们不谈测试技术,我们谈的是如何思考测试。



作者:刘晓佳Rachel    

来源:http://www.51testing.com/html/52/n-7792252.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言:自从片言社区(fewords.cn)上线后,我就一直在更新技术文章。最近停更了一周,也是在想除了纯粹的技术分享以外,聊聊思维方式、职业发展对大家是不是更有帮助。每天都有不少人咨询我问题,如果汇总统计各个类型的问题频次,排名第一的绝对是:35岁以后,我该怎么办? 在这次连载文章里我就来解读一下,如何面对职场中年危机。35岁现象,真的存在吗?我可以肯定的回答你,存在,且非常明显。首先我们要说明一个前提,我们今天讨论的是软件技术领域或者说是互联网相关岗位领域的35岁危机。为什么要声明这个前提呢?因为对于一个医生、律师或者教师,35岁的他,职业发展的真正黄金期才刚刚开始。但是对于一个软件技术领域...
            0 0 1673
            分享
          •   因太多小伙伴询问风风零基础如何转行软件测试、软件测试该学什么、中级和高级测试需要掌握哪些技能之类的问题。  为了让大家系统的了解软件测试,掌握合理、正确的学习方法和目标,风风决定制作一个学习 & 成长列表,你可以根据该列表制定自己不同阶段的学习 & 成长计划。  测试基础  无需多说,必须重点掌握!!!一切技术皆由理论发展而来。  01 学习内容  ①职业介绍:IT公司和互联网公司各岗位的工作职责,如开发、测试、产品、设计、项目经理等。  ②软件流程:研发模型、研发流程、版本迭代、项目需求、需求文档、测试流程、上线流程等。  ③测试设计:测试计划、测试方法、测试用例、测试管...
            14 14 1468
            分享
          •   随着科技的发展和进步,自动化测试的应用越来越广泛深入,作为一种软件质量管控的重要手段,自动化测试通过将人为驱动的测试行为转为机器执行的一种过程。在替代大量重复性工作和提高回归测试效率方面发挥了很大的优势。  目前,自动化测试还不能完全的取代人工测试,自动化测试是否能够有效开展依赖于系统的稳定性。对于投产周期短,需求变更频繁,版本更新频率较高,甚至存在系统架构重构的可能性的系统,使用自动化测试工具录制的案例,在系统迭代更新后,需要频繁的修改调试自动化脚本,成本较高,因此此类系统不适用于自动化测试;对于部分优化升级系统,系统架构都趋于稳定,程序版本稳定,特别是投产周期长,需要频繁重复执行测试案...
            15 14 809
            分享
          • 软件测试:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。一、软件的分类1、按照功能划分:【系统软件】:如操作系统、数据库管理系统,各种驱动软件等;【应用软件】:如Office、有道翻译、QQ等;2、按照技术结构划分:【单机版本】:如Office,画图工具等;【C/S结构软件】:如QQ、微信等;【B/S结构软件】:如新浪、搜狐、google等;3、按照使用终端划分:【PC端】:电脑版QQ等安装在电脑端的软件;【移动端】:如手机版QQ、微信等安装在移动端的软件;4、按照用户划分:【产品软件】:Office、财务处理软件、360卫士等;【项目软件...
            1 1 2055
            分享
          •        谈到浏览器兼容性测试,很多同学往往考虑到的都是如何覆盖全面,管它什么Chrome、FireFox、IE、Safari这种主流浏览器还是360、QQ、搜狗等一系列国产浏览器,都给它列到列表上边去,只要时间允许,就一个一个测起来。但是大家有没有想过,这个策略真的是正确的么?真的应该这样去进行测试么?       在回答上面的问题之前,我们先来思考这样一个问题:我们为什么要做兼容性测试? 或者换个说法,网站为什么会在不同的浏览器上展现出不同的样式?毫无疑问,其答案是因为内核不同、渲染方式不同。有了这样的结果...
            5 8 5759
            分享
      • 51testing软件测试圈微信