C# 系统测试与验收测试-测试用例的差异

C# 系统测试与验收测试-测试用例的差异,c#,java,testing,acceptance-testing,system-testing,C#,Java,Testing,Acceptance Testing,System Testing,我对系统测试和验收测试之间的真正区别有点困惑。当我搜索这个主题时,答案是不同的,我看不出测试用例是如何大不相同的 我发现的事实: 系统测试在整个系统上进行,由供应商完成。系统测试是端到端测试,您可以根据需求规范(功能性和非功能性)测试系统中的完整流程(从登录到注销) 验收测试由客户进行,以验证其是否满足客户需求。这也是完整的流程,基于需求规范。然而,构建的系统是基于需求规范设计的,并且在开发周期的早期阶段,外观/可用性通常已经被接受如果系统涵盖了需求规范,客户不可能说“这不是我们想要的,重做这个

我对系统测试和验收测试之间的真正区别有点困惑。当我搜索这个主题时,答案是不同的,我看不出测试用例是如何大不相同的

我发现的事实:

系统测试在整个系统上进行,由供应商完成。系统测试是端到端测试,您可以根据需求规范(功能性和非功能性)测试系统中的完整流程(从登录到注销)

验收测试由客户进行,以验证其是否满足客户需求。这也是完整的流程,基于需求规范。然而,构建的系统是基于需求规范设计的,并且在开发周期的早期阶段,外观/可用性通常已经被接受如果系统涵盖了需求规范,客户不可能说“这不是我们想要的,重做这个和那个”,当然,除非合同允许这样做,并且客户按小时付费。


所以,我的问题是,这两个测试阶段的测试用例有什么不同?两者都是端到端测试,重点是它是一个功能系统,并且它满足规范,这在一定程度上也是业务需求(因为这是他们订购的)。似乎系统测试中的测试用例可以在验收测试中重用,因为它们都涵盖了完整的流程?

客户的验收测试实际上不应该有正式的测试用例。这一切都是关于客户按照他们的计划使用该系统,并看到他们对该系统如何工作的理解与它的实际功能相匹配。
测试用例限制了验收测试,因为它通常会引发类似“X很好,但是你能加上Y吗”和“我们说字段Z应该是一个整数,但实际上我们可能也需要在其中添加文本”。

简短的回答是:

系统测试由开发人员和/或QA执行,以确保系统达到设计目的。这可以通过使用Selenium(用于web应用)之类的东西自动完成。这样做的目的是质量保证,而许多组织并不为此费心

验收测试由客户和/或经理执行,以确保系统按照他们认为应该的方式运行。通常认为,修复软件是开发人员合同义务的结束


不同之处在于,系统测试通常会测试客户并不真正关心的事情,比如“数据库连接是否按照正确的顺序提交”。验收测试通常关注“主观用户体验如何”之类的问题。

这两种类型的测试都是针对整个系统/应用程序执行的。很多测试很可能会重叠

系统测试通常由独立的QA团队在类似于生产的环境中执行。这可能是第一次将所有部件一起测试

验收测试通常在相同的环境或类似的(也类似于生产)环境中运行,但团队的组成通常由系统的实际用户的子集组成。一个信念是,用户将识别出常规测试人员可能忽略的场景、缺陷和观察行为。此外,这可以在用户部署到生产环境之前为他们提供一定程度的舒适度


如果您使用的是V型模型,则系统测试与系统级设计保持一致,验收测试与业务需求保持一致

我不同意。验收测试应该有一个正式的测试用例,否则你会给客户一张“不用写愚蠢的需求”卡。我认为客户和供应商之间的每个合同的基础都是需求规范。如果客户是临时验收测试,而不是以本规范为基础对系统进行测试并接受系统,则他们没有法律要求在事后说“嗨,你错过了这个”。客户和供应商都应该验证需求是否得到满足?是的,要求客户审查规范不会有什么坏处。这听起来确实有点像“我们认为这是您想要的,请确认我们已经实施了”,而不是更开放的“系统做了您想要做的吗?”