系统测试的操作顺序?

Order of Operations for System Testing?

我昨天参加考试,我注意到他们问了以下发生的顺序(我会把我认为的顺序放在这里):

  1. 单元测试(总是先写你的单元测试!)
  2. 集成测试(在你有一些代码并且它可以与其他代码/系统一起工作之后)
  3. 验证测试(使您的数据保持一致状态并确保没有输入错误数据)
  4. 用户/验收测试(一切都是关于用户的,否则我们为什么要首先构建一个系统?)

这样对吗?

我个人认为负载测试或数据库调优应该放在最后,但没有在测试中。

不是验证测试,系统测试是正确的词。数据库测试是集成和系统测试的一部分。还将在系统和用户验收测试阶段执行负载测试。

这个问题没有多大意义。

一方面,不同的人对您提到的几乎每一种测试都有不同的定义。例如,在极限编程 (XP) 中 Acceptance Tests(同时源自用户故事)与用户测试或用户验收测试 (UAT) 无关。使用 XP 定义,验收测试指的是 运行 在代码使它靠近用户之前在构建代理上进行的自动化测试。另一方面,用户验收测试 (UAT) 通常是一个手动过程,在创建建议的最终版本并将其部署到 UAT 环境后发生。

正如评论中已经指出的那样,验证测试并不是一个具有广泛接受定义的通用概念。集成测试对不同的人也意味着不同的事情。对于某些人来说,它正在测试不同的 processes/applications 是否可以协同工作(例如,在 UAT 环境中)。对于其他人来说,它只是涉及多个 class 的自动化测试,即不是单元测试。

另外,"order"是什么意思?您是指测试的编写顺序,还是在将代码发布到野外 and/or 生产环境之前 运行 的顺序?

无论如何,这个问题在现实世界中基本上是无关紧要的,因为不同的流程适用于不同的团队。例如,我自己总是会在任何单元测试之前编写验收测试。按照测试优先的方法,您总是在修改 class 之前编写单元测试,是吗?那么为什么不在修改整个系统之前编写验收测试呢?

如果 "Acceptance Testing" 表示任何接近验收测试的 XP 定义,那么我认为将其放在最后是没有意义的。

这听起来像是 "exam question" 的那种,只有在你考试前所学课程的背景下才有意义。如果没有所有这些信息(特别是每种测试的定义),很难为这个问题提供有用的答案。