Monthly Archives: February 2014

Entendendo os Tipos de Release

Durante a criação do software é importante marcar as etapas de desenvolvimento para que possamos demonstrar qual a maturidade em que o projeto se encontra. Isso se refere tanto ao escopo (se ainda existem funcionalidades a serem desenvolvidas) quanto a qualidade do código da release. As nomenclaturas para os principais marcos são Pre-Alpha, Alpha, Beta, Release Candidade e General Availability/Final.

Vamos ver o que cada uma representa durante o período de desenvolvimento:

Pre-Alpha

Fase onde é contemplada todas as atividades predecessoras a fase de testes, tais como implantação da arquitetura de software, desenvolvimento de algumas features, testes unitários entre outros.

Alpha

Nesta release o software ainda se encontra instável, contendo apenas parte das funcionalidades desejadas e com muitos bugs. É nela em que os testes funcionais se iniciam. Nesta etapa os desenvolvedores executam os testes de caixa-branca e um time dedicado de testes (QA) executam testes de caixa-preta e caixa-cinza em cima das features que foram desenvolvidas até o momento.

Beta

Na versão Beta é esperado que o software tenha todas as funcionalidades mapeadas já implementadas, entretanto a quantidade de bugs ainda é relativamente alta e o software ainda pode apresentar problemas de performance e perda de dados. Os testadores desta fase, conhecidos como Beta Testers, são geralmente potenciais futuros usuários do software em questão e dão feedback sem solicitar pagamento por isso. Geralmente esses Beta Testers conseguem utilizar o software final sem custos ou com desconto (isso quando o software por pago).

Release Candidate (RC)

Também conhecido como Gamma ou Delta, a Release Candidate é uma versão Beta com grande potencial de ser o produto final, a não ser que bugs críticos ou significantes apareçam.

General Availability (GA) ou Final

Enfim, produção! Esta release é a primeira estável disponibilizada para o cliente ou usuário.

Referências:

https://community.jboss.org/wiki/JBossProjectVersioning
http://www.brighthub.com/internet/web-development/articles/42592.aspx
http://en.wikipedia.org/wiki/Software_release_life_cycle
http://www.slideshare.net/lalitkale/versioning-guidelines-for-product

Testes de Caixa-Branca, Preta e Cinza

Teste Caixa-Branca

Também conhecido como Teste Estrutural. O teste de caixa-branca é feito diretamente no código. Os responsáveis por esses testes são geralmente os próprios desenvolvedores que, utilizando a boa prática, automatizam os testes criados com ferramentas como JUnit (Java) e Shoulda (Ruby).

Teste Caixa-Preta

Mais conhecido como Teste Funcional. Esses testes baseiam-se na Especificação Funcional criada para o projeto, ou seja, de forma bem objetiva, ele verifica se o sistema está funcionando de acordo com os desejos e regras especificados pelo solicitante do produto.

Teste Caixa-Cinza

Neste cenário o tester não precisa ter o conhecimento aprofundado do código-fonte, como o conhecimento utilizado para testes de caixa-branca, porém ele precisa ter uma pequena noção dos componentes do projeto. Um exemplo prático de teste de caixa-cinza pode ser desabilitar o JavaScript de uma página web para enviar campos sem validação para o controlador de requisições. Com isso ele consegue analisar se a aplicação aceita caracteres não válidos para determinado campo.

Referências:

http://stackoverflow.com/questions/402161/black-box-vs-white-box-testing
http://searchsoftwarequality.techtarget.com/definition/gray-box
http://www.softwaretestingclass.com/gray-box-testing/
http://crowdtest.me/teste-caixa-branca-caixa-preta/