在发布到QA之前测试您的代码

时间:2010-06-16 13:14:34

标签: testing qa

我听过开发人员说编写代码的人不应该是测试代码的人。我在这种情况下寻找人们的经验。很多时候我已经完成了我的开发,然后发布到QA部门并将代码发回给我,因为应用程序的某些方面由于我的编码被打破了,无论我之前测试了多少QA发布。

此主板上的任何人都有一个可以遵循的流程,这使他们能够在发布到QA之前彻底测试他们的代码吗?

10 个答案:

答案 0 :(得分:20)

开发人员通常从内到外工作,重点关注代码:

  • 断言 - 验证数据流和结构
  • 调试器 - 验证代码流和数据
  • 静态分析仪 - 验证编码标准并查找已知错误
  • 单元测试 - 验证每项功能
  • 集成测试 - 验证子系统
  • 系统测试 - 验证功能
  • 回归测试 - 验证缺陷是否保持不变
  • 安全测试 - 验证系统无法轻易穿透。

另一方面,测试人员通常从外部开始工作,专注于功能:

  • 验收测试 - 验证最终用户要求
  • 场景测试 - 验证真实情况
  • 全球测试 - 验证可行输入
  • 回归测试 - 验证缺陷是否保持不变
  • 可用性测试 - 验证系统易于使用
  • 安全测试 - 验证系统无法轻易穿透
  • 代码覆盖率 - 测试未触及的代码
  • 与先前版本的兼容性
  • 寻找怪癖和毛边。

最终用户通常从外部随意工作:

  • 验收测试 - 验证最终用户要求
  • 场景测试 - 验证真实情况
  • 可用性测试 - 验证系统易于使用
  • 寻找怪癖和粗糙的边缘。

答案 1 :(得分:5)

开发人员应该始终对自己的代码进行测试,以确保它能够正常工作。

QA团队将在那里进行测试,因为最终用户会做/找到开发人员根本没想到的事情。

答案 2 :(得分:3)

有趣的问题。我会尝试从测试人员的角度给你一个很好的概述。

如果我得到一个版本,我会期望在单元测试级别测试代码以检查一些基础知识。这意味着当我输入一些基本的边界值检查时,它不会倒下。例如:如果一个字段接受0-100,那么它应该优雅地处理101和-1。

这是一个简单的例子。我想当人们说你不测试自己的代码时,他们指的是通常由经过培训的测试人员完成的传统测试阶段。这并不意味着它不应该在单元级别进行测试。我也提倡手动测试它,甚至只是为了检查它是否执行基础知识。

当我编写代码时,我会编写单元测试,集成测试(如果可能的话)并明确地手动测试它的基础知识。但问题是我编写的测试代码永远不会像其他人测试它那样有效。我对代码的假设和想法可能意味着我跳过或忽略位。我可能会假设太多。太过于理所当然。想想我知道代码的作用。专业测试人员将避免这些假设,因此经常会发现您可能找不到的缺陷。

一名优秀的测试人员还将检查边缘情况,可用性和整个有趣的领域。

这里留下了一条评论,规格可能含糊不清,因此从中编写测试非常棘手。但作为一名测试人员,我也建议不要让编码变得棘手吗?

根据我的经验,将开发人员和测试人员配对以编写单元测试非常值得。这是一个惊人的景象,覆盖范围广泛,非常好。

干杯 罗布..

答案 3 :(得分:2)

开发人员应该根据给出的规范测试代码。经常发生的事情是,规范可能不清楚或被误解,并且由执行QA的其他人解决,这通常意味着给开发人员规范验证实现执行了它应该做的事情的那些,以及如果不是,那就是发现不匹配并送回来修理的时间。

答案 4 :(得分:2)

开发人员测试她的代码,以确保代码执行开发人员认为应该执行的方式。

QA团队测试代码以确保代码执行QA团队认为他们在文档中读取的方式。

QA团队不只是测试代码。 QA团队测试相关方(客户,开发人员,QA,管理层等)之间的沟通效果。

答案 5 :(得分:2)

重新说:“我听过开发人员说编写代码的人不应该是测试代码的人。”

如果他们没有测试,他们怎么知道它是否有效?真正的答案是,“编写代码的人不应该是测试代码的人”。确实,作为开发人员,我们对自己的代码有一些盲点(“我知道我没有触及那个代码,所以不需要测试它......”)需要帮助。

理想情况下,每个可测试单元都应进行单元测试。编写这些单元的开发人员通常会编写单元测试,但不一定是这样。但单元测试只是故事的一部分。应该使用测试专业人​​员进行集成和系统级测试。

答案 6 :(得分:1)

我的经验法则是每个返回值的方法的单元测试。一旦你全部成为绿色,就会进入QA。

是的,QA可能仍会发现缺陷。毕竟,他们的工作是思考和测试你没有考虑的情况。一般来说,我认为在第一次迭代中没有问题的代码直接通过QA是不可能的,当然也不常见(除了错误修复和非常小的更改)。

答案 7 :(得分:1)

1)是的,作为开发人员,您需要编写大量的单元测试。这些将帮助您在将其发布给QA团队之前在周期的早期发现错误。

2)是的,作为开发团队,您还需要进行系统集成测试,以确保您的组件不会破坏其他现有功能。

答案 8 :(得分:1)

以下是一些确保代码正常运行的想法 完成任务。我不建议每一个都严格执行这些操作 微小的任务,而是使用以下作为清单给你的想法。不同的任务需要不同的检查量。

在开始实际编程之前:

  • 创建初始测试用例
  • 估计可能会破坏的内容

编码时:

  • 自动填充符号名称
  • 突出显示符号名称以检查它们是否相同
  • 冷静地打字以避免拼写错误
  • 一次编码少量数据
  • 问你的同龄人
  • 参与结对编程
  • 记下更多测试用例
  • 进一步估计会破坏的内容
  • 使用优质OOD和清洁代码
  • 了解代码
  • 将代码保留一段时间(天)并返回审核
  • 为持久数据运行差异以确保其正确更改
  • 检查错误的语法检查程序
  • 语法检查器,以避免不当行为并强制执行编码标准
  • 单元测试
  • 自动功能测试
  • 手动功能测试
  • 输出验证

提交之前:

  • 更新工作副本并运行所有测试和验证
  • 调试程序运行
  • 拼写检查
  • 差异比较发生了什么变化
  • 同行评审
  • 估计可能会破坏的内容

集成服务器

  • 语法检查程序
  • 自动测试和验证
  • 烟雾测试
  • 同行评审通知

发布到质量保证:

  • 在暂存区域中运行测试
  • 验证输出
  • 通知QA完成任务并发送破损估计值

其中一些可以自动完成对文件的每次保存 编辑。通常我至少映射一个错误检查语法linter,以便在保存文件时运行。

答案 9 :(得分:0)

作为开发人员,您可以在某种程度上测试您的代码,如:

  • 模块完全膨胀后的单元测试
  • 完成两个或多个模块集成后的集成测试。

系统测试也可以在某种程度上完成。 QA的主要工作是找出用户要求并相应地检查系统。此外,QA实际上用于检查代码,因为可以找到越来越多的错误。

用户验收测试也可以通过QA以更系统的方式完成,因为他们对用户的实际需求有所了解。据说“第三人可以从你的代码中找出比你更多的错误”。因此即使开发人员彻底测试他们的代码,QA也是必须的。