tópico de automação python (1)

Pergunta 1: a diferença entre json e dicionário?

Json é um formato de interação de dados leve que salva dados na forma de pares de valor-chave com uma estrutura clara. Pode ser considerado o formato de interação de dados mais comumente usado no desenvolvimento de projetos de Internet.
Um dicionário também é um par de valores-chave de valor-chave para armazenar dados, que é um tipo de dados em python.

Pergunta 2: Quando você faz o teste de automação de interface, onde você coloca os dados de teste?

  1. Para alguma configuração básica, como a configuração do banco de dados, você pode colocá-lo no arquivo de propriedades (arquivo yaml, não o expanda se não o tiver usado)
  2. Os dados necessários para o teste de interface podem ser colocados em uma tabela de banco de dados ou no Excel

Pergunta 3: O que é baseado em dados?

Orientado por dados é manter os dados de teste por meio de estruturas de dados, como excel, xml, banco de dados, etc., e processá-los por meio de tecnologias correspondentes para obter dados de teste para teste, realizando assim a dissociação dos dados de teste e do código. o teste dirigido é parametrização avançada.

Pergunta 4: Como projetar seu caso de uso no Excel?

  1. Todas as informações da interface são mantidas em um formulário
  2. Os dados do caso de uso sobre a interface são mantidos em um formulário
  3. Os parâmetros da interface são passados ​​em uma coluna. Ao construir uma string de formato json, o problema de passar vários parâmetros pode ser resolvido e a capacidade de manutenção do caso de uso é melhorada.

Questão 5: como obter os dados no Excel?

Por meio da biblioteca openpyxl de terceiros para ser concluído, o projeto só precisa apresentar a biblioteca openpyxl, e a operação do Excel pode ser concluída por meio da API fornecida por ela, e até mesmo podemos fazer alguns pacotes secundários para tornar a operação mais conveniente . Uma linha de dados é um caso de uso.

Pergunta 6: Se algumas interfaces são autenticadas (requer autoridade de autenticação), como realizar o teste automatizado dessas interfaces?

Em primeiro lugar, é necessário esclarecer o mecanismo de autenticação através do qual a interface é implementada

  1. Se a autenticação for obtida por meio do id de sessão (JSESSIONID), primeiro chame a interface de login- "obtenha os dados retornados por ela-" armazene-os - "quando você chamar outras interfaces posteriormente, você pode trazer diretamente esses dados no passado. Acima.
  2. Se a autenticação for feita por meio de tokens, você só precisa chamar a interface de login - "obter os dados retornados -" armazená-los e as seguintes operações são as mesmas acima.

Primeiro, responda uma das etapas básicas de implementação acima e, em seguida, adicione os seguintes detalhes de implementação:

  1. Como obter este JSESSIONID ou token

    ** Como obter esta informação deve-se primeiro entender como ela é retornada, que pode ser de duas formas:
    a. O cabeçalho de resposta da
    interface de login b. A mensagem de resposta da interface de login
    precisa ser confirmada pelo desenvolvedor. Métodos diferentes têm métodos diferentes.

  2. . Como armazenar este JSESSIONID ou token
    a. Arquivo (excel, arquivo de propriedades pode ser)
    b. Banco de dados
    c. Variáveis ​​estáticas públicas definidas no código como dados compartilhados

  3. Ao solicitar outras interfaces que requerem autenticação, como trazer esses dados no passado,
    primeiro peça ao desenvolvedor para confirmar e, em seguida, como chamar essas interfaces que requerem autenticação para transportar as informações de autenticação (ticket).
    Geralmente, nada mais é do que o seguinte:
    a. Splicing no URL para fazer upload do passado para verificação do servidor
    b. Defina-o para o corpo da solicitação
    c. Depois de entender como transmiti-lo pelo cabeçalho da solicitação, tente salvar as informações de autenticação Retire o local -> Passe adiante

Pergunta 7: O que é uma conversa?

A chamada sessão é a sessão, e a sessão é uma tecnologia de cache de servidor, criada pelo servidor, quando o usuário efetua login no sistema, geralmente as informações do usuário logado serão salvas no objeto de sessão, e então o id (JSESSIONID) correspondente à sessão será salvo como Return, então a maioria dos sistemas usará o mecanismo de sessão para obter autenticação. A sessão salva dados na forma de valor-chave.

Pergunta 8: O que é um token?

