如何充分利用手动测试仪

时间:2008-10-08 18:31:56

标签: testing qa manual-testing

作为一名学生,我刚刚完成了第一份作为手动测试员的合作工作。我知道这是一个知识分子,要求一个编码员的工作,但我不禁想到相反的方式。我喜欢当编码员,但这是我的第一份工作。因此,我要求您就如何充分利用手册黑盒测试工作提出任何建议,即如何使用它来提高我的编码技能。非常感谢。

14 个答案:

答案 0 :(得分:6)

测试有时比开发更具挑战性和回报。在团队中,我与很多最优秀的开发人员一起来自测试工程师背景。

首先,这项工作可以为您提供有关发展前景的独特视角。一些开发人员认为测试人员的意思和挑剔,并在完美的代码中找到问题。一些测试人员认为开发人员是懒人,并且对半熟代码感到满意。

从围栏两侧看情况绝对是值得拥有的经验,因为它会减少你职业生涯后期的误解和误解。

所有测试人员都要编写测试用例。测试用例非常棒,因为它们可以帮助您思考系统的功能,而不是类及其方法和属性等。编写软件的目的是制作出有用的软件,而不是通过编码技能实现卓越。因此从这个角度考虑你的应用肯定是有帮助的。现在编写测试用例将帮助您以后编写好的架构文档。

你可以把你的团队/公司推向测试自动化。有时这会失败,因为测试人员不知道如何编写自动化代码并尝试使用记录和播放界面。但是如果你真的能够对测试进行编码,那么你就有更大的成功机会。请注意,自动化是重要的努力,不应掉以轻心。经典书籍说,努力加倍,然后手动测试与自动化并行完成。我倾向于同意。

答案 1 :(得分:6)

自动化手动测试时经常做的简单事情。这并不总是意味着实际测试,在大多数情况下,自动化功能测试变得更加困难,您从代码中获得的距离越远,您越接近界面和人脑,您的时间越少。

所以例如;在测试时你需要复制文件并输入一些值来运行软件吗?自动化。您是否需要在数据库中填充数据以帮助您进行测试?自动化。一旦简单的东西自动化并且运行顺畅,你就可以解决更难的问题。

另一点建议是阅读并理解修复您发现的错误的源代码提交(如果可能)。你可以通过这种方式学到很多东西。

答案 2 :(得分:4)

尝试将其打破为编码器:)

Sql Injection,脚本注入等等:) 它应该让它变得更有趣:)

答案 3 :(得分:4)

在规划期间:

  • 花时间了解功能规格或更改指定区域的请求。您的编程知识为您提供了优势。
  • 质疑矛盾和漏洞。希望您在开发仍在进行中时可以访问设计文档。在测试开始之前,我经常通过质疑不清楚的设计文档来确定产品中的问题。
  • 仔细考虑所有边界情况,负面情况和条件组合。如有疑问,请与开发部门合作。您不需要知道他们使用的实际代码,但您的编程背景将帮助您编写直通测试模型。
  • 不要担心自动化。每个新的测试人员都会进入并看到一百种方法来改进测试,自动化通常位列榜首。对于黑盒测试唯一应该自动化的是一些测试设置,如果它是一个耗时的操作,与被测试的功能无关。 (例如,在学习管理系统(LMS)中自动创建20个课程以测试自学注册方案。课程创建不是重点,因此可以节省几个小时的盲目工作。)可以询问自动化,但不要以为你是第一个想到它的人。

