由于我是TDD新手,我目前正在开发一个小型C#控制台应用程序以便练习(因为练习很完美,对吧?).我首先简单地描述了如何组织应用程序(按类),并开始逐个开发我可以识别的所有域类(当然先测试).
最后,必须将类集成在一起以使应用程序可运行,即在Main方法中放置必要的代码,调用必要的逻辑.但是,我不知道如何以"先测试"的方式完成最后的整合步骤.
我想如果我使用"自上而下"的方法,我不会遇到这些问题.问题是:我该怎么做?我应该通过测试Main()方法开始吗?
如果有人能给我一些指示,我将非常感激.
背景
我正在努力帮助我的团队组织一个新的移动应用项目.我们选择遵循BDD(参见BDD定义)以捕获简单的英语要求,这些要求构成了利益相关者和开发者之间针对每个用户故事的合同.
我们使用验收测试来记录每个用户故事的要求.在sprint计划之前编写验收测试.开发人员在sprint计划期间改进并添加测试.
我们将Acceptance Criteria定义为规则列表(例如:输入验证,默认值等),将Acceptance Tests定义为Cucumber场景列表.我们计划使用Calabash进行移动测试.
我认为验收标准/测试更灵活,因此更好地解决了更正式的需求文档.
我觉得我找到了一个有效的解决方案,但我想了解其他人是如何收集要求和编写验收测试的.
问题
在Cucumber社区中,有必要与声明性测试步骤进行辩论.我倾向于强制要求,因为开发人员必须知道可交付用户故事的样子.
我不认为UI耦合又称脆性测试是一个问题.有一些方法可以将UI与测试分离(例如:页面对象).我也不认为有详细的步骤使非技术利益相关者难以理解(除非他们不知道如何使用网络浏览器或移动设备,但这是一个单独的问题).
我可能会挪用" 验收测试 "一词.在我的使用中,验收测试与单元测试的范围不同.我将验收测试视为高级集成测试.
这个例子
势在必行的测试
声明测试
这两者都可以覆盖相同的功能而后者更短,但它没有说我是否可以使用用户名,电子邮件或facebook/twitter/google/etc帐户登录.仅仅实际编写解决方案是不够的
问题
如何使用声明性步骤捕获要素?