O token chamado é na verdade uma string retornada pelo servidor (algo semelhante a: xys73494954sdhcdr83435 tal string). Com base em qual algoritmo esses dados são gerados, eles precisam ser confirmados pelo desenvolvimento. Geralmente, esses dados são únicos e o token retornado pelo servidor será diferente a cada vez. O motivo pelo qual o Token pode ser usado para autenticação é baseado no seguinte princípio: O
usuário a chama a interface de login- "conectado ao sistema b-" O servidor gera uma informação de token exclusiva (assumindo c) e, em seguida, obtém o número do usuário id (Suponha que d) faça um mapeamento: cd, e então armazene tal relacionamento de mapeamento no banco de dados ou cache redis, e então retorne este token para o cliente- "Quando o cliente chama outras interfaces que requerem autenticação, ele só precisa trazer o token em cache para o passado para verificação- "O servidor verifica se há informações do usuário conectado com base neste token para determinar se a solicitação é um usuário autorizado conectado. (Aqui, como o cliente obtém o token, como salvá-lo e como trazê-lo ao solicitar novamente, conforme explicado na seção de autenticação da interface acima).

Questão 9: Para uma solicitação de interface, o parâmetro depende dos dados de retorno da interface anterior, como lidar com isso (associação de interface)?

Cenário: Ao chamar a interface b, os parâmetros dependem dos dados de retorno da interface a. Solução:
a. Depois de chamar a interface- "Remova o parâmetro do qual b depende da resposta-" Salve-o - "Quando b for chamado, retire esta informação-" Passe como um parâmetro.

Questão 10: A chamada de interface depende da interface b de terceiros e a interface b não foi fornecida a você. Como lidar com isso?

Construa seu próprio sistema / plataforma mock através do framework mock (na verdade, você desenvolve sua própria interface), e você pode simular este mock de interface de terceiros, para que esta dependência seja resolvida

Pergunta 11: como limpar dados inúteis em testes de interface?

Você mesmo pode preparar um ambiente separado (banco de dados independente), de forma que os dados gerados pela chamada da interface possam ser excluídos executando o script sql após a execução de todo o conjunto (@AfterSuite).

Questão 12: Você faz automação de interface, qual banco de dados o projeto usa e qual banco de dados é usado para operar este banco de dados?

Mysql, você pode adicionar, excluir, verificar e modificar o banco de dados através do jdbc.

Questão 13: como você faz a verificação de dados ao fazer a automação da interface?

A verificação de dados inclui principalmente dois aspectos:

  1. Verificação das mensagens de resposta da interface
    Use jsonpath para recuperar os valores dos campos-chave nos dados de resposta (na maioria dos casos json) e verifique se os valores desses campos-chave atendem às expectativas por meio de Assert. O valor esperado e a expressão de valor jsonpath podem ser configurados no Excel.
  2. Para verificar os dados da tabela do banco de dados, você deve primeiro entender dois pontos para a verificação dos dados da tabela:
    a. A verificação dos dados da tabela deve primeiro entender o negócio básico dessa interface, quais tabelas e quais campos serão afetados e, em seguida, se preparar para consultar o sql a ser direcionado Verifique os dados.
    b. Nem todos os casos de uso irão operar no banco de dados e afetar os dados da tabela, portanto, apenas os casos de uso que afetam os dados da tabela são preparados por scripts de consulta.
    Método específico:
    preparação de caso de uso do Excel aa, bb, cc três colunas, aa script de transferência, bb, cc duas colunas são usadas para escrever de volta os resultados da consulta SQL antes da execução do caso de uso e os resultados da consulta SQL após a execução do caso de uso, dois dados podem ser comparados Se as alterações de dados atendem às expectativas.

Pergunta 14: como melhorar a eficiência de execução do conjunto de testes

  1. Reduza a leitura e escrita do Excel, reduza operações desnecessárias de io
  2. Os dados do Excel lêem os dados de teste e os armazena em variáveis ​​estáticas).
  3. Para escrever de volta os dados do Excel, tente escrever em lotes.

Pergunta 15: Você usou uma estrutura de teste de unidade, que estrutura é e quais são as operações comuns?

Usados, unittest, pytest (se você não estiver familiarizado com eles), todos esses frameworks de teste nos ajudam a definir suites de teste para gerenciar nosso código de caso de teste. Ao mesmo tempo, as anotações ricas fornecidas por esses frameworks de teste não podem apenas controlar o teste convenientemente A sequência de execução de casos de uso controla todo o processo de teste e também pode fornecer suporte para a realização de vários cenários de teste.
Operações comuns:
seutp, teardown, adequado para a inicialização e limpeza do ambiente de um único caso de teste.
seutpClass, teardownClass: adequado para inicialização global e limpeza de ambiente de classes de teste.
assertXXXX: vários métodos de asserção
testLoader’s discover: usado para descobrir casos de teste
testSuite’s addTests: usado para carregar casos de teste
@ddt data-driven
htmlTestRunner: usado para gerar relatórios de teste html

Pergunta 16: Fale-me sobre o seu conhecimento sobre interfaces

A interface é um serviço, uma realização de ponto de função, um canal de transmissão de dados e um do lado do servidor que implementa um determinado protocolo (como o protocolo http ...) e um mecanismo de mapeamento (quando um URL é acessado, será resolvido por meio do mecanismo de processamento de mapeamento do lado do servidor, caindo para a função de processamento correspondente), o parâmetro de interface é o parâmetro de função e os dados de resposta da interface são o valor de retorno da função

