Pular para o conteúdo principal

Testes no RUP (Parte 2)

Em muitas organizações, os testes começam muito tarde no processo de desenvolvimento de um software. Muitas vezes, começam tão tarde que o produto é lançado com uma quantidade irrisória de testes executados. Para solucionar esse problema, muitas empresas estão começando a adotar testes como um 'mal necessário'.

Como contraste a esse panorama, o RUP modifica a abordagem de testes, distribuindo a mesma no decorrer do ciclo de desenvolvimento do software, agregando valor ao invés de arcar com custos excessivos decorrentes da ausência de testes.

No post anterior, justificamos a pergunta 'por que testar cedo e com frequência?' com o gráfico de custos. A seguir vocês podem ver um gráfico similar, retirado do site da IBM (detentora da metodologia RUP):



Muitas pessoas ainda veem a disciplina de Testes como algo secundário, por que isso acontece? Talvez porque não esteja diretamente ligado ao desenvolvimento do software e por isso é muitas vezes deixado para o final, depois do software pronto, porém, sem tempo hábil para a mínima garantia de qualidade.

Taí uma palavra interessante em todo esse processo: qualidade. Uma pergunta talvez esclareça de uma forma definitiva a necessidade (eu diria obrigatoriedade) de envolver os testes intimamente no ciclo de desenvolvimento de um software: Como garantir a qualidade de um produto se o mesmo não passou por um controle de qualidade (testes de software, no caso) ?

Acho que a partir daqui, não precisamos mais justificar a importância dos testes e podemos iniciar na descrição disciplina propriamente dita. Vamos lá!

O RUP oferece diversos mecanismos para integrar o processo de teste ao esforço destinado ao desenvolvimento do software, segue a lista:

- Fazer com que Teste seja uma disciplina distinta;
- Usar a abordagem iterativa de desenvolvimento;
- Verificar qualidade continuamente;
- Deixar os casos de uso guiarem o desenvolvimento;
- Agendar a implementação baseada em riscos;
- Gerenciar mudanças estrategicamente;
- Usar processo corretamente dimensionado.

Abaixo segue uma análise mais específica dos itens que especificam a disciplina de Testes (marcados em negrito na lista acima):

Fazer com que Teste seja uma disciplina distinta

Como foi explicado no post anterior, em RUP as atividades são organizadas em grupos similares chamados de Disciplinas.

Nesse modelo, Teste é uma das disciplinas. Tal disciplina participa do processo de desenvolvimento tanto como consumidor quanto como fornecedor de artefatos e atividades - cada um desses é claramente definido no RUP. As instruções de como testar em RUP define artefatos, templates, ferramentas mentoras, guias, e pontos de checagem a serem usados. A figura abaixo mosta o workflow da disciplina de Testes:



A interface entre as outras disciplinas e Testes é também claramente definida no RUP. Os artefatos e atividades que outras disciplinas disponibilizam são projetadas e construídas para prover valor (alimentar) a disciplina de Testes. Ou seja, não há necessidade de reformatar documentos ou reavaliar a qualidade dos mesmos, porque desde a construção da documentação é considerada a sua utilização em Testes.

O RUP define não só um papel específico para a disciplina de Testes, define 4 deles. A seguir a figura que os define:



Verificar qualidade continuamente

Verificar continuamente a qualidade é uma boa prática do RUP. Tal verificação é conseguida através de pontos de checagem, inerentes a cada um dos artefatos, atividades e entregas no decorrer do processo. Cada membro do time, com seu respectivo papel, é responsável pela qualidade de seu trabalho e tem as ferramentas necessárias para garantí-la.


Deixar os casos de uso guiarem o desenvolvimento

Podemos dizer que o RUP é 'use-case driven' - guiado pelos casos de uso. Ou seja, os requerimentos funcionais são previamente capturados na forma de casos de uso. Os esforços de design e implementação têm foco voltado para entregar o produto tal como descrito nos casos de uso. Tal característica fica mais evidente quando analisamos a figura a seguir:



A grosso modo, um caso de uso é um diálogo entre um ator (alguém de fora do sistema) e o sistema propriamente dito. Os casos de uso simplificam a visualização do sistema a ser construído pelo time de desenvolvimento; eles organizam os requerimentos do sistema de um modo que os faz mais compreensíveis e utilizáveis por todos os membros do time, e não somente pelos membros que irão implementar tais requerimentos.

Voltando a disciplina de testes, existe uma forma simples de transformar os casos de uso em casos de testes. Tal processo é descrito por Jim Huemann no seguinte artigo: "Generating Test Cases From Use Cases".

Para ler mais sobre RUP, e também sobre a disciplina de Testes, segue o link:

Perguntas?

Até a próxima!

Comentários

Postagens mais visitadas deste blog

FURPS

Olá! Nesse post, pretendo falar um pouco sobre o modelo FURPS para ilustrar atributos que estão envolvidos em Qualidade de Software : Vamos começar pela sigla FURPS: o que significa cada uma dessas letras? Do F temos Functionality, traduzimos como Funcionalidade: Representa basicamente os requisitos funcionais do sistema. Do U temos Usability, traduzimos como Usabilidade: Representa basicamente a interface sistema-usuário. Do R temos Reliability, traduzimos como Confiabilidade: Representa basicamente a eficiência e o índice de falhas do sistema. Do P temos Performance, traduzimos como Desempenho: Representa basicamente tempos de resposta e capacidade de processamento do sistema. Do S temos Supportability, traduzimos como Suportabilidade: Representa basicamente esforços necessários para manutenção e configuração do sistema. As definições acima representam o básico de cada uma das letras que compõem a sigla FURPS. A seguir entraremos em detalhes sobre cada uma das categorias, não ante...

O + do FURPS+

Segue a continuação do assunto FURPS: Posteriormente à definição do modelo FURPS, notou-se a necessidade da inclusão de mais atributos para encorpar e aumentar a cobertura do modelo. A partir dessa extensão, o acrônimo passou a ser mais comumente chamado de FURPS+ . Quais são os atributos do “+”? O + do FURPS refere-se a especificação de restrições que definirão determinados limites que deverão ser atendidos quando construímos um sistema. O + é composto dos seguintes requisitos não-funcionais: Design constraints – restrições de design: design nesse caso refere-se ao projeto, diretrizes e não a layout. A definição da utilização um banco de dados relacional no projeto é uma restrição de design, por exemplo. Implementation constraints – restrições de implementação: relacionado a limites impostos a código e construções. Como exemplo podemos citar a linguagem de programação que será utilizada para a codificação de um sistema. Interface constraints – restrições de interface: diretamente l...

Níveis de Testes - Parte 3: Testes de Sistema

Seguindo com os quatro principais níveis de testes do ciclo de vida de um software, abordaremos agora o terceiro nível, Testes de Sistema: 1. Testes Unitários 2. Testes de Integração 3. Testes de Sistema 4. Testes de Aceitação Nos próximos posts abordaremos os itens seguintes. Testes de Sistema Teste de sistema de um software, ou hardware, é todo teste conduzido em um sistema completo e integrado com o objetivo de avaliar se o sistema está em conformidade com os requerimentos especificados. Como comparação podemos ilustrar uma comparação entre os Testes de Integração e os Testes de Sistema: Pode-se dizer, de forma geral, que o propósito dos Testes de Integração é detectar qualquer inconsistência entre as unidades de software que funcionam em conjunto ou entre qualquer inconsistência entre essas unidades e o hardware. No caso dos Testes de Sistema, trata-se de um nível de teste mais limitado; o propósito dos Testes de Sistema é procurar defeitos tanto nas unidades integradas quanto no...