我如何像真正的测试人员一样系统地测试和思考

     2023-03-12     5

关键词:

【中文标题】我如何像真正的测试人员一样系统地测试和思考【英文标题】:How do I systematically test and think like a real tester 【发布时间】:2010-08-10 06:36:37 【问题描述】:

我的朋友今天问了我这个问题。如何测试自动售货机并告诉我它的测试用例。我可以给出一些测试用例,但这些都是一些随机的想法。我想知道如何系统地测试一个产品或一个软件。有很多测试,如单元测试、功能测试、集成测试、压力测试等。但我想知道如何系统地测试和像真正的测试员一样思考?有人可以解释一下如何区分所有这些测试以及哪些测试可以应用于实际场景。例如测试文件系统。

【问题讨论】:

@Praveen S:可能。问题/主题非常主观 【参考方案1】:

即使是长期受人尊敬的专业测试人员也会告诉您:这是一门艺术,而不是一门科学。

我设计新测试用例的诀窍是从你提到的各种类型的测试开始,它必须包括所有这些才能彻底,但我试图找到我可以与代码/产品交互的所有方式的列表。

以自动售货机为例,里面和外面都有很多零件。

简单的测试,因为产品旨在工作,提供了大量的案例

它是否给出了正确的更改 处理请求的速度有多快 如果商品缺货怎么办 如果装满了怎么办 如果零钱抽屉已满怎么办 如果物品太大或架子不好怎么办 如果用户投入的钱太少怎么办 如果没有变化怎么办

还有一些有趣的案例,普通用户不会想到。

如果你想把它翻过来怎么办 给它一枚假币 从中窃取 用绳子把硬币放进去 给它有趣的变化 给它撕了一半的钞票 用撬棒撬开 喂它坏电源/掉电 在各种操作过程中关闭它

像测试人员一样思考的方法是找出可以攻击它的所有可能方式,从通常场景中的所有“有趣的案例”到完全不应该使用它的所有方法。任何输入点,包括您可能认为开发者/所有者可以控制的输入点,都是公平的游戏。

您还可以使用许多自动化测试工具,例如成对测试选择、基于模型的测试工具包,或用于软件的各种压力/负载和安全工具。


我觉得这个答案是一个好的开始,但我现在意识到这只是故事的一半。

想出可以测试系统的每一种方法很重要。你需要学习扩展你的想象力、你的问题分解技能、你对功能链/故障链的理解,以及你对正在测试的事物的领域知识。这就是我在上面试图提出的观点。有了正确的心态和足够的警惕,这些技能将开始迅速提高 - 一年内,或几年内(取决于领域的复杂性)。

成为一个非常称职的测试人员的第二个层次是确定你应该关心哪些测试。您将始终能够以多种不同的方式破坏每个系统。这些失败是否重要是一个更有趣的问题,而且往往更难回答。不过,回答这个问题有两个好处。

首先,如果您知道修复损坏的系统部分(或跳过修复它们!)很重要的原因,那么您就可以了解应该将精力集中在哪里。您知道在哪些方面可以花费更少的时间进行测试,以及必须在哪些方面花更多的时间。

其次,更重要的是,您将帮助您的团队揭示他们应该他们努力的重点。您将开始发现被称为“二阶未知数”的事物。你的团队不知道自己不知道什么。

帮助您完成此任务的主要技巧是始终问“为什么?”,直到您问的人被难住了。

一个例子:

问:为什么要进行这个测试?

答:因为我想使用系统中的所有功能。

问:为什么这个系统会这样运作?

答:因为程序员根据产品规格做出的决定。

问:为什么我们的产品规格要求这样做?

答:因为我们为其编写软件的公司要求软件以这种方式工作。

问:为什么我们要签约的那家公司将此作为一项要求添加?

答:因为他们的用户需要做:事情:

问:为什么用户需要做:thing:?

答:因为他们正在努力完成:xyz:

问:他们为什么要完成:xyz:

答:因为他们省钱:abc:

问:他们为什么选择:xyz:来解决:abc:?

