所以 - 管理层正在努力推动在所有应用程序中进行单元测试 - 并最终进入完整的TDD /持续集成/自动构建模式(我希望).在这一点上,我们只关心让每个人使用单元测试开发应用程序.我想从基础开始.
我不会说谎 - 我在任何单位测试方面都不是专家,但我确实有足够的理解来开始基础知识的倡议,并允许我们成长为一个团队.我真的很想从你所有的专家那里得到一些评论和批评我的攻击计划.它是一个由小型商店中约10名开发人员组成的团队,这为利用敏捷开发方法和最佳实践提供了一个很好的机会.
首先 - 该团队主要由中级开发人员组成,他们有几个初级开发人员和一个高级开发人员,所有人都没有接触过单元测试.培训将是一个半月会议,每次大约30-60分钟(可能最终运行一小时,我猜,也许更频繁地使用它们).我们将继续这些会议,直到有理由阻止他们让别人赶上他们自己的"家庭作业"和经验 - 但推动将始终如一.
无论如何 - 这是我提出的课程计划.好吧,前两个至少.您的专家就课程的实际内容或结构等提出的任何建议都会很棒.评论和批评非常感谢.非常感谢.
如果这篇文章"太多"无法在此处发布或通读,我深表歉意.我认为对于希望首先进入单元测试的SO用户来说,这将是一个很好的主题.也许你可以跳到"课程计划"部分 - 再次感谢所有人.
CLIFF注意事项 - 我发现这篇帖子非常冗长和丑陋,所以这里有悬崖笔记 - 第1课将是'你好世界单元测试' - 第2课将打开我最近的应用程序的解决方案,并展示如何应用每个"世界你好"在现实生活中的例子......非常感谢大家对您给了我迄今..反馈只是wantd强调的是第2课其实是要具有现实生活的生产单元测试它,因为许多建议我这样做,当它是我的计划从开始=)
单元测试课程计划
概观
为什么单元测试?看起来像是一堆额外的工作 - 为什么呢?
•成为自己命运的主人.我们的大多数用户都没有真正的UAT,不幸的是,他们倾向于在生产中进行一次测试.通过单元测试,我们可以大大降低与此相关的风险,特别是在我们创建足够的测试数据并考虑尽可能多的顶级输入时.虽然不是防止所有错误的"银弹" - 这是你的第一道防线 - 一条巨大的前线,可与SB冠军巨人队相媲美.
•单元测试实施良好的设计和架构实践.这是"暴力的精神病患者维护你的代码并知道你住在哪里".你根本无法编写经过单元测试的低质量代码
•你有多少次没有重构臭代码,因为你太害怕破坏某些东西?自动化测试消除了这种恐惧,使重构变得更加容易,从而使代码更易读,更易于维护.
•底线 - 维护变得更容易和更便宜.编写单元测试所花费的时间现在可能成本很高 - 但是它节省你的时间已经被证明是一次又一次更有价值.这是自动测试代码的首要原因.它给了我们信心,使我们能够对系统进行更加雄心勃勃的改变,否则我们可能不得不降低需求,甚至根本不采取任何措施.
术语审查
•单元测试 - 测试最低级别的单个工作单元.EG - 测试单个函数可以流经的所有可能的代码路径.
•集成测试 - 测试您的单元如何协同工作.例如 - 运行一个"作业"(或一系列函数调用),使用已知输入执行大量工作 - 然后在最后查询数据库并断言值是您对这些已知输入的期望(而不是必须眼球在某个网页上的网格,例如进行功能测试).
•伪造 - 假冒是一种对象,其目的是用于您的测试.它允许您轻松地不测试您不想测试的代码.您不必调用您不想要的代码(如数据库调用),而是使用假对象来"伪造"该DB调用,并且可能从XML/Excel文件或模拟框架中读取数据.o模拟 - 一种你对其发表断言声明的假货.o Stub - 一种用作占位符代码的伪造,因此您可以跳过数据库调用,但不要对其进行断言
教训
第一课 - Hello Worlds
•Hello World单元测试 - 我将创建一个经过单元测试的"hello world"控制台应用程序.将在会议期间动态创建此应用程序,在Visual Studio …
unit-testing ×1