Qualidade de software Flashcards
O que é complexidade ciclomática?
Mede o número de caminhos lineares independentes através do código, é calculada com base na estrutura do grafo.
Qual a fórmula para calculo do grau ciclomático?
V(G) = E - N + 2P, onde E é o número de arestas, N é o número de nós, e P é o número de componentes conexos (geralmente P=1 para programas sequenciais).
Quais as 8 características principais para avaliar um software? (Qualidade do software)
<ul>
<li><strong>Funcionalidade (Adequação Funcional)</strong> – O software faz o que foi projetado para fazer?</li>
<li><strong>Eficiência de Desempenho</strong> – Responde rapidamente e usa bem os recursos?
<ul>
<li>Pressupõe comportamento adequando quanto ao tempo de resposta e comportamento adequado quanto aos recursos utilizados.</li>
</ul>
</li>
<li><strong>Compatibilidade</strong> – Funciona corretamente com outros sistemas?</li>
<li><strong>Usabilidade</strong> – É fácil de aprender e usar?
<ul>
<li>Pressupõe inteligibilidade, operabilidade e apreensibilidade.</li>
</ul>
</li>
<li><strong>Confiabilidade</strong> – Funciona de forma estável e sem falhas frequentes?</li>
<li><strong>Segurança</strong> – Protege os dados e evita acessos não autorizados?</li>
<li><strong>Manutenibilidade</strong> – É fácil de corrigir, modificar e melhorar?
<ul>
<li>Pressupõe analisabilidade, modificabilidade, estabilidade e testabilidade.</li>
</ul>
</li>
<li><strong>Portabilidade</strong> – Pode ser transferido para outros ambientes facilmente?
<ul>
<li>Pressupõe: adaptabilidade, capacidade para ser instalado, capacidade para substituição.</li>
</ul>
</li>
</ul>
Quais os pontos para avaliar a experiência do usuário? (Qualidade do uso)
<ul>
<li><strong>Eficácia</strong> – O usuário atinge seus objetivos com sucesso?</li>
<li><strong>Eficiência</strong> – O usuário gasta poucos recursos e tempo?</li>
<li><strong>Satisfação</strong> – O usuário fica satisfeito com a experiência?</li>
<li><strong>Segurança</strong> – O uso do software não gera riscos ao usuário ou aos dados?</li>
</ul>
O que é metodologia DAST e SAST?
<p><strong>SAST</strong> (Static Application Security Testing), como o utilizado pelo SonarQube, analisa o código-fonte, byte code ou binários de aplicativos para detectar vulnerabilidades sem executar o programa. <strong>DAST</strong> (Dynamic Application Security Testing) testa a aplicação do ponto de vista externo, em um ambiente de execução, para identificar falhas de segurança. Essa diferença é crucial para entender as capacidades e limitações das ferramentas de análise de segurança de software.</p>
Quais os princípios básicos para garantia da qualidade do software?
<ul>
<li>Satisfação do cliente;</li>
<li>Liderança;</li>
<li>Envolvimento das pessoas;</li>
<li>Abordagem de processo;</li>
<li>Melhoria contínua;</li>
<li>Tomada de decisão baseada em evidências e</li>
<li>Gestão de relações.</li>
</ul>
O que é gestão da configuração de um software?
A gestão de configuração de software (GCS) é um conjunto de atividades de apoio que permite a absorção ordenada das mudanças inerentes ao desenvolvimento de software, mantendo a integridade e a estabilidade durante a evolução do projeto. As atividades da GCS e as respectivas ferramentas de apoio são: Controlar e acompanhar mudanças, Registrar a evolução do projeto e Estabelecer a integridade do sistema.
O que é teste caixa-preta?
São uma abordagem de testes de software onde o testador foca somente nas entradas e saídas do sistema, sem se preocupar com a implementação interna ou o código-fonte do software. Ou seja, o comportamento do sistema é avaliado com base em suas funções e requisitos, sem que o testador tenha acesso ao código ou à estrutura interna do sistema.
O que é teste caixa-branca?
São um tipo de teste de software que envolve a análise da estrutura interna do sistema. Ao contrário dos testes de caixa preta, onde o foco está nas entradas e saídas do sistema, os testes de caixa branca são realizados tendo acesso ao código-fonte e à lógica interna do software. O objetivo é verificar a funcionalidade interna do sistema, garantindo que o código esteja sendo executado corretamente e que todas as partes do sistema sejam testadas.
O que é teste de regressão?
São um tipo de teste de software que visa garantir que alterações no código, como correções de bugs ou novas funcionalidades, não introduzam erros ou quebras em funcionalidades já existentes. O objetivo principal é verificar se o sistema ainda funciona corretamente após modificações no código-fonte.
O que é teste não funcional?
São um tipo de teste de software que avaliam aspectos do sistema que não estão diretamente relacionados às funcionalidades específicas ou ao comportamento esperado do software em relação às entradas e saídas. Ou seja, ao invés de verificar se o sistema faz o que se espera dele (como nos testes funcionais), os testes não funcionais se concentram em aspectos relacionados à performance, usabilidade, segurança, compatibilidade, entre outros.
Quais são as principais métricas de qualidade do código?
Complexidade ciclomática
Cobertura de código
Densidade de defeitos
Acoplamento
Coesão
Tamanho do código
Herança
Duplicação de código
O que é garantia da qualidade?
É a definição de processos e padrões que devem levar a produtos de alta qualidade e à introdução de processos de qualidade no processo de fabricação.
O que é controle da qualidade?
É a aplicação desses processos de qualidade para eliminar os produtos que não são do nível exigido de qualidade.
Quais as atividade do gerenciamento da configuração?
- Controle de versão. Envolve manter o controle das várias versões dos componentes do sistema e garantir que as mudanças feitas em componentes por diferentes desenvolvedores não interfiram umas com as outras.
- Construção de sistema. Processo de reunir componentes, dados e bibliotecas do programa, compilando-os e ligando-os para criar um sistema executável.
- Gerenciamento de mudanças. Envolve manter o controle das solicitações de mudança de clientes e desenvolvedores no software já entregue, elaborar os custos e o impacto de fazer essas mudanças e decidir se e quando as alterações devem ser implementadas.
- Gerenciamento de lançamentos (releases). Envolve a preparação de software para o lançamento externo e o acompanhamento das versões de sistema que foram lançadas para uso do cliente.