对于测试,有不同的方法会产生不同的结果。为了回答您的问题,我将在下面列出它们,然后圈出答案。
单元测试
- 这些用于测试应用程序的很小一部分。
- “单元”是单个类,而不是类的组合。
- 在进行单元测试时,通常会模拟与其他类的任何交互,因此仅测试“单元”本身。
- 单元测试执行起来非常快
- 由于单元测试速度很快,通常用于测试所有路径(例如,快乐路径,替代路径和异常路径)
- 通常在phpunit中完成
- 没有数据库交互
集成测试
- 这些用于测试不同单元之间的交互作用
- 仅应测试少数路径,因为涉及更多单元时路径数量会增加很多(例如,A类具有3条路径,B类具有4条路径,因此集成测试中100%的覆盖率应涵盖12条路径)< / li>
- 仍然非常快
- 通常在phpunit中完成
- 可以进行数据库交互
功能测试
- 这些用于测试一项功能
- 通常只测试快乐路径(也许是另一条路径)
- 通常具有数据库交互作用
- 很慢
- 可以有几个,但不要太多
- 通常在Behat中完成
浏览器测试
- 这些用于从头到尾测试功能
- 模拟实际用户将如何访问您的应用程序
- 可用于检查某个功能是否可以在不同的浏览器上运行
- 依靠工具可以录制鼠标实际移动/键盘笔触的视频
- 非常慢
- 仅应使用少数几个
- 通常在黄昏完成(对于Laravel)
结论
总结一下,测试级别具有与测试速度,测试覆盖率和被测代码大小有关的不同用法。至于功能测试与浏览器测试,不同之处在于实际模拟用户与应用程序的交互,而不是完成所有工作的机器,以检查不同浏览器之间的兼容性,并检查功能是否从头到尾起作用。