Questions tagged «testing»

根据软件系统的预期行为来验证该软件系统的行为。


5
是否有对所有公开进行存根和模拟的单元测试的意义?
当以“适当”的方式进行单元测试时,即对每个公用电话进行存根并返回预设值或模拟,我觉得我实际上并没有进行任何测试。我从字面上看我的代码,并基于通过公共方法的逻辑流创建示例。每次实现更改时,我都必须再次更改那些测试,而不是真的感觉自己正在完成任何有用的事情(无论是中期还是长期的)。我也进行集成测试(包括不愉快的路径),我并不介意增加测试时间。有了这些,我觉得我实际上是在测试回归,因为它们已经捕获了多个,而单元测试所做的只是告诉我,我已经知道,公共方法的实现已更改。 单元测试是一个广泛的话题,我觉得我是一个不了解这里内容的人。与集成测试(不包括时间开销)相比,单元测试的决定性优势是什么?

8
测试人员竞相看看谁打开了更多的漏洞,这很好吗?
我是软件开发人员。有一组测试人员,他们遵循并运行由分析师编写的测试用例,但也执行探索性测试。似乎测试人员一直在竞争,看看谁可以打开更多错误,而且我注意到错误报告的质量下降了。除了测试功能和报告与软件操作有关的错误外,测试人员还提交了有关屏幕增强,可用性或愚蠢错误的错误。 这对项目有好处吗?如果不是,我(作为软件开发人员)如何尝试改变测试人员团队的想法和态度? 另一个问题是,由于截止日期是估计的并且无法更改,因此随着截止日期的临近,测试人员将争先恐后地完成他们的测试用例,这将导致测试质量下降。这将导致合法的错误出现在客户端收到的最终产品中。 OBS:此竞赛不是公司的惯例!这是仅由他们组织的测试人员之间的竞赛,没有任何奖项。

6
测试多线程竞争条件
阅读对此答案的评论,特别是: 仅仅因为您不能编写测试并不意味着它没有坏。未定义的行为通常会按预期方式起作用(C和C ++充满了),竞争条件,由于内存模型弱而可能重新排序... – CodesInChaos 7小时前 如果无法复制@CodesInChaos,则也无法测试写入“修复”的代码。在我看来,将未经测试的代码付诸实践是更糟糕的罪行– RhysW 5小时前 ...让我想知道是否有任何好的通用方法来持续触发由测试用例中的竞争条件引起的生产问题中很少发生的问题。

11
如何测试关键生命或死亡系统中使用的软件?
相对于例如网站,飞机是一种系统,其中某些系统中的任何故障都是完全不能接受的,因为例如飞行监控中的错误会导致自动驾驶仪发生故障并进行潜水。显然,这不会发生,因为波音和空中客车公司的才华横溢的工程师已经在自动驾驶仪中进行了检查,以确保它不会突然决定潜水是一种完全可以接受且安全的动作。或者,也许计算机崩溃了,而新型电传飞行飞机的飞行员实际上无法再驾驶飞机。当然,这些系统中内置了各种安全程序和冗余来防止(软件和飞机)坠毁。 但是,另一方面,很明显,该软件并不是完美的-开源软件和闭源软件都经常崩溃,并且只有最简单的“ Hello World”程序不会失败。在航空,医疗和其他生死攸关的行业中设计软件系统的工程师如何管理他们的软件,以确保软件不会失败(如果失败,至少可以正常地失败)? 我非常希望你们不会全部离开:“哦,我为波音/空中客车公司(或其他公司)工作,但事实并非如此!在您下次的航班/医院访问中玩得开心。”
51 testing 

3
断言或单元测试更重要吗?
断言测试和单元测试都充当代码库的文档,并且是发现错误的一种手段。主要区别在于,断言充当健全性检查并查看实际输入,而单元测试则在特定的模拟输入上运行,并且是针对单个明确定义的“正确答案”的测试。使用断言与单元测试作为验证正确性的主要方法有哪些相对优点?您认为应该重点强调哪个?

15
几乎每个报告的错误都是高优先级错误[关闭]
我在处理多个软件项目时注意到一种模式:报告的大多数错误都具有高/非常高的优先级。我问了一些同事为什么会发生这种情况,他们提到如果一个bug的优先级不高,那么该Bug很少会引起开发人员的注意,这确实是有道理的。 因此,我想知道这个问题是否很普遍,或者我是否运气不好。我在Google上进行了快速搜索,发现一些团队实施了错误报告指南或拥有单独的“错误分类”团队。如果您已经面对并解决了这个问题,那么对您有用的方法是什么? 该问题专门针对“优先通胀”问题:如果您遇到这种情况,那么采取哪些措施可以有效解决此问题。


