我是一名C#开发人员&以前从未从事过单元测试或Selenium浏览器测试自动化工作。
对于当前的赋值,有一个现有的Visual解决方案,该解决方案具有一个执行自动化测试的项目。此解决方案没有单元测试。
例如,在活动站点上有一个捕捉客户数据的表单。这个Selenium VS项目将自动打开浏览器,用随机值填充表单字段,单击submit并验证下一步的步骤,如“谢谢屏幕”、数据库条目等等(这些测试用例是由开发人员创建的,而不是由QC创建的)。
这不是单元测试,而是更多的QC将如何在开发完成后进行测试。对吗?
对于以前从未做过测试的人来说,我看到的一个优点是,每次将代码部署到新环境(如STG、UAT等)时,开发人员可以通过更改URL/连接字符串来运行该项目,它将执行所有测试用例,节省时间,并类似于回归测试。
这是使用这种测试而不是传统单元测试的好方法吗?如果不是,哪一种模式与另一种模式相比有哪些主要的优势/劣势。
发布于 2020-01-27 05:30:16
不,这不是个好办法。实际上,这是一种可怕而普遍的现象。我想说这是一个测试反模式。
像您描述的那样,端到端测试是高工作量、低价值的,并且在进行代码更改时有很高的崩溃风险。这里的主要问题是,很多软件都在代码完成后编写了测试,而添加稳定和快速的自动化测试通常是不可能的。而端到端的测试往往是唯一的现实选择。
相反,您应该设计您的软件,这样它就可以被快速、独立、孤立和集中于业务的“单元”测试的大型套件所摘录。然后很少有“集成”测试来强调系统与其边界的交互,比如数据库和服务。并且只有很少的端到端测试作为烟雾测试的形式,而应用程序作为一个整体并没有完全错误(例如。而不是启动)。这是标准测试金字塔:https://martinfowler.com/bliki/TestPyramid.html

让我再强调一次:在完成编码之后添加测试是不可能实现这一目标的。您必须设计代码,以便能够针对它编写快速的自动化测试。最好的方法,我知道如何通过测试驱动-开发。如果您想要向现有的代码库中添加良好的自动化测试,则通常需要进行广泛的重构和重构才能实现这一点。
发布于 2020-01-27 20:42:11
端到端测试具有以下优点
所以他们做了一些单元测试不能做的事情,他们测试了很多代码。他们不会取代单元测试。但是,如果您的产品根本没有测试,那么端到端测试可能是引入一些测试覆盖率的一个很好的方法。
我不同意以前的海报,他们是高努力和低价值的。
https://softwareengineering.stackexchange.com/questions/404319
复制相似问题