软件测试之黑白盒

1.按测试内容划分,测试有哪些种类?

单元测试、集成测试、回归测试、系统测试、验收测试。

  • 单元测试 完成最小的软件设计单元模块的验证工作,目标是确保模块被正常的编码,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试。一般由开发人员去进行单元测试。

  • 集成测试 通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。(分功能模块进行测试) 自顶向下集成:集成顺序是从主模块以此向下集成。 自底向上集成:集成顺序是从子模块向上集成。

  • 系统测试 是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符或与之矛盾的对方。系统测试的对象不仅仅需要测试的产品系统的软件,还要包括软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。

  • 归回测试 归回测试是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。

  • 验收测试 让相关的用户或独立测试人员根据测试技术和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否满足合同或用户所规定需求的测试。

    • 验收测试包括alpha测试和beta测试

    • alpha测试:前期的用户测试,公司内部在模拟实际操作环境下进行的一种验收测试。

    • beta测试:后期的用户测试,此时已经通过内部测试,即将真实发布,是软件的在一个或者多个用户的实际使用环境下进行的测试。

2.黑盒测试

黑盒测试仅需知道系统的【输入】和【输出】,不需要知道代码是怎么写的。

  • 边界值测试 经实践总结:大量的软件缺陷发生在输入域和输出域的边界上。所以在设计测试用例的时候,应该重视边界。 只有一个输入条件时,可以这么选取中间值,略小于最大值,略大于最小值的区域选取值。 如果有两个输入的时候,可以选取

    ps:要测试健壮性的时候,可以设计测试用例略小于最小值的无效测试数据(或者略大于最大值的无效数据)。边界测试并非黑盒测试独有,它也可以用在白盒测试(比如数组边界的测试、对循环次数边界测测试) 缺点: 对布尔类型无效(因为布尔类型不是true就是false,不存在边界值的概念)

  • 等价类划分法 等价类划分将程序所有可能输入的数据划分成若干部分,然后从每个自己中选取具有代表性的数据作为测试用例,测试用例包括有效等价类和无效等价类。

    等价类 输入 关注点
    有效等价类 合理的、有意义的 功能和性能
    无效等价类 不合理的、无意义的 异常处理

    等价类划分法是一种典型的、常用的测试方法。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。软件不能只接收合理的数据,还要经受意外的考验,接受无效的或不合理的数据,这样软件才能具有较高的可靠性。

  • 判定表 等价类划分法和边界值分析方法比较适合输入变量或输入条件相互独立的情况,但是当输入变量或输入条件相互依赖、相互制约的时候,采用等价类划分法和边界值分析方法是难以描述的,测试效果也很难保障,而判定表驱动法就是为了解决这类问题。

  • 因果图法 当输入条件过多时,使用判定表会产生大量测试用例,而且也不能覆盖条件之间的先后关系,因果图法就解决了这个问题。

3.白盒测试

白盒测试又称结构测试,透明盒测试,逻辑驱动测试或基于代码的测试。 白盒测试的目的: 通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设置检查点,检查程序的状态,以确定实际运行状态与预期状态是是否一致。 白盒测试方法: A 静态分析 是一种不执行程序而测试的技术。主要目的是检查软件的表示和描述是否一致。 B 动态分析 当软件系统在模拟或真实的环境中执行前、过程中和执行后,对其行为分析。它显示了一个系统在检查状态下是否正确。在动态分析技术中心,最重要的技术是路径和分支测试

  • 语句覆盖 使程序中的每个可执行语句都能执行一次的测试用例

  • 分支覆盖 在对于判断语句,在设计用例的时候,要设计判断语句结果为true和false的两种情况

  • 条件覆盖 设计用例时针对判断语句里面每个条件表达式true和false各取一次,不考虑语句的计算结果

  • 分支条件覆盖 设计用例时,是的判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。

  • 条件组合覆盖 设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次。

  • 路径覆盖 覆盖程序中所有可能的执行路径

猜你喜欢

转载自blog.csdn.net/slave_of_life/article/details/130662150