11
自动化测试的缺点是什么?
这个站点上有许多问题,可以提供有关自动测试可以带来的好处的大量信息。但是我没有看到代表硬币另一面的东西:缺点是什么?生活中的所有事情都是折衷方案,没有万灵药,因此,一定有一些正当理由不进行自动化测试。这些是什么? 以下是我提出的一些建议: 给定功能需要更多的初始开发时间 需要团队成员更高的技能水平 增加工具需求(测试执行者,框架等) 遇到失败的测试时,需要进行复杂的分析-该测试是由于我的更改而过时还是在告诉我我做错了? 编辑 我应该说我是自动化测试的坚定支持者,并且我不希望这样做。我想了解缺点是什么,所以当我去公司提出理由时,我看起来好像并没有扔下一个想象中的银弹。 另外,我明确地是不希望有人对我的上述示例提出异议。我确实认为必须存在一些不利因素(所有因素都需要权衡),我想了解它们是什么。

5
如果我已经有集成测试,是否需要单元测试?
如果我已经对我的程序进行了集成测试,并且都通过了测试,那么我有很好的感觉,它可以工作。那么编写/添加单元测试的原因是什么?由于无论如何我都必须编写集成测试,所以我只想为集成测试未涵盖的部分编写单元测试。 我知道单元测试优于集成测试的好处是 体积小,因此运行速度快(但是,通过集成测试已经测试了添加新单元以测试某件东西,这意味着我的总体测试服变得越来越大,并且运行时间更长) 由于只测试一件事,因此更容易找到错误(但是,当我的集成测试失败时,我可以开始编写单元测试来验证每个单独的部分) 查找集成测试中可能未捕获的错误。例如掩盖/抵消错误。(但是,如果我的集成测试通过了所有测试,这意味着即使存在一些隐藏的错误,我的程序也可以运行。因此,找到/修复这些错误并不是真正的高优先级,除非它们开始破坏未来的集成测试或引起性能问题) 而且,我们总是希望编写更少的代码,但是编写单元测试需要更多的代码(主要是安装模拟对象)。我的一些单元测试和集成测试之间的区别在于,在单元测试中,我使用模拟对象,而在集成测试中,我使用真实对象。其中有很多重复项,即使在测试中,我也不喜欢重复的代码,因为这会增加更改代码行为的开销(重构工具无法始终保持所有工作)。

7
软件测试方法是否依赖有缺陷的数据?
在软件工程中众所周知的一个事实是,修复漏洞的成本在发现漏洞的开发后期呈指数增长。这由Code Complete中发布的数据支持,并已在许多其他出版物中进行了修改。 但是,事实证明该数据从未存在过。Code Complete引用的数据显然没有显示出这样的成本/开发时间相关性,而相似的已发布表格仅在某些特殊情况下显示了相关性,而在其他特殊情况下则显示了平坦的曲线(即成本没有增加)。 是否有任何独立数据可以证实或反驳? 并且如果为真(即,如果根本没有数据可以为后来发现的错误提供成倍的成倍的成本支持),那么这对软件开发方法有何影响?

14
如何更好地测试自己的代码
我是一个相对较新的软件开发人员,我认为我应该改进的一件事是测试自己的代码的能力。每当我开发一项新功能时,我都会发现很难遵循所有可能的途径,以便发现错误。我倾向于遵循一切正常的道路。我知道这是程序员遇到的一个众所周知的问题,但是我们现任雇主没有测试人员,而我的同事们似乎在这方面做得很好。 在我的组织中,我们既不进行测试驱动的开发,也不进行单元测试。这将对我有很大帮助,但这不太可能会改变。 你们认为我可以做些什么来克服这个问题?测试自己的代码时使用什么方法?
45 testing 


4
是否应该将测试数据检查到版本控制中?
我正在为处理PDF文件的功能编写一些测试代码。测试背后的基本思想是,将它们指向我专门选择的一些PDF,它们会对其进行处理,然后检查输出是否符合我的期望。 我的问题是:我应该在哪里存储这些大尺寸的PDF?我应该将它们与代码一起检查到版本控制中吗?还是将它们放在其他地方?显然,没有PDF(甚至不同的PDF)的测试代码是没有用的,但是仍然将它们放入我们的存储库中仍然感觉不对。

9
您的孩子在TDD中的表现如何?
今天,我们正在培训TDD,发现了以下误解。 该任务是针对输入的“ 1,2”返回数字总和为3的。我用C#编写的是: numbers = input.Split(','); return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct 但是其他人更喜欢用其他方式。首先,对于输入“ 1,2”,他们添加了以下代码: if (input == "1,2") return 3; 然后,他们为输入“ 4,5”引入了另一个测试,并更改了实现: if (input == "1,2") return 3; else if (input == "4,5") return 9; 之后,他们说“好的,现在我们可以看到模式了”,并执行了我最初所做的工作。 我认为第二种方法更适合TDD定义,但是...我们应该对此严格吗?对我来说,如果我确定我不会跳过任何步骤,则可以跳过琐碎的婴儿步骤并将其合并为“ twinsteps”。我错了吗? 更新。我没有弄清楚这不是第一个测试,所以犯了一个错误。已经有一些测试,所以“返回3”实际上并不是满足要求的最简单的代码。
37 testing  tdd 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.