软件测试

测试的基本概念和5要素

2017-10-17  本文已影响0人  钰欣乐谦

软件bug的主要原因:

     是因为开发人员没有理解、预见或测试所有可以运行的软件环境。本章主要讨论程序猿引入的bug和运行环境导致的bug

测试人员需要保持的基本态度:

    *“如何才能攻破这个功能”

    *“是研发人员的合作伙伴”

    *“是项目的首席风险官”

开发人员常有的态度:

    *“如何才能实现这个功能”

   *“我很辛苦的实现了我的功能,它是我的孩子,我已经花了很多心思”

自动化测试的问题

    1、代码运行的环境是一个测试环境,而不是一个真实的用户环境。

    2、通常是根据已经发生过的bug来设计,很难提前预言

测试应关注

    *从测试策略的角度来说,需要明确测什么(方向和战略)和怎么测试(战术)

      **单个单独的测试用例应该覆盖软件的哪些功能?哪些软件的功能必须放在一起测?应该先测哪个功能?如何决定哪个功能先测,哪个功能后测?如果一个项目中有多个测试人员,应该使用什么样的测试策略,以确保每个测试人员的工作相辅相成,而不是相互重叠?

     *速度、规律、可重现

     *测试要求精确,精确性主要是针对测试结果和对被测系统的熟悉

     *但也可以允许一定的模糊和笼统,为了方便探索

     *测试需要学会善用工具

决策分为5个部分:输入(input)、状态(state)、代码路径(code path)、用户数据(user data)和执行环境(execution environment)

输入:输入中使用选中的子集,通过推理认定是否这些输入已经足够了

    *需要确定有哪些输入

    *需要确定哪些输入值和其他输入有关联,确定如何覆盖

    *输入这些值的先后顺序是否会导致问题

    *特别注意测试错误处理代码,很多开发没有出错处理或者出错处理草草了事

    *特别注意开发人员对输入的合法性检查,以及是否有途径可以绕过合法性检查

    *注意出错时,显示的错误信息

    *注意修改输入数据,导致函数的异常出错,来看出错处理是否出了问题

    *找出相关的特殊字符,然后使用它们做测试输入值

    *找出设计中所有的输入相关的假定,注意观察程序设计中假定的默认值不一样的数据或类似的数据

    *注意输出,注意初始状态对输出的影响,注意是否需要重复运行几遍?

    *注意根据属性和输出结果选择输入

状态:单个输入、一些输出或是全部输入都会被软件“记住”

    *了解哪些数据被存储(如果可以深入代码层,可以考虑状态数据如何输出或保存可以更好的验证)

    *持续不断的运行软件,中止运行,再运行软件

    *了解哪些状态是临时的(比如程序终止时,该状态会被忘却);哪些状态是长期保存的,存储在哪?状态的生命周期有多长?

   *了解哪些状态是会累加,考虑是否会发生溢出

   *整理输入和状态之间的关系

   *如果多个输入某种程度上相关联,那么它们可以考虑放在一起测试

代码路径:

   *尽可能的提高代码路径的覆盖率(白盒测试和code review有绝对优势)

用户数据:

  *和软件真实用户使用的数据尽量相似

  *大数据量的情况和数据类型的分类

运行环境:

  *使用的操作系统和当前配置

  *包括运行在同一系统上会和被测软件进行交互的其他一些应用程序

  *软件当前的网络情况、网络的可用带宽、性能等

  *和被测程序共享一些模块的其他程序



以谦卑的心感受,以感恩的心生活

上一篇下一篇

猜你喜欢

热点阅读