我正在自己建立一个个人项目。 (Java后端,Java AWT前端。请没有关于AWT vs swing vs * wt的讲座,请:-))


这很简单

主服务器-保持用户信息
内容服务器-保存内容信息
客户端-用户界面

客户端打开并连接到主服务器。根据内容,连接会反弹到适当的内容服务器(当然,主服务器和内容服务器进行一些通信以准备对新客户端的授权。)

在什么时候应该我正在编写测试?我想在测试方面与开发方面取得平衡,但我不确定这是什么适当的平衡。与后端相比,我更关心前端。我几乎把GUI看作是一种简单的机制,用于调用带有许多精美图片的后端功能。 :-)

很明显,存在像TDD这样的范例,它指示未经测试就无法编写任何代码。但这只是我业余时间做的月光下的项目。这主要是为了娱乐(尽管我很乐意从中受益)。

目前有30至40堂课。当前没有任何类型的测试(单元,功能,集成是我最终打算做的测试。)


我怎么知道什么时候该停止开发并进行一些测试在一起是吗?


评论

您现在如何测试代码?您多久重复一次相同的测试?如果您有一套可以针对它运行的测试,那么您将编写更稳定的代码。

@Randall当前没有测试。在第二段和最后一段中,似乎遗漏了一个非常重要的词(即“否”)。

我感谢您已经在课堂上全神贯注,但是从我的经验(以及供将来参考)来看,使用TDD不仅是一种测试方法,而且还是一种非常有效的设计/实现方法。它可以帮助您实现真正需要的,而不是您认为的需要。

#1 楼

我的建议是在遇到错误时开始添加测试。如果您使用某种错误跟踪软件(Trac与SVN很好地集成在一起),那么您可以做我想做的事,即以错误报告编号命名测试(因此对于错误1234,第一个测试被命名为像Test_1234一样无聊,而针对同一错误的第二项测试是Test_1234_A)。然后,当您的ANT测试运行时,您可以快速查看是否重新引入了先前报告的错误。当您在编码上花了很长的时间(例如,在一个业余项目中,或者偶尔需要年度更新)时,如果您不记得以前是否遇到过一些错误,这将非常有帮助。

可能最糟糕的事情是停止编码,除了编写测试外什么也不做,因为这会使您感到不适和疲惫(可能会放弃整个项目)。如果您发现自己一遍又一遍地进行某些测试,则很可能是添加自动化测试的不错选择。

评论


我认为最好根据测试内容命名测试。如果test_1234失败,则您不知道这是怎么回事。但是,如果test_approve_document失败,那么您将对可能发生的问题有一个很好的了解。

–杰森·沃德(Jason Ward)
2011年5月3日在21:16

@Jason,批准文档的测试确实是test_approve_document,但错误#1234可能是“当本地磁盘空间不足且使用Firefox时,无法批准具有网络驱动器的文档”(这听起来像是在开玩笑,但这不是笑话。与我们上任雇主遇到的一些错误相距太远,而我宁愿不要激怒太多)。需要明确的是,它是一个现有的,已记录的错误,并且如果该错误发生,则需要立即知道某件事已破坏,从而退回了先前修复的错误。

– Tangurena
2011年5月4日,0:39

我实际上是用这个作为答案。我知道它不如“立即测试!立即测试!”受欢迎。想法,但这很实用。在过去的一个月中,我一直在使用这种方法,并且效果一直很好。老实说,在妻子和女儿之间,工作,社会义务和R&R之间,我每周只有大约4个小时来从事我的个人项目-我当然不想花那4个小时来编写测试。但是,我确实想要健壮的代码。因此,我一直在编写代码,遇到特别棘手的问题时,我会围绕它编写测试。

–corsiKa♦
2011年6月9日17:05

我知道这不是生产代码的“最佳实践”,但是我离生产状态还很远。如果这能给我带来任何收益,我将几乎被迫退后一步,进行测试,然后使用TDD方法(至少是TSTITNF方法)从那里继续前进(Test SomeTime In The Near Future,您可以加上一点破折号和我的名字,mmhmm)在那之前,由于它确实只是一个附属项目,我认为这种实用,平衡的方法是可行的方法。

–corsiKa♦
2011年6月9日17:07

在发生错误后添加测试与在将马拴紧后关上马door门一样...您应该在编写代码之前添加测试,谷歌TDD起初是个球痛,但好处远大于缺点!您最终将获得更加稳定的软件,并且将花费更少的时间来尝试在项目稍后的阶段中很难诊断出问题。 TDD会导致启动速度变慢,但意味着您在中间和结尾处飞行,而其他人则陷入困境以尝试继续进行wtf。 TDD =更好的设计!

– Ardesco
2012年2月21日在10:37



#2 楼

正确的时间取决于您遵循的开发过程。使用敏捷过程的简化解释可能是最好的方法-在每次构建后宣扬具有快速且经常进行的构建和测试执行的交互开发的几乎所有内容都可以正常工作。

要记住的一件事是测试驱动的开发,要求在创建任何代码之前编写测试。这样,您就可以开发代码以使测试成功并遵守规范。一旦一项新功能为该项目开了绿灯,就应该在开始其他任何事情之前创建一个规范和测试。

当然,这只是一种方法。现在是您问题的正确答案-何时停止开发和创建测试。无论项目处于哪个阶段,无论完成了多少工作,现在都该进行测试了。

唯一的错误答案是在最后,当您投入了很多工作,并期望一切都能正常进行。不会的从来没有。另一方面,由于最后的测试失败,您将不愿意丢弃看似有效的代码。

希望这可以为您提供正确的方向。