我是一家小型软件公司的首席程序员(目前有4名开发人员,包括我本人),我们为企业开发定制的ASP.NET WebForms应用程序。我在2010年刚毕业就加入了那里,所以这是我的第一份真正的工作。在更多的高级程序员离开后,我被提升为领导,我们雇佣了一群初级开发人员来指导我。
我的问题是,目前,我们有大量的工作来自延迟的项目(大约推迟了2-3年),所以我们的开发非常仓促,测试只剩下最后一分钟了,我们的发布经常会出现明显的错误,我们应该学会的。这确实降低了士气,让每个人都感到压力很大,包括我自己。
我们根本没有测试框架,甚至几乎没有任何组织来完成我们应该做的事情。我们从不使用单元测试,而且所有的测试都是手动的,而且非常辛苦。自从我成为一名程序员以来,我所接触到的就是这种方法,但我正在快速地了解到,这不是软件公司应该做的事情。
我一直试图熟悉TDD和单元测试,但这对我来说非常陌生,我很难想象我们如何在我们的应用程序中使用这些测试。我们应用程序中的大部分逻辑都在每一页后面的代码中(这是我现在想要避免的),而我所读到的内容使测试变得更加困难。
有没有人有任何建议,或知道任何好的教程,这将帮助我们达到标准的TDD?
我们还有很多其他的问题,包括没有有效地使用SVN,为我们的bug提供一个非常基本的HelpDesk,以及给我们的团队提供相当模糊的规范。这些都是我自己想要学习的东西,但是我需要花很多时间来教自己所有这些。因此,如果有人在这方面有任何建议,我会很感激,但我们的测试是目前最关键的事情。
发布于 2013-03-27 22:13:08
我在一个类似的地方,所以我不能提供最好的帮助,我渴望看到其他的答案。
但我可以热情地推荐Roy的"单元测试的艺术。“,它专注于.NET,并将为您在单元测试中的目标提供大量的想法。
据我目前所知,您将代码推送到中心类,而不是后面的代码。我正在努力建立一个更集中化的架构,更好地分离关注点,类似于MVC所鼓励的那样。(为了熟悉体系结构,也许值得花点时间看看MVC。也不会损害简历。)
发布于 2013-03-27 23:10:26
首先,你当然不应该为你很难处理好这件事而感到难过。WebForms不是一个考虑到可测试性而设计的框架,它当然不会做任何事情来使自己易于测试。
Jamie的答案中已经提到了第一件也是最重要的事情--您需要确保尽可能少的代码出现在.aspx页面的代码后面,并且尽可能多地放在单独的业务逻辑类中。代码后面的代码应该只是连接ASP.NET控件,很少有其他的。这样,您就可以开始围绕现有业务逻辑进行一些单元测试,并使用TDD方法开发新的业务逻辑。
对于实际的web界面,您最好研究一下浏览器自动化测试框架-- WatiN和硒是两种跃跃式的测试框架。不过,我不知道如何采用TDD方法进行浏览器自动化测试。在我看来,这些技术更适合在开发完成后建立回归测试。
发布于 2013-03-27 23:52:10
正如其他人所写的,web表单的开发并没有考虑到可测试性,但是通过学习MVC、MVP和MVVM等模式可以使您的生活更加轻松。特别是Web在MVP中发挥得很好。
迪诺·埃斯波西托( Dino Esposito )有一篇关于在web表单中使用MVP的伟大文章在MSDN上。您还可以查看ASP.NET MVC,它是从底层构建的,考虑到依赖注入、控制反转、测试等。
您本质上需要确保最干净的关注点分离。试着调查一下面向方面编程,将其正规化。通过实施关注点分离,您可以大大简化单元测试、依赖注入和所有您需要做的事情,使测试变得简单。我在Java中使用了Spring,他们有一个AOP模块,它也在Spring.NET中,可能值得一看。
我的建议如下:
我之所以建议MVP/MVVM,是因为这些模式将有助于强制您的数据模型与您的视图分离,从而帮助实现关注点的分离。
祝好运!
https://softwareengineering.stackexchange.com/questions/193190
复制相似问题