答: ...好问题。

问:他们能做些什么呢?

答: ...现在我想起来了,有很多选择!也许其中一个效果更好?

通过练习,您将开始知道要问哪些具体的“为什么”问题,以及要关注哪些问题。您还将学习从更深的链条开始,并在您的方法中减少机械化。

这不再只是确保产品符合开发人员、产品经理、客户或最终用户提供的规格。它还有助于确定您提供的解决方案是否是您的团队可以提供的最高质量的解决方案。

其中一个隐藏的要求是,您必须了解,作为测试人员,您的一半工作就是始终提出问题。您可能认为您的团队成员会对此感到恼火,但希望我已经证明这对您的开发和您正在测试的产品的质量都至关重要。关心产品的聪明和好奇的队友(他们不忙和沮丧)会喜欢你的问题。

【讨论】:

@Merlyn 非常感谢您的出色回答。但是,如果给我大约 2000 行代码,例如文件系统或 Web 浏览器,因为文件系统需要从黑盒到白盒的大量测试。我应该如何处理它。根据您的回答,我应该使用读写等界面。但不仅如此。如果多个进程发出读取等,它是如何工作的 @brett:有很多关于测试的好书。您可能想从其中之一开始。至于“代码行”,您可以查看代码覆盖率等工具。我的回答更多的是让车轮转动,而不是试图详尽无遗。相信我,学习好的测试需要数年时间... @brett:这是一个有趣的测试书籍评论链接:testingreflections.com/node/view/1310 @Merlyn 你能推荐我任何关于测试的好书吗?我是 c/c++,我喜欢内核编程。 @brett:我没有读过任何一个,所以我不能给你一个好的答案。 “前四名”看起来像是开始寻找的好地方,从那里,您可以查看亚马逊上的评论。我一定要查看低星级评论和高星级评论,看看人们抱怨什么,以及这对我来说是否重要。【参考方案2】:

@brett: 假设你有你想要测试的系统。现在主要的事情是确保你有测试场景或测试计划。一旦你有了它,那么对你来说,如何以及测试系统的内容就变得非常清楚了。

一旦您制定了测试计划,您的愿景就会变得清晰,即一切都在预期之中,一切都在意料之外。对于意外行为,如果您认为不正确,您可以重新检查一次并提交问题。我在一般情况下给了你答案。如果您有真实世界的 scrnario,那么提供相关指南可能会很有帮助。

【讨论】:

如何像企业家一样思考

...会给你带来太多的好处。要想从中收获更多,你必须明白如何思考。设想一下,一个企业要不断地向前发展,应该怎么做?不难发现:首先,企业要有一个产品或服务。对大多数软件开发人员来说,卖的就是开发软件这项服务;... 查看详情

如何像使用“runserver”的非 https 连接一样轻松地测试与 Django 的 https 连接?

】如何像使用“runserver”的非https连接一样轻松地测试与Django的https连接?【英文标题】:HowcanItesthttpsconnectionswithDjangoaseasilyasIcannon-httpsconnectionsusing\'runserver\'?【发布时间】:2011-12-2219:32:30【问题描述】:我有一个使用“安全”co... 查看详情

敏捷交付中的自动化测试

...程,基础设施,可靠的测试数据,稳定干净的测试环境,如何呈现测试报告,如何工程化测试配置,测试套件等等。有了自动化测试还不够,我们的目的是在持续交付的过程中实现快速频繁的质量反馈,我们需要持续不断地测试... 查看详情

落在纸上的思考

...直接上手去做,那也是在动手的那前几分钟有了简单的、如何做的思路。即使我们可以做到不写文档、不写设计也能完成;就像这次测试一下,我心里很清楚这个系统的重点、难点、以及可能翻车的地方在哪,所以也就有了直接... 查看详情

测试人员只能点点点?深度剖析测试人员如何变得更优秀

深度剖析测试人员如何变得更优秀开篇说明困境反思突破总结开篇说明大家好呀,今天是圣诞节,该约会的人儿都约会去了。公司发了一个平安果,和家里人、闺蜜通过电话后,我就没有什么事儿做了。看着自己... 查看详情