测试期间:

  • 撰写清晰,详细的特定错误报告。如果有人在您的代码中发现错误,请考虑您想要的所有信息。将问题分解为始终破坏它的最小特定操作。包括重新创建的步骤和测试数据的示例。
  • 当您发现问题时,请尝试通过测试损坏函数的替代方法来缩小问题范围。 (简单的例子,在基于浏览器的产品中,使用关闭按钮关闭对话框时会出错。当您关闭窗口关闭按钮(X)时,是否也出现错误?无论答案是什么,请将其包含在错误中报告。
  • 很好。测试人员和程序员在同一个团队中。如果开发人员看起来像一个不懂你所说的任何东西的白痴,请备份并假设你是那个不理解的人。它可以节省很多痛苦并迅速改变你的态度。当你谦虚和受教时,沟通会更容易。

答案 4 :(得分:3)

几年前我和你一样处于同样的位置,而且对于我来说,在编码时,测试人员会帮助我很多,但如果没有你注意到它,就会发生这种情况。

大多数情况下,您会对用户输入,孤立链接等更加谨慎,通常您会更加详细。根据我的经验,这是一个非常好的位置,我认为它肯定改变了我的编程风格

答案 5 :(得分:2)

也许你可以尝试自动化一些测试?

编写一些脚本,为手动测试准备应用程序(启动,登录,加载测试数据集等),

编写一些回归脚本,将以前版本的输出与您正在测试的版本的输出进行比较。

答案 6 :(得分:2)

如果您被雇用进行手动测试,那么您应该关注这一点。

自动化测试非常棒,如果您的公司没有这样做,他们确实应该这样做。但是,你不是在告诉他们如何经营他们的业务。任何工作的首要任务是完成指定的工作。在入门级别尤其如此。

我建议如何使这种学习体验能够帮助您成为开发人员未来的职业生涯,并注意到您在其他人的代码中发现了哪些类型的问题。了解常见错误可以帮助您避免在自己的代码中使用相同的错误。

例如,一些错误只是编码错误,例如在循环数组时被一个错误。其他是误解的要求,高级设计中的缺陷,或未能检查意外/无效输入。

此外,在报告错误后尝试跟踪开发人员,以尝试获取有关问题根本原因的更多信息,他们如何修复问题,以及对项目的影响。请注意这一点:程序员和QA测试人员往往有一种敌对关系。他们不会喜欢你告诉他们他们的东西不起作用,特别是高级别的东西。确保他们知道你正试图从中学习,而不是批评。如果可能的话,从开发人员中选择一个“导师”来帮助完成这一部分。这样你就有一个主要联系人希望与你进行这种对话。

你可以从这个合作社中得到的主要内容是看看软件开发是如何在现实世界中完成的。作为测试人员,您将有机会看到比起入门级开发人员更多的“全局”,这在您刚开始时非常有用。

如果您认为自己拥有这家公司的未来,无论是在QA还是作为程序员,这都是了解其产品和行业的好机会。最好的程序员不仅仅是头朝下的小猴子。他们不仅知道他们的代码是做什么的,而且知道为什么,以及如何使付钱使用它的人受益。

祝你好运。

答案 7 :(得分:2)

你可以:

  • 学会隔离问题。当你发现一个bug时,试着找到重现这个bug的最小动作子集 - 程序员会为此感谢你,你将学会一套重要的技能。

  • 学会正确沟通技术问题。编写一份详细的错误报告需要很多技巧。

  • 学会根据极限情况和系统的扭曲使用进行思考。这将使您稍后编写更好的单元测试。

我真的相信所有程序员 - 包括高级程序员 - 都应该花一些时间每年进行一次手动测试,如果只是从不同的角度看问题,并获得对他们合作的测试人员的尊重(我把它放在那里)在实践中我自己)

答案 8 :(得分:1)

除了有关自动化的内容之外,请确保您对整个生命周期表现出兴趣。有可能您在测试中找到的任何内容都没有在需求中正确记录,并且在您看到它之前没有进行适当的单元测试或集成测试。你可以采取的任何措施来帮助改善早期的事件链,这将有助于教育你,让每个人的生活更轻松。

注意自我,并在找到它们时小心行事。

答案 9 :(得分:1)

如果它与网络相关,请找到其中一个框架,您可以在其中编写击键脚本和/或鼠标点击以进行某种虚假单元测试。它会提高你的工作效率,你可以成为一个忍者,使用它来获得你真正需要测试的东西,而不必处理它之前的五十页。

它可能会让你的脚踏上自动测试的大门,如果你给人们留下深刻的印象,你可能会进入开发部门,因为很明显你可以很好地编写脚本。

答案 10 :(得分:0)

学习*单元框架并随时插入不同的案例。

答案 11 :(得分:0)

多任务和练习编程你的每一秒。当我有一个无聊的工作维护一些狡猾的旧Perl构建脚本时,任何时候我都没有工作,我正在学习更高级的Perl,查找新算法,在Haskell中编写原型等。

答案 12 :(得分:0)

1)学习全面分析测试结果。不要忽略任何测试结果。最终测试结果可能是“通过”或“失败”,但是对“失败”的根本原因进行故障排除将为您解决问题。如果测试人员不仅记录错误,还提供解决方案,那么他们将受到尊重。

2)每次您测试任何应用程序时,都要学会最大限度地扩大测试范围。可能无法实现100%的测试覆盖率,但仍然可以尝试接近它。

3)为了确保最大的测试覆盖范围,请将被测应用程序(AUT)分成较小的功能模块。在这样的单个单元模块上编写测试用例。另外,如果可能,请将这些模块分成较小的部分。 例如:假设您已将网站应用程序划分为模块,并且“接受用户信息”是模块之一。您可以将“用户信息”屏幕分成较小的部分来编写测试用例:UI测试,安全性测试,“用户信息”表单的功能测试等部分。

在输入字段上应用所有表单字段类型和大小测试,否定测试和验证测试,并编写所有此类测试用例以实现最大覆盖。

4)在编写测试用例时,首先要为预期功能编写测试用例,即根据要求为有效条件编写测试用例。然后为无效条件编写测试用例。这将涵盖被测应用程序的预期以及意外行为。

