DEPURAÇÃO E TESTE DE PROGRAMAS
DEPURAÇÃO E TESTE DE PROGRAMAS
FACULDADE DE ENGENHARIA
ENGENHARIA
DATE:1ST/08/2022
1
PROGRAMANDO
Computer programming is the process of writing a code or set of instructions to be interpreted
e executado por um computador ou outro dispositivo eletrônico.
Programa de computador
Um programa de computador é uma sequência de instruções que um computador pode interpretar e executar.
Os programas de computador podem ser caracterizados como interativos ou em lote em termos do que os impulsiona e
como eles correm continuamente.
1. Sistemas Operacionais
Um sistema operacional é um programa de computador que fornece um ambiente padrão para os usuários e
para rodar outros programas de computador. Por exemplo, Linux, Android, iOS e Windows são
sistemas operacionais.
2. Aplicação
Um aplicativo é qualquer programa de computador que é escrito principalmente para as pessoas usarem. Isso inclui
categorias amplas como produtividade de escritório, software empresarial e software de mídia.
3. Sistemas
Sistemas são programas de computador que são projetados principalmente para automação, ao invés de agir.
como uma ferramenta para as pessoas usarem. Por exemplo, um sistema de pagamento que realiza processamento de transações
para compras.
2
4. Plataformas
As plataformas são ambientes para construir sistemas e aplicativos para a nuvem ou um determinado
dispositivo.
5. Sistemas Embarcados
Sistemas embarcados são computadores e programas de computador que são incorporados em dispositivos do dia a dia
Uma linguagem de programação é uma linguagem de computador que é usada por programadores (desenvolvedores) para
comunicar-se com computadores. É um conjunto de instruções escritas em qualquer linguagem específica (C, C++,
Java e Python) para realizar uma tarefa específica.
Uma linguagem de programação é principalmente usada para desenvolver aplicativos de desktop, sites e móveis.
aplicações.
executa programas de baixo nível diretamente sem a necessidade de um compilador ou interpretador, então os programas
escrito em linguagem de baixo nível pode ser executado muito rapidamente.
i. Linguagem de Máquina
A linguagem de máquina é um tipo de linguagem de programação de baixo nível. Também é chamada de código de máquina.
ou código objeto. Não requer um tradutor para converter os programas porque os computadores
entender diretamente os programas de linguagem de máquina.
3
ii. Linguagem de Montagem
A linguagem de montagem (ASM) também é um tipo de linguagem de programação de baixo nível que é projetada para
processadores específicos. Representa o conjunto de instruções de forma simbólica e compreensível para os humanos
forma. Ele usa um montador para converter a linguagem de montagem em linguagem de máquina.
A vantagem da linguagem de montagem é que ela requer menos memória e menos tempo de execução para
execute um programa.
Linguagem de programação de alto nível inclui Python, Java, JavaScript, PHP, C#, C++, Objective
C, COBOL, Perl, Pascal, LISP, FORTRAN e Swift linguagem de programação.
ou funções.
A linguagem de programação orientada a procedimentos é usada por um programador de software para criar um
programa que pode ser realizado utilizando um editor de programação como IDE, Adobe
Dreamweaver, ou Microsoft Visual Studio.
A vantagem da linguagem POP é que ela ajuda os programadores a rastrear facilmente o fluxo do programa
e o código pode ser reutilizado em diferentes partes do programa.
4
ii. Linguagem de Programação Orientada a Objetos
entidades como herança, polimorfismo, abstração, etc. no programa para tornar o programa
reutilizável, eficiente e fácil de usar.
A principal vantagem da programação orientada a objetos é que OOP é mais rápida e fácil de executar.
manter, modificar, assim como depurar.
Nota: A linguagem de programação orientada a objetos segue uma abordagem de baixo para cima.
A linguagem natural é parte das línguas humanas, como o inglês, russo, alemão e japonês.
É usado por máquinas para entender, manipular e interpretar a linguagem humana. É usado por
desenvolvedores para realizar tarefas como tradução, sumarização automática, Entidade Nomeada
Reconhecimento de Entidade Nomeada (NER), extração de relacionamentos e segmentação de tópicos.
A principal vantagem da linguagem natural é que ela ajuda os usuários a fazer perguntas sobre qualquer assunto e
A linguagem de programação de médio nível está entre a linguagem de programação de baixo nível e
linguagem de programação de alto nível. Também é conhecida como linguagem de programação intermediária
e pseudo-linguagem.
As vantagens de uma linguagem de programação de nível médio são que ela suporta os recursos de uma linguagem de alto nível.
programação, é uma linguagem amigável ao usuário, e intimamente relacionada à linguagem de máquina e humana
língua.
C, C++, linguagem
5
Linguagem de Programação Mais Comumente Usada
Existem dezenas de linguagens de programação usadas pelas indústrias. Algumas das mais amplamente utilizadas
Python é uma das linguagens de programação mais amplamente utilizadas e amigáveis. É um software de código aberto
e uma linguagem de programação fácil de aprender desenvolvida na década de 1990. É usada principalmente em Máquinas
aprendizado, inteligência artificial, Big Data, aplicações de desktop baseadas em GUI e Robótica.
Vantagens
Python executa código linha por linha, então é fácil para o programador encontrar o erro que
ocorreu no código.
Python é independente de plataforma, o que significa que você pode escrever o código uma vez e executá-lo em qualquer lugar.
Desvantagens
Python trabalha com o interpretador. É por isso que é mais lento do que outras linguagens de programação.
Java é uma linguagem simples, segura, independente de plataforma, confiável e neutra em relação à arquitetura de alto nível.
6
Vantagens
Java é fácil de escrever, compilar, aprender e depurar em comparação com outras linguagens de programação
línguas.
É uma linguagem de programação altamente segura porque em Java não existe o conceito de
ponteiros explícitos.
Desvantagens
Java consome mais memória e é mais lento que outras linguagens de programação como C ou
C++
3. Linguagem de Programação C
C é uma linguagem de programação de computador popular, simples e flexível de propósito geral. Dennis M
Ritchie o desenvolve em 1972 na AT&T. É uma combinação de programação de baixo nível
linguagem assim como uma linguagem de programação de alto nível. É usada para projetar aplicações como
Editores de texto, Compiladores, Dispositivos de rede e muitos mais.
Vantagens
Desvantagens
C++ é uma das milhares de linguagens de programação que usamos para desenvolver software. C. É
semelhante à linguagem de programação C, mas também inclui alguns recursos adicionais, como
tratamento de exceções, programação orientada a objetos, verificação de tipo, etc.
Vantagens
Oferece uma abstração de alto nível e é útil para uma linguagem de programação de baixo nível, e
mais eficiente para uso geral.
Disadvantages
A linguagem de programação C++ não é tão segura em comparação com outras linguagens de programação
5. Linguagem de Programação C#
C# (pronunciado como C sharp) é uma linguagem de programação moderna, de uso geral e orientada a objetos.
linguagem usada com serviços Web baseados em XML na plataforma .NET. É principalmente projetada para
melhorar a produtividade em aplicativos web. É mais fácil de aprender para aqueles usuários que têm conhecimento suficiente
Vantagens
8
C# é uma linguagem de programação moderna, segura em tipos, fácil, rápida e de código aberto que é
facilmente integrado com o Windows.
C# inclui uma forte capacidade de backup de memória. É por isso que evita o problema de
vazamento de memória.
Desvantagens
JavaScript é um tipo de linguagem de script que é usada tanto no lado do cliente quanto no lado do servidor.
Foi desenvolvido na década de 1990 para o navegador da web Netscape Navigator. Ajuda programadores a
criar sites dinâmicos, servidores, aplicativos móveis, gráficos animados, jogos e mais.
Vantagem
Desvantagem
Para evitar o funcionamento incorreto de um software ou sistema, a depuração é utilizada para encontrar e resolver
bugs ou defeitos.
Um inseto.
A software bug is an error, flaw or fault in a computer program or system that causes it to
produzir um resultado incorreto ou inesperado, ou comportar-se de maneiras não intencionais.
Tipos de insetos.
1. Erros funcionais
Este é um tipo abrangente de erro que acontece sempre que o software não se comporta como previsto.
exemplo, se o usuário final clicar no botão “Salvar”, mas os dados inseridos não forem salvos, isso é um
erro funcional. Após alguma investigação, um testador de software pode identificar um culpado mais específico
por trás do erro e reclassificá-lo como um tipo diferente de bug.
2. Erros de sintaxe
Compilar programas geralmente indica onde ocorreu um erro de sintaxe para que o programador possa
conserte-o.
3. Logic errors
Um erro de lógica representa um erro no fluxo do software e faz com que o software se comporte
incorretamente. Esse tipo de erro pode fazer com que o programa produza uma saída incorreta, ou até mesmo
travar ou colidir. Ao contrário dos erros de sintaxe, os erros de lógica não impedem que um programa seja compilado.
Um erro de lógica comum é o loop infinito. Devido a um código mal escrito, o programa repete um
sequência sem fim até que trave ou pare devido a intervenção externa, como o usuário fechando um
janela do navegador ou desligando a energia.
10
4. Erros de cálculo
Sempre que o software retorna um valor incorreto - seja um que o usuário final vê ou um que é
passou para outro programa— isso é um erro de cálculo. Isso pode acontecer por várias razões:
Embora esse tipo de erro possa ser caro em certos contextos—como no setor bancário, onde uma informação incorreta
o cálculo pode resultar na perda de dinheiro—perseguir o erro de cálculo é tipicamente apenas
uma questão de matemática.
Os bugs de software em nível de unidade são os mais comuns. Eles também são tipicamente os mais fáceis de corrigir.
Depois que seu software é inicialmente codificado, você precisa ver como ele funciona por meio de testes unitários—
tomar uma pequena seção lógica de código e verificar se ela funciona conforme o planejado. É aqui que
vários tipos de bugs de máquina de estado, erros de cálculo e bugs de lógica básica são frequentemente
descoberto.
Esse tipo de erro ocorre quando dois ou mais programas de subsistemas separados interagem
erroneamente. Muitas vezes, os dois conjuntos de código são escritos por desenvolvedores diferentes. LaVine explica que
mesmo quando há um conjunto sólido de requisitos para os desenvolvedores seguirem, geralmente há algum nível
da interpretação necessária ou detalhes que são negligenciados, causando a interação entre dois
peças de software para falhar.
Bugs de integração em nível de sistema são mais difíceis de corrigir porque você está lidando com mais de uma peça
do software, então a complexidade aumenta enquanto a visibilidade geral diminui,” diz LaVine. “Isso
A classe de bug é frequentemente causada por coisas como troca de bytes, análise de mensagens ou estouro de memória.
questões.
LaVine observa que esses tipos de bugs de software aparecem quando o usuário final interage com o
software de maneiras que não eram esperadas. Isso geralmente ocorre quando o usuário define um parâmetro fora
os limites do uso pretendido, como inserir um número significativamente maior ou menor do que o codificado
por ou ao inserir um tipo de dados inesperado, como texto onde deveria haver um número.
11
O processo de depuração:
1. Reproduza o problema.
2. Describe the bug. Try to get as much input from the user to get the exact reason.
3. Capture a instantânea do programa quando o bug aparecer. Tente obter todos os valores das variáveis.
4. Analise a instantânea com base no estado e na ação. Com base nisso, tente encontrar a causa de
o inseto.
5. Corrija o erro existente, mas também verifique se nenhum novo erro ocorre.
Abordagens de Depuração:
Método de força bruta: É o método de depuração mais comum, mas é o menos eficiente.
método. Nesta abordagem, instruções de impressão são inseridas ao longo do programa para imprimir o
valores intermediários na esperança de que alguns dos valores impressos ajudem a identificar o
declaração em erro. Esta abordagem torna-se mais sistemática com o uso de um depurador simbólico
também é chamado de depurador de código-fonte.
Retrocesso: Esta também é uma abordagem bastante comum. Nesta abordagem, começando a partir de
declaração na qual um sintoma de erro foi observado, o código-fonte é rastreado para trás
até que o erro seja descoberto. Infelizmente, à medida que o número de linhas de código a serem rastreadas aumenta
aumenta, o número de caminhos de retorno potenciais aumenta.
Método de eliminação de causas: Nesta abordagem, assim que uma falha é observada, os sintomas da
falhas são notadas. Com base nos sintomas da falha, as causas que poderiam ter contribuído para o
o sintoma se desenvolve e os testes são realizados para eliminar cada um. Uma técnica relacionada de
A identificação do erro a partir do sintoma do erro é a análise da árvore de falhas do software.
Ferramentas de Depuração
Existem duas ferramentas de depuração. A primeira é um mecanismo de rastreamento que pode ser usado no global
funções no loop de nível superior.
12
A segunda ferramenta é um depurador que não é usado no loop de nível superior normal. Depois de um primeiro programa
Executar é possível voltar para pontos de interrupção, inspecionar valores ou reiniciar certas funções
com argumentos diferentes.
Esta segunda ferramenta só funciona sob UNIX, porque duplica o processo em execução através de um fork.
13
TESTE DE PROGRAMA
O teste é o processo de executar um programa com o objetivo de encontrar erros. Para tornar nosso
o software deve funcionar bem e deve estar livre de erros. Se os testes forem realizados com sucesso, isso removerá todos os
erros do software.
Princípios do Teste: -
Todos os testes devem atender aos requisitos do cliente.
ii. Para que nossos testes de software sejam realizados por um terceiro
iii. Testes exaustivos não são possíveis. Precisamos da quantidade ideal de testes com base no
avaliação de risco do aplicativo.
iv. Todos os testes a serem realizados devem ser planejados antes de sua implementação.
v. Segue a regra de Pareto (regra 80/20) que afirma que 80% dos erros vêm de 20% de
componentes do programa.
vi. Comece testando com pequenas partes e amplie para partes maiores.
Tipos de Teste: -
1. Testes de Unidade
Foca na menor unidade de design de software. Neste, testamos uma unidade individual ou grupo de
unidades inter-relacionadas. Isso é frequentemente feito pelo programador usando entradas de exemplo e observando sua
saídas correspondentes.
2. Teste de Integração
O objetivo é pegar componentes testados em unidade e construir uma estrutura de programa que tenha sido
ditado pelo design. Teste de integração é um teste no qual um grupo de componentes é combinado para
produzir saída.
Integration testing is of four types: (i) Top-down (ii) Bottom-up (iii) Sandwich (iv) Big-Bang
3. Teste de Regressão
14
Toda vez que um novo módulo é adicionado, leva a mudanças no programa. Esse tipo de teste faz
garanta que todo o componente funcione corretamente mesmo após a adição de componentes ao completo
programa.
4. Teste de Fumaça
Este teste é realizado para garantir que o software em teste esteja pronto ou estável para testes adicionais.
É chamado de teste de fumaça, pois o teste inicial é feito para verificar se não pegou fogo ou
fumos ao ligar inicialmente.
5. Teste Alfa
Este é um tipo de teste de validação. É um tipo de teste de aceitação que é realizado antes do
o produto é liberado para os clientes. Isso é feito geralmente por pessoas de Qualidade.
6. Teste Beta
O teste beta é conduzido em um ou mais locais de clientes pelo usuário final do software. Isso
a versão é lançada para um número limitado de usuários para teste em um ambiente em tempo real
7. Teste de Sistema
Este software é testado de forma que funciona bem para os diferentes sistemas operacionais. Está coberto
sob a técnica de teste de caixa-preta. Nisso, focamos apenas na entrada e saída necessárias
sem focar no funcionamento interno.
Este teste é uma combinação de várias técnicas de teste que ajudam a verificar e validar objeto-
software orientado. Este teste é feito da seguinte maneira:
i. Teste de Requisitos,
15
iv. Teste de integração,
v. Teste de sistema,
1. Mestre em Testes
3. Teste Completo
4. Ranorex
5. Sahi
6. Watir
9. Katalon Studio
16
https://www.jotform.com/blog/tipos-de-bug-de-software/
https://www.techtarget.com/searchsoftwarequality/definition/debugging/
17