我应该将 2e2 测试放在管道中的 WebAppDeployment 之前还是之后?
Should I put my 2e2 tests before or after my WebAppDeployment in my pipeline?
希望有人能帮助我
我正在 dotnet 中开发 api,我在 yaml 中使用 azure devops 和管道。
我已经完成了 api 的 2e2 测试,我基本上对我正在开发的 api 进行了真正的调用,以测试应用程序中的真实用户流。
我的问题应该是:
1- 在部署到我的 webapp 之前执行 2e2test 任务,让我知道在将其部署到资源之前存在问题,但问题是我不会用当前的更改进行测试提交(因为我会用前一个进行测试,因为我还没有部署资源)
或
2-在部署到我的 webapp 之后执行任务 2e2test,允许我使用我在提交中所做的更改反映在资源中来执行测试,这样我就知道我所做的有问题或没有,但有问题,因为资源已部署,如果有问题,它已经污染了我的 webapp。
我正在处理的 yaml 是:
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- development
pool:
vmImage: 'windows-latest'
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
publishWebProjects: false
projects: '**/ChatbotService/*.csproj'
zipAfterPublish: true
modifyOutputPath: true
- task: DotNetCoreCLI@2
displayName: 'dotnet MockUnitTest'
inputs:
command: test
projects: '**/*Tests/MockUnitTest/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
- task: DotNetCoreCLI@2
displayName: 'dotnet E2ETest'
inputs:
command: test
projects: '**/*Tests/E2ETest/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'bla blab bla'
appType: 'webApp'
WebAppName: 'webapp-chatbotservice-dev'
packageForLinux: '$(System.DefaultWorkingDirectory)/ChatbotService/**/*.zip'
AppSettings: '-ASPNETCORE_ENVIRONMENT Development'
您应该先部署然后 运行 您的 e-2-e 测试而不是生产。在生产环境中,您应该 运行 smoke tests 这是一种 e-2-e 测试,可以在不改变应用状态的情况下测试应用的关键部分。 (当然在部署后 运行 它们是有意义的)
所以它可以像这样在高级别:
- build stage
- deploy to test env stage
- run e-2-e test
- deploy to prod env stage
- run smoke test
如果您 运行 在未更新的环境上进行测试,则始终存在风险,因为您的测试可能会验证尚未部署的应用程序部分。
希望有人能帮助我
我正在 dotnet 中开发 api,我在 yaml 中使用 azure devops 和管道。
我已经完成了 api 的 2e2 测试,我基本上对我正在开发的 api 进行了真正的调用,以测试应用程序中的真实用户流。
我的问题应该是:
1- 在部署到我的 webapp 之前执行 2e2test 任务,让我知道在将其部署到资源之前存在问题,但问题是我不会用当前的更改进行测试提交(因为我会用前一个进行测试,因为我还没有部署资源)
或
2-在部署到我的 webapp 之后执行任务 2e2test,允许我使用我在提交中所做的更改反映在资源中来执行测试,这样我就知道我所做的有问题或没有,但有问题,因为资源已部署,如果有问题,它已经污染了我的 webapp。
我正在处理的 yaml 是:
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- development
pool:
vmImage: 'windows-latest'
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
publishWebProjects: false
projects: '**/ChatbotService/*.csproj'
zipAfterPublish: true
modifyOutputPath: true
- task: DotNetCoreCLI@2
displayName: 'dotnet MockUnitTest'
inputs:
command: test
projects: '**/*Tests/MockUnitTest/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
- task: DotNetCoreCLI@2
displayName: 'dotnet E2ETest'
inputs:
command: test
projects: '**/*Tests/E2ETest/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'bla blab bla'
appType: 'webApp'
WebAppName: 'webapp-chatbotservice-dev'
packageForLinux: '$(System.DefaultWorkingDirectory)/ChatbotService/**/*.zip'
AppSettings: '-ASPNETCORE_ENVIRONMENT Development'
您应该先部署然后 运行 您的 e-2-e 测试而不是生产。在生产环境中,您应该 运行 smoke tests 这是一种 e-2-e 测试,可以在不改变应用状态的情况下测试应用的关键部分。 (当然在部署后 运行 它们是有意义的)
所以它可以像这样在高级别:
- build stage
- deploy to test env stage
- run e-2-e test
- deploy to prod env stage
- run smoke test
如果您 运行 在未更新的环境上进行测试,则始终存在风险,因为您的测试可能会验证尚未部署的应用程序部分。