5)积极思考。为了发现错误/错误而开始测试应用程序。事先不要认为应用程序中不会有任何错误。如果您以发现错误为目的对应用程序进行测试,那么您肯定也会成功找到那些细微的错误。

6)在需求分析和设计阶段本身中编写测试用例。这样,您可以确保所有需求都是可测试的。

7)在编码之前,将测试用例提供给开发人员。不要以为可以记录更多的错误,不要等待测试用例等待最终的应用程序发布以进行测试。让开发人员彻底分析您的测试用例,以开发高质量的应用程序。这样也可以节省返工时间。

8)如果可能,请确定您的测试用例并进行分组以进行回归测试。这将确保快速有效的手动回归测试。

9)应彻底测试要求关键响应时间的应用程序的性能。性能测试是许多应用程序的关键部分。在手动测试中,这是测试人员最常忽略的部分,因为在性能测试中缺少所需的大数据量。找出测试应用程序性能的方法。如果无法手动创建测试数据,请编写一些基本脚本来创建用于性能测试的测试数据,或要求开发人员为您编写一个。

10)程序员不应测试自己的代码。正如我们之前的文章所讨论的那样,已开发应用程序的基本单元测试应足以使开发人员为测试人员发布应用程序。但是,您(测试人员)不应强迫开发人员发布产品进行测试。让他们度过自己的时间。从领导到经理的每个人都知道何时发布模块/更新以进行测试,并且他们可以据此估算测试时间。这是敏捷项目环境中的典型情况。

11)超出需求测试。对应用程序进行不应做的测试。

12)在进行回归测试时,请使用先前的错误图(错误图–不同模块的错误数随时间变化)。此模块式错误图表可用于预测应用程序中最可能出现的错误部分。

13)记下新术语,即您在测试中学习的概念。测试任何应用程序时,请保持文本文件处于打开状态。记下测试进度和其中的观察结果。在准备最终测试发布报告时,请使用这些记事本观察结果。这个好习惯将帮助您提供完整的测试报告并发布详细信息。

14)很多时候,测试人员或开发人员在被测应用程序的代码库中进行更改。这是开发或测试环境中的必需步骤,以避免像银行项目中那样执行实时交易处理。记下为测试目的所做的所有此类代码更改,并在最终发行时确保已从最终客户端部署文件资源中删除了所有这些更改。

15)让开发人员远离测试环境。这是检测发行或部署文档中缺少的任何配置更改所必需的步骤。有时,开发人员会进行一些系统或应用程序配置更改,但是忘记在部署步骤中提及这些更改。如果开发人员无法访问测试环境,他们将不会在测试环境上意外地进行任何此类更改,并且这些丢失的内容可以在正确的位置捕获。

16)良好的做法是让测试人员直接参与软件需求和设计阶段本身。通过这些方式,测试人员可以了解应用程序的可靠性,从而获得详细的测试范围。如果不要求您参加此开发周期,则可以向主管或经理提出要求,让测试团队参与所有决策过程或会议。

17)测试团队应与组织中的其他团队共享最佳测试实践和经验。

18)增加与开发人员的对话,以进一步了解该产品。尽可能进行面对面的沟通,以快速解决争端并避免任何误解。而且,当您了解要求或解决任何争议时,请务必通过电子邮件等书面交流方式进行交流。不要保持口头表达。

19)不要浪费时间来执行高优先级的测试任务。从高优先级到低优先级排列测试工作的优先级,并相应地计划工作。分析所有相关风险以优先处理您的工作。

20)编写清晰,描述性明确的错误报告。不仅提供错误症状,还提供错误的影响以及所有可能的解决方案。

别忘了测试是一项富有创造性和挑战性的任务。最后,这一切都取决于您如何应对挑战。

交给您

在下面的评论中分享您自己的测试经验,技巧或测试秘密肯定会使本文变得更有趣,更有用!

答案 13 :(得分:0)

测试比开发更具挑战性,因为自动化测试员是具有开发和测试知识的SDET(测试中的软件开发工程师)。他们将更多地了解用例和场景。因此,尝试实时自动化方案,例如,方案:             1.启动Gmail网站。             2.登录到Gmail。             3.单击撰写。             4.起草带有附件的邮件,然后发送给某人。             5.注销 因此,在这里,您可能会想到几个问题:我应该使用哪个框架,我应该使用哪个自动化工具,以及将某些邮件附加到邮件上都不基于Web,因此我们需要依靠其他自动化工具来处理非html或基于窗口的自动化。

这样,您可以开始切换到自动化。我们只是在自动化与手动和重复执行的场景相同的场景。

当您开始编写测试脚本时,将自动提高您的编码技能。

这是根据我的经验。如果您希望使用Java学习Selenium,我可以为您提供材料。

相关问题