• 【软件工程之美 - 专栏笔记】31 | 软件测试要为产品质量负责吗?



    专栏信息

    1. 专栏作者:宝玉

    2. 专栏发布平台:极客时间


    在这里插入图片描述

    主要内容

    软件测试的主要工作是什么?只有搞清楚软件测试的工作,才能搞清楚这部分工作是否可以由开发来替代,是否需要专职测试。


    一、软件测试的主要工作是什么?

    从需求开始,在需求确定后要去对需求进行分析,然后做测试设计。

    如果说架构设计是对业务需求在技术方面的抽象,那么测试设计更像是对业务需求的具象,把业务需求分解成一个个具体的用户操作步骤,也就是测试用例。

    如果对软件测试的工作简单总结一下,就是发现 Bug,报告 Bug,跟踪 Bug

    1. 软件测试怎么发现 Bug?

      这里面最难的就是发现 Bug,尤其是如何尽早、尽可能全面地发现 Bug。

      对于测试人员来说,重点是在检测,也就是会考虑所有可能的用户使用场景,正常的、异常的,甚至各种极端情况

      测试人员设计测试用例,就是要尽可能做到覆盖所有用户操作的可能,但理论上来说这是不可能的,因为组合是有无限多个的。

      可以通过一些科学的方法来通过有限的测试用例,保证尽可能多的测试覆盖。

      1. 等价类划分
      2. 边界值分析
      3. 探索性测试
      4. 场景设计
      5. 因果图
      6. 错误推测法

      推荐阅读《微软的软件测试之道》,这本书上有很多具体的测试方法的详细介绍。

    2. 软件测试怎么报告 Bug?

      在测试的过程中,如果测试人员发现了 Bug,就会通过 Bug 跟踪系统提交 Bug 给开发人员。

    3. 软件测试怎么跟踪 Bug?

      Bug 的跟踪,并不仅仅是要跟踪开发人员什么时候修复了这个 Bug,通常还包括对 Bug 修复的验证。

      回归测试是指修改了旧代码后重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。


    二、什么样的公司需要专职测试?

    1. 为什么 Facebook 可以做到没有专职测试呢?

      首先 Facebook 的工程师水平确实是高于业界平均水平的,有能力同时做好开发和部分测试工作

      其次,Facebook 的产品周期相对宽松,可以有时间完成自动化测试代码;

      Facebook 的发布和监控也比较完善,有问题能通过监控及时发现,并且可以随时快速回滚或者发布补丁;

      最后就是用户对这类社交产品的 Bug 相对容忍度比较高,想想看如果是波音飞机上的软件能这么做吗?

    2. 大厂不设专职测试的启示

      首先,用自动化测试代替重复性的手工测试是必然趋势

      其次,测试设计是软件测试人员的核心竞争力

      最后,开发人员和测试人员的更多融合是一种双赢


    三、其他摘抄

    • 除了功能性的测试,还需要进行非功能性的测试,也就是像性能、安全性和用户体验等方面的测试。
    • 有时候测试人员的工作看起来不过是用鼠标点点测试,但他们在拿到需求后,其实花了很多时间和精力分析需求,然后根据需求设计测试用例,准备测试数据。
    • 回归测试这一步很重要,因为通常开发人员在修复完 Bug 后,只会验证其修复的 Bug,而不会验证其他功能是不是会有影响。回归测试,则能有效、及时地发现修复 Bug 导致系统不稳定的情况。

    总结

    简单来说软件测试的工作,就是发现 Bug,报告 Bug,跟踪 Bug。

    公司是否需要专职测试,还是取决于公司的具体情况,例如是否有大量优秀的工程师可以同时兼任开发和测试,有大量的自动化测试代码覆盖,有强大的发布和监控系统,进度宽松,用户对 Bug 容忍度较高。

  • 相关阅读:
    如何设计数据可视化平台
    python 把函数的值赋给变量
    免杀对抗-宏免杀
    Linux篇16进程信号第二部分
    Qt5开发从入门到精通——第五篇二节( 文本编辑器 Easy Word 开发 V1.1 详解 )
    JAVA算法练习(10):绳圈
    火车头翻译插件-免费火车头翻译插件-火车头自动翻译插件
    浅谈MySQL的sql_mode
    Java:javaagent
    win10系统中同时安装jdk8和jdk14,便于pyhanlp和neo4j的使用。
  • 原文地址:https://blog.csdn.net/mek1986/article/details/126073585