性能测试--系统计数器与硬件分析

...(Performance Counter),也叫性能监视器。一个人健康状况如何,我们通过对其做各项体检获得相关的状况指标,如血压、心跳,肺活量等。那么在做性能测试过程中,整个系统的软硬件进行监控也必不可少,监控所获得的数据也... 查看详情

robotframework测试脚本编写思考

...测试脚本应该保持精简。精是一种修炼,简是一种风格。如何保持简洁性?最基础的就是不要冗余。脚本时效性的重要性,大家知道得不彻底。为什么说不彻底呢?因为工作过程中有发现挺多测试人员有个错误的观念:我一个sui... 查看详情

.env for jest 和 nest 不一样

...:.env,但第二个测试使用了错误的文件.env.development。我如何在嵌套 查看详情

如何做好功能测试,提升测试质量和效率?(测试人员必知)

...提升,业务越来越复杂,迭代周期越来越快,如何做好提高功能测试质量?是很多技术负责人或者测试人员面对的问题。下面针对自己经验,分享一下功能测试精髓。一、功能测试面临的问题1、测试关联度复... 查看详情

测试报告

转载: 测试总结和报告       测试人员的工作通常并不像开发人员那样能直接体现出来,让大家一目了然。开发人员做的是建设性的工作,如开发了哪些功能,写了几行代码,设计了几个类,都能直... 查看详情

测试工程师竞争力

...要具体执行到什么程度;2.测试需要借助于什么工具;3.如何运用自动化测试以及自动化测试框架,以及如何选型;4.测试人员资源如何合理分配;5.测试进度如何安排;测试风险如何应对。培养出色的测试策略设计能力,不是一... 查看详情

软件测试--入门7软件测试外围知识

...解不同角色的技术、框架、思想,从不同的角度思考如何发现漏洞、攻破软件系统。测试者:测试人员的主导角色,用什么方法有目的的、有条理的、系统的、全面的验证系统功能和非功能要求用户:软件系统的... 查看详情

如何有效地提高瞬断线束测试仪的精确度和灵敏度?

...标准要求。为了方便工作人员的日常操作,让我们看一下如何提高瞬断线束测试仪的精确度和灵敏度。瞬断线束测试仪能够快速、准确地检测出断电情况,以及其他各项参数,如绝缘电阻、导通电阻、耐压性等,设备通常连接计... 查看详情

落在纸上的思考

  最近在开发一个系统,在系统开发完成进入测试阶段时,作为一个开发人员惯性思维就是”直接上手测试“,    现在因制度的要求,在测试前必须先编写测试文档,于是就尝试着以测试人员的眼光来看... 查看详情

jmeter如何和charles进行接口测试

  什么是接口测试,接口测试到底如何开展,我相信任何一个软件测试人员都会有这样的疑问,这里我以接口测试自动化平台的登录接口进行讲解。一、什么是接口测试?  接口测试是测试系统组件间接口的一种测试。接口... 查看详情

测试思维htsm模型

...需要HTSMHTSM中指导性词汇是测试的指南,其作用不是教导如何具体地测试,而是启发测试人员的思维,发掘测试对象和测试策略,重点在于"启发式"。HTSM对于测试设计的意义:(1)测试设计以风险驱动。测试人员分析质量标准、... 查看详情

软件测试人员应具备的素质

1、端正对软件测试工作的认识职业教育(认为不能发现所有错误,责任心不够),总结测试经验(认为测试工作无创造性,枯燥),测试是技术和经验的总结(认为技术比开发人员差)。软件测试的任务是站在使用者的角度上... 查看详情

如何简单设计接口测试用例

...、传递、和控制管理过程以及系统间的相互依赖关系等。如何设计接口测试用例?首先,明确出发点,和所有的测试一样,接口测试出发点是你要证明所测的程序是错误的。以这个出发点为导向,你的设计行为就会尽量朝这个方... 查看详情