Tutorial do Regression Suite Automation Tool
Nota
Utilize as ferramentas do seu browser para transferir e guardar esta página em formato pdf.
Este tutorial percorre algumas das funcionalidades avançadas da Regression Suite Automation Tool (RSAT), inclui uma atribuição de demonstração e descreve estratégia e pontos-chave de aprendizagem.
Características notáveis da gravação de tarefas RSAT
Validar um valor de campo
O RSAT permite-lhe incluir etapas de validação no seu caso de teste para validar os valores esperados. Para obter informações sobre esta funcionalidade, consulte o artigo Validar valores esperados.
O exemplo a seguir mostra como pode utilizar esta funcionalidade para validar se o inventário disponível é superior a 0 (zero).
Nos dados de demonstração da empresa USMF, crie uma gravação de tarefas que tenha os seguintes passos:
- Aceda a Gestão de informações do produto > Produtos > Produtos lançados.
- Utilize o Filtro Rápido para localizar registos. Por exemplo, filtre um valor de 1000 para o campo Número de item.
- Selecione Inventário disponível.
- Utilize o Filtro Rápido para localizar registos. Por exemplo, filtre um valor de 1 para o campo Local.
- Na lista, marque a linha selecionada.
- Valide que o valor do campo Total disponível é 411.0000000000000000.
Guarde a gravação de tarefas como uma gravação do programador e anexe-a ao seu caso de teste no Azure DevOps.
Adicione o caso de teste ao plano de teste e carregue o caso de teste no RSAT.
Abra o ficheiro de parâmetros do Excel e aceda ao separador TestCaseSteps.
Para validar se o inventário disponível será sempre superior a 0, aceda ao passo Validar Total Disponível e altere o seu valor de 411 para 0. Altere o valor do campo Operador de um sinal igual (=) para um sinal maior do que o sinal (>).
Guarde e feche o ficheiro de parâmetros do Excel.
Selecione Carregar para guardar as alterações que fez no ficheiro de parâmetros do Excel no Azure DevOps.
Agora, se o valor do campo Total Disponível para o item especificado no inventário for superior a 0 (zero), os testes passarão, independentemente do valor real do inventário disponível.
Variáveis guardadas e encadeamento de casos de teste
Uma das principais característica do RSAT é o encadeamento de casos de teste, isto é, a capacidade de um teste passar variáveis para outros testes. Para obter mais informações, consulte o artigo Copiar variáveis para casos de teste encadeados.
Caso de teste derivado
O RSAT permite-lhe utilizar a mesma gravação de tarefas com vários casos de teste, permitindo que uma tarefa seja executada com diferentes configurações de dados. Consulte o artigo Casos de teste derivados para obter mais informações.
Validar notificações e mensagens
Esta funcionalidade pode ser utilizada para validar se ocorreu uma ação. Por exemplo, quando uma ordem de produção é criada, estimada e depois iniciada, a aplicação mostra uma mensagem "Produção – Início" para notificá-lo de que a ordem de produção foi iniciada.
Pode validar esta mensagem através do RSAT introduzindo o texto da mensagem no separador MessageValidation do ficheiro de parâmetros do Excel da gravação apropriada.
Após a execução do caso de teste, a mensagem no ficheiro de parâmetros do Excel é comparada com a mensagem mostrada. Se as mensagens não corresponderem, o caso de teste falhará.
Nota
Pode introduzir mais do que uma mensagem no separador MessageValidation no ficheiro de parâmetros do Excel. As mensagens também podem ser mensagens de erro ou aviso em vez de mensagens informativas.
Instantâneo
Esta funcionalidade faz capturas de ecrã dos passos que foram realizados durante a gravação de tarefas. É útil para fins de auditoria ou depuração.
Para utilizar esta funcionalidade enquanto executa o RSAT com a interface do utilizador, abra o ficheiro Microsoft.Dynamics.RegressionSuite.WindowsApp.exe.config na pasta de instalação RSAT (por exemplo, C:\Program Files (x86)\Regression Suite Automation Tool) e altere o valor do seguinte elemento de falso para verdadeiro.
<add key="VerboseSnapshotsEnabled" value="false" />
Para utilizar esta funcionalidade enquanto executa o RSAT através do CLI (por exemplo, Azure DevOps), abra o ficheiro Microsoft.Dynamics.RegressionSuite.ConsoleApp.exe.config na pasta de instalação RSAT (por exemplo, C:\Program Files (x86)\Regression Suite Automation Tool) e altere o valor do seguinte elemento de falso para verdadeiro.
<add key="VerboseSnapshotsEnabled" value="false" />
Quando executa os casos de teste, o RSAT gera capturas de ecrã (imagens) dos passos e guarda-os na pasta de reprodução dos casos de teste no diretório de funcionamento. Na pasta de reprodução, é criada uma subpasta separada chamada StepSnapshots. Esta pasta contém instantâneos para os casos de teste que são executados.
Atribuição
Cenário
- O designer de produtos cria um novo produto lançado.
- O gestor de produção inicia uma ordem de produção para elevar o nível de stock para duas peças.
- O fabrico inicia e termina a ordem de produção e verifica se a quantidade disponível é de duas peças.
- A equipa de vendas recebe um pedido de quatro peças do novo produto. Por isso, a equipa de vendas atualiza os requisitos líquidos através do plano dinâmico. Como não existe capacidade adicional, a política de encomendas por defeito está definida para "comprar em vez de fazer". Portanto, é criada uma nota de encomenda planeada.
- O comprador adiciona um vendedor, firma a nota de encomenda planeada e, em seguida, confirma a nota de encomenda.
- Quando os bens que foram comprados chegam à loja, o operador da loja procura a nota de encomenda relacionada e recebe os bens. Como a encomenda está agora concluída, os bens podem ser recolhidos e embalados com base na ordem de venda.
- As finanças registam a fatura de compra e a fatura de venda.
A ilustração a seguir mostra o fluxo deste cenário.
A seguinte ilustração mostra a hierarquia dos processos de negócio para este cenário no Modelador de Processos de Negócio do LCS.
Estratégia – Aprendizagem-chave
Dados
Certifique-se de que tem volumes de dados representativos (uma cópia dos dados de produção/configuração dourada mais dados migrados).
Quando gerar novos dados através do gravador de tarefas, crie nomes de teste que não entram em conflito com os nomes existentes (por exemplo, utilize um prefixo como RSATxxx).
Utilize o restauro para um ponto anterior no tempo do Azure para voltar a executar testes em ambientes não escalão 1.
Embora possa utilizar as funções RANDOM e NOW do Excel para gerar uma combinação única, o esforço é consideravelmente elevado. Vejamos um exemplo.
product = "AT" &TEXT(NOW(),"yyymmddhhmm")
Gravador de tarefas
- Defina cenários antes de começar a gravação. Um projeto bem gerido tem cenários de teste predefinidos. Para compilar um caso de teste, considere o quão previsível é o resultado desses cenários de teste.
- Gravações divididas, se forem executadas por diferentes funções, ou se houver tempo de espera ou um evento externo antes do passo seguinte.
- Evite selecionar valores em listas. Em vez disso, utilize formatos de texto, tais como FIFO, AudioRM e SiteWH. Quando seleciona numa lista, a posição do valor na lista é registada, não o valor em si. Se os itens forem adicionados a essa lista, a posição do valor pode mudar. Portanto, a sua gravação utilizará um parâmetro diferente, e o resto do cenário pode ser afetado.
- Pense no comportamento de vários utilizadores. Por exemplo, não assuma que a sua ordem de venda recém-criada será sempre selecionada automaticamente. Em vez disso, utilize sempre o filtro para encontrar a ordem correta.
- Utilize a função Copiar no gravador de tarefas para guardar o nome de um produto recém-criado para que possa ser utilizado em casos de teste encadeados.
- Utilize a função Validar no gravador de tarefas para definir pontos de verificação que verifiquem se os passos foram corretamente executados.
RSAT
- Para executar o teste noutra empresa, pode alterar a empresa no separador Geral do ficheiro de parâmetros do Excel. Certifique-se de que as configurações e os dados estão disponíveis na empresa recém-selecionada.
- Pode alterar o utilizador de teste no separador Geral do ficheiro de parâmetros do Excel. Especifique o ID de e-mail do utilizador que irá executar o caso de teste. Desta forma, o caso de teste pode ser executado utilizando as permissões de segurança do utilizador especificado.
- Para esperar antes do início do teste, pode definir uma pausa no separador Geral do ficheiro de parâmetros do Excel. Esta pausa pode ser utilizada numa tarefa de lote (por exemplo, se um fluxo de trabalho tiver de ser executado antes de ser realizado o próximo passo).
Script avançado
CLI
O RSAT pode ser chamado a partir de uma janela da linha de comandos ou do PowerShell.
Nota
Verifique se a variável ambiental TestRoot está definida para o caminho de instalação do RSAT. (No Microsoft Windows, abra o Painel de Controlo, selecione Sistema e Segurança > Sistema > Definições avançadas do sistema e, em seguida, selecione Variáveis ambientais.)
Abra uma janela da linha de comandos ou do PowerShell como administrador.
Navegue para o diretório de instalações RSAT.
cd "c:\Program Files (x86)\Regression Suite Automation Tool\"
Liste todos os comandos.
C:\Program Files (x86)\Regression Suite Automation Tool>Microsoft.Dynamics.RegressionSuite.ConsoleApp.exe help Usage: Microsoft.Dynamics.RegressionSuite.ConsoleApp.exe command or Microsoft.Dynamics.RegressionSuite.ConsoleApp.exe /settings "C:\Path to\file.settings" command Available commands: ? about cls download edit generate generatederived generatetestonly generatetestsuite help list listtestplans listtestsuite listtestsuitenames playback playbackbyid playbackmany playbacksuite quit upload uploadrecording usage
?
Mostra ajuda sobre todos os comandos disponíveis e os seus parâmetros.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
?
[command]
?: Parâmetros opcionais
command
: Onde [command]
é um dos comandos especificados abaixo.
acerca de
Apresenta a versão atual.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
about
cls
Limpa o ecrã.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
cls
transferir
Transfere anexos para o caso de teste especificado para o diretório de saída.
Pode utilizar o comando list
para obter todos os casos de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro test_case_id.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
download
[test_case_id] [output_dir]
transferir: parâmetros obrigatórios
test_case_id
: Representa o ID do caso de teste.output_dir
: Representa o diretório de saída. O diretório deve existir.
transferir: exemplos
download 123 c:\temp\rsat
download 765 c:\rsat\last
editar
Permite-lhe abrir o ficheiro de parâmetros no programa Excel e editá-lo.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
edit
[excel_file]
editar: parâmetros obrigatórios
excel_file
: Deve conter um caminho completo para um ficheiro Excel existente.
editar: exemplos
edit c:\RSAT\TestCase_123_Base.xlsx
edit e:\temp\TestCase_456_Base.xlsx
gerar
Gera a execução do teste e dos ficheiros de parâmetros para o caso de teste especificado no diretório de saída. Pode utilizar o comando list
para obter todos os casos de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro test_case_id.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
generate
[test_case_id] [output_dir]
gerar: parâmetros obrigatórios
test_case_id
: Representa o ID do caso de teste.output_dir
: Representa o diretório de saída. O diretório deve existir.
gerar: exemplos
generate 123 c:\temp\rsat
generate 765 c:\rsat\last
generatederived
Gera um novo caso de teste, derivado do caso de teste fornecido. Pode utilizar o comando list
para obter todos os casos de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro test_case_id.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
generatederived
[parent_test_case_id] [test_plan_id] [test_suite_id]
generatederived: parâmetros obrigatórios
parent_test_case_id
: Representa o ID do caso de teste principal.test_plan_id
: Representa o ID do plano de teste.test_suite_id
: Representa o ID do pacote de teste.
generatederived: exemplos
generatederived 123 8901 678
generatetestonly
Gera apenas a execução do ficheiro teste para o caso de teste especificado no diretório de saída. Pode utilizar o comando list
para obter todos os casos de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro test_case_id.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
generatetestonly
[test_case_id] [output_dir]
generatetestonly: parâmetros obrigatórios
test_case_id
: Representa o ID do caso de teste.output_dir
: Representa o diretório de saída. O diretório deve existir.
generatetestonly: exemplos
generatetestonly 123 c:\temp\rsat
generatetestonly 765 c:\rsat\last
generatetestsuite
Gera todos os casos de teste para o pacote especificado no diretório de saída. Pode utilizar o comando listtestsuitenames
para obter todos os pacotes de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro test_suite_name.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
generatetestsuite
[test_suite_name] [output_dir]
generatetestsuite: parâmetros obrigatórios
test_suite_name
: Representa o nome do pacote de teste.output_dir
: Representa o diretório de saída. O diretório deve existir.
generatetestsuite: exemplos
generatetestsuite Tests c:\temp\rsat
generatetestsuite Purchase c:\rsat\last
ajuda
Idêntico ao ? comando.
lista
Lista todos os casos de teste disponíveis.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
list
listtestplans
Lista todos os planos de teste disponíveis.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
listtestplans
listtestsuite
Lista casos de teste para o pacote de teste especificado. Pode utilizar o comando listtestsuitenames
para obter todos os pacotes de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro suite_name.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
listtestsuite
[suite_name]
listtestsuite: parâmetros obrigatórios
suite_name
: Nome do pacote pretendido.
listtestesuite: exemplos
listtestsuite "sample suite name"
listtestsuite NameOfTheSuite
listtestsuitenames
Lista todos os pacotes de teste disponíveis.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
listtestsuitenames
reproduzir
Reproduz um caso de teste utilizando um ficheiro Excel.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
playback
[excel_file]
reproduzir: parâmetros obrigatórios
excel_file
: Um caminho completo para o ficheiro Excel. O ficheiro deve existir.
reproduzir: exemplos
playback c:\RSAT\TestCaseParameters\sample1.xlsx
playback e:\temp\test.xlsx
playbackbyid
Reproduz vários casos de teste ao mesmo tempo. Pode utilizar o comando list
para obter todos os casos de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro test_case_id.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
playbackbyid
[test_case_id1] [test_case_id2] ... [test_case_idN]
playbackbyid: parâmetros obrigatórios
test_case_id1
: ID do caso do teste de existente.test_case_id2
: ID do caso do teste de existente.test_case_idN
: ID do caso do teste de existente.
playbackbyid: exemplos
playbackbyid 878
playbackbyid 2345 667 135
playbackmany
Reproduz muitos casos de teste ao mesmo tempo, utilizando ficheiros Excel.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
playbackmany
[excel_file1] [excel_file2] ... [excel_fileN]
playbackmany: parâmetros obrigatórios
excel_file1
: Caminho completo para o ficheiro Excel. O ficheiro deve existir.excel_file2
: Caminho completo para o ficheiro Excel. O ficheiro deve existir.excel_fileN
: Caminho completo para o ficheiro Excel. O ficheiro deve existir.
playbackmany: exemplos
playbackmany c:\RSAT\TestCaseParameters\param1.xlsx
playbackmany e:\temp\test.xlsx f:\rsat\sample1.xlsx c:\RSAT\sample2.xlsx
playbacksuite
Reproduz todos os casos de teste do pacote de teste especificado.
Pode utilizar o comando listtestsuitenames
para obter todos os pacotes de teste disponíveis. Utilize qualquer valor da primeira coluna como um parâmetro suite_name.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
playbacksuite
[suite_name]
playbacksuite: parâmetros obrigatórios
suite_name
: Nome do pacote pretendido.
playbacksuite: exemplos
playbacksuite suiteName
playbacksuite sample_suite
sair
Fecha a aplicação.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
quit
carregar
Carrega todos os ficheiros pertencentes ao pacote de teste ou aos casos de teste especificados.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
upload
[suite_name] [testcase_id]
carregar: parâmetros obrigatórios
suite_name
: Todos os ficheiros pertencentes ao pacote de teste especificado serão carregados.testcase_id
: Todos os ficheiros pertencentes ao caso de teste especificado serão carregados.
carregar: exemplos
upload sample_suite
upload 123
upload 123 456
uploadrecording
Carrega apenas os ficheiros de gravação pertencentes aos casos de teste especificados.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
uploadrecording
[testcase_id]
uploadrecording: parâmetros obrigatórios
testcase_id
: Os ficheiros de gravação pertencentes aos casos de teste especificados serão carregados.
uploadrecording: exemplos
uploadrecording 123
uploadrecording 123 456
utilização
Mostra duas formas de invocar esta aplicação: uma utilizando um ficheiro de definições predefinido, outra fornecendo um ficheiro de definições.
Microsoft.Dynamics.RegressionSuite.ConsoleApp
usage
Exemplos do Windows PowerShell
Executar um caso de teste em ciclo
Tem um script de teste que cria um novo cliente. Através do script, este caso de teste pode ser executado em ciclo, tornando os seguintes dados aleatórios antes de cada iteração ser executada:
- ID de cliente
- Nome do cliente
- Endereço do cliente
O ID do cliente estará no formato ATCUS<number>, onde <number> é um valor entre 000000001 e 999999999.
O exemplo a seguir utiliza um parâmetro, iniciar, para definir o primeiro número que é utilizado. Utiliza um segundo parâmetro, nr, para definir o número de clientes que devem ser criados. Para cada iteração, os parâmetros no ficheiro de parâmetros do Excel são alterados utilizando uma função UpdateCustomer. Em seguida, a linha de comando do RSAT é chamada numa função RunTestCase.
Abra o Microsoft Windows PowerShell Integrated Scripting Environment (ISE) no modo de administrador e cole o seguinte código na janela denominada Untitled1.ps1.
param ( [int]$start = 1, [int]$nr = 1 )
function UpdateCustomer
{
param ([string]$paramFilename, [string]$sheetName, [string]$CustId)
$xl = New-Object -COM "Excel.Application"
$xl.Visible = $false
$wb = $xl.Workbooks.Open($paramFilename)
$ws = $wb.Sheets.Item($sheetName)
$ws.Cells.Item(3, 2).Value = "ATCUS" + $CustId
$ws.Cells.Item(4, 2).Value = "Automated Test Customer " + $CustId
$ws.Cells.Item(8, 2).Value = "Automated Test Street " + $CustId
$wb.Save()
$wb.Close()
$xl.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($xl)
}
function RunTestCase
{
param ( [string]$filename )
$cmd = "cd c:\Program Files (x86)\Regression Suite Automation Tool\ && "
$cmd = $cmd + "Microsoft.Dynamics.RegressionSuite.ConsoleApp.exe playback "
$cmd = $cmd + $filename
cmd /c $cmd
}
$excelFilename = "full path to Excel parameter file"
l$sheetName = "DirPartyQuickCreateForm"
for ($i = $start; $i -lt $start + $nr; $i++ )
{
$CustomerId = $i.ToString("000000000")
Write-Host "customer : " $CustomerId
UpdateCustomer $excelFilename $sheetName $CustomerId
RunTestCase $excelFilename
Executar um script que depende de dados no Microsoft Dynamics 365
O exemplo a seguir utiliza uma chamada de Protocolo de Open Data (OData) para encontrar o estado da encomenda de uma nota de encomenda. Se o estado não for faturado, pode, por exemplo, chamar um caso de teste do RSAT que publica a fatura.
function Odata_Get
{
Param ( [string] $environment, [string] $cmd )
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$tenant = "your tenant"
$creds = @{
grant_type = "client_credentials"
client_id = "your client application Id"
client_secret = "your client secret"
resource = $environment
}
$headers = $null
$bearer = Invoke-RestMethod https://login.microsoftonline.com/$tenant/oauth2/token -Method Post -Body $creds -Headers $headers;
$headers = @{
Authorization = "Bearer " + $bearer.access_token
}
$Odata_cmd = $environment + '/data/' + $cmd
return (Invoke-RestMethod -Uri $Odata_cmd -Method Get -Headers $headers -ContentType application/json )
}
function PurchaseOrderStatus
{
Param ( [string] $environment, [string] $purchaseOrderNumber )
$cmd = 'PurchaseOrderHeaders?$filter=PurchaseOrderNumber eq '
$cmd = $cmd + "'" + $purchaseOrderNumber + "'"
$response = Odata_Get -environment $environment -cmd $cmd
return $response.value.PurchaseOrderStatus
}
$environment = "https://your environment"
$orderStatus = PurchaseOrderStatus -environment $environment -purchaseOrderNumber '000003'
if ($orderStatus -eq $null) { write-host 'doesn''t exist'}
elseif ($orderStatus -ne 'invoiced') { RunTestCase "PostInvoice" }