Pergunta 17: Você já fez um teste de interface? Quais são algumas ferramentas familiares?

Ter feito isso (mesmo que você não tenha usado uma ferramenta de visualização para fazer o teste de interface antes, mas agora você aprendeu o teste de automação de interface, mesmo se tiver experiência).
Ferramentas familiares: Ferramentas
visuais como: jmeter, postman, soapui, etc. (o que foi usado, diga qual) Código: solicita a tecnologia do pacote para implementar o teste de interface.

Pergunta 18: Quais são os métodos de solicitação comuns para interfaces?

GET, POST, PUT, DELETE, etc. (não familiar pode ser dito)

Pergunta 19: Fale brevemente sobre a diferença entre os dois métodos de solicitação: get e post?

Obtenha

  1. Geralmente, as solicitações de busca de dados do servidor podem ser definidas para obter
  2. Ao passar parâmetros no método Get, os parâmetros geralmente são combinados diretamente no url (por exemplo: http: // xxx? Id = 1 & type = 2)
  3. A quantidade de dados de parâmetro que podem ser passados ​​pelo método de solicitação Get é limitada (porque os parâmetros gerais são combinados no url e o navegador tem um limite no comprimento do url)
  4. Como a solicitação Get une diretamente os dados na URL, a segurança não é tão forte quanto a postagem (relativa), mas a eficiência de execução de get é mais rápida do que a postagem

Postagem :

  1. Geralmente, as solicitações de envio de dados para o servidor serão configuradas para postar
  2. Passar parâmetros no modo Post geralmente coloca os parâmetros no corpo da solicitação em vez de uni-los no url
  3. A quantidade de dados que podem ser enviados pelo método de pós-solicitação não é limitada
  4. A transferência de parâmetros de pós-solicitação é mais segura do que get (relativamente não absoluta), mas a eficiência de execução de post não é tão eficiente quanto get

Pergunta 20: O que acontece depois de inserir o URL no navegador e pressionar Enter?

  1. Resolução de URL
  2. Busca DNS
  3. Conexão TCP
  4. Processando pedido
  5. Aceitar resposta
  6. Renderizar a página

Pergunta 21: Para unir a lista a = ["h", "e", "l", "l", "o"] em uma string, use vários métodos para obter

a = ["h","e","l","l","o"]

方式一:字符串函数调用
print("".join(a))  

方式二:for循环
s = ""
for item in a:
    s += item
print(s)

Pergunta 22: Existe um arquivo denominado data.log.O conteúdo em data.log é separado por uma vírgula e o TestID, TestTime, Success (0 sucesso; 1 falha) de um teste são armazenados sequencialmente. Os dados do arquivo são todos inteiros não negativos. Escreva um programa (sem limite de idioma), para todos os testes bem-sucedidos (sucesso = 0), saída:

  1. Imprima o máximo e mínimo TestTime;
  2. Imprima o TestTime médio com 2 casas decimais.
    O formato do conteúdo de data.log é o seguinte:
    TestID, TestTime, Success
    0,149,0
    1,69,0
    2,45,0
    3,18,1
    4,18,1
"""
打开data.log文件 。除了第一行,剩下的第一行都是数据。
只需要按行解析数据,将success对应的值为0的提取出来,将TestTime放在一个新的列表当中。
取这个列表当中,最大的值,和最小的值。
同时,对这个列表的所有数据进行取平均值即可。
"""
import os

def anaysis_data():
    test_times = []
    # 打开data.log文件
    with open(os.getcwd() + "/data.log") as fs:
        for line in fs.readlines():  # 按行读取
            temp = line.strip("\n").split(",") # 去掉换行符之后,再按,分割
            print("temp",temp)
            if temp[-1] == str(0): # 筛选success字段为0的TestTime
                test_times.append(int(temp[-2]))

    if len(test_times) > 0:
        avg_time = sum(test_times) / len(test_times) # 平均值
        max_time = max(test_times)
        min_time = min(test_times)
        print("最大的TestTime: ",max_time,",最小的TestTime: ",min_time,",平均TestTime: ",avg_time)


if __name__ == '__main__':
    anaysis_data()
    
    """
    输出结果为:
    temp ['TestID', 'TestTime', 'Success']
    temp ['0', '149', '0']
    temp ['1', '69', '0']
    temp ['2', '45', '0']
    temp ['3', '18', '1']
    temp ['4', '18', '1']
    最大的TestTime:  149 ,最小的TestTime:  45 ,平均TestTime:  87.66666666666667
    """

Acho que você gosta

Origin blog.csdn.net/weixin_44102466/article/details/104857230
Recomendado
Clasificación