segunda-feira, 22 de julho de 2013

Volta a ativa!




Após 2 anos sem postar nada, resolvi voltar as ativas com o blog. =)
Embora eu não tenha dado continuidade às postagens do CBTS, consegui a certificação, consegui também o CTFL.
Tentarei me organizar para a CTAL  - TA pelo blog. Provavelmente não conseguirei rsrs , mas devido haver pouco conteúdo sobre a certificação na internet, acho uma boa compartilhar um pouco do meu estudo com o resto da galera que também tentara a CTAL-TA.
Deixarei todo o conteúdo junto com o que eu havia colocado do CBTS. Decidi deixar o pouco que eu já havia registrado aqui. Quem sabe ajude a alguém que esteja tentando o CBTS. ^^
Tenho 1 mês para estudar.  Já comecei a me organizar e tal. Não garanto que irei passar na prova, mas minha ideia é conhecer a prova mesmo.
O BSTQB disponibilizou a nova versão dos Syllabis para estudo, agora estão separados em CTAL-TA, CTAL-TTA e CTAL-TM.

Para quem não conhece a certificação, há mais informações no site:
La tem os syllabus para download, juntamente com o Glossário de termos (O que ajuda bastante a estudar). 


Enfim. Vamos ver o quanto rendo com o blog. 

quarta-feira, 24 de novembro de 2010

Automação de Testes


Hoje ao ler uma postagem “Introdução à Automação de Testes Funcionais”, do profissional Cristiano Caetano, no blog http://www.testexpert.com.br, resolvi postar algumas informações em meu blog.

Automação de teste é o uso de softwares para controlar a execução dos testes de software. Como já falado em Posts anteriores, o testador precisa entender primeiro as técnicas de teste para depois entender quais ferramentas devem ser usadas com cada técnica.
Há 2 abordagens de testes automatizados. O Baseado na Interface Gráfica, que interage diretamente com a interface gráfica da aplicação simulando o usuário. E o Baseado na Lógica de Negócio, que exercita as funcionalidades da aplicação sem interagir com a interface gráfica.

 

Há vários tipos de Automação de teste.

 

*Testes automatizados baseados na interface gráfica (Capture/Playback)
Normalmente a ferramenta de automação fornece um recurso para capturar (Capture) as ações do usuário enquanto o usuário estiver usando a aplicação.
Essas ações são traduzidas para comandos na linguagem de script suportada pela ferramenta de automação para que então possam ser reproduzidas (Playback) posteriormente. 

*Testes automatizados dirigidos a dados (Data-Driven)
Os testes automatizados dirigidos a dados representam um refinamento dos testes baseados na interface gráfica. Basicamente, nesta abordagem, é utilizado um mecanismo para auxiliar a execução de testes que executam as mesmas ações repetidamente, porém com dados diferentes. Uma das principais vantagens dessa abordagem é a reutilização dos scripts, o que conseqüentemente diminui a complexidade e o tempo de manutenção. 

*Testes automatizados dirigidos à palavra-chave (Keyword-Driven)
Esta abordagem foi criada para dar suporte aos testes de aceitação (Acceptance Tests) preconizados por metodologias ágeis, tais como o XP (Extreme Programming). Os testes de aceitação são normalmente definidos pelo usuário final em conjunto com analistas e testadores e tem o objetivo de definir os passos e critérios aceitar um requisito.
Nesta abordagem, os testes automatizados são realizados por meio da interface gráfica da aplicação. No entanto, os testes são baseados em palavras-chaves (keywords). Normalmente a ferramenta de automação oferece um conjunto pré-definido de palavras-chaves para permitir a criação dos testes.
Cada palavra-chave é um comando em alto nível (praticamente em linguagem nativa) que representa uma ação do usuário. Dessa forma, os testes são facilmente entendidos (e até escritos) pelos usuários finais em virtude do alto nível de abstração. 

*Testes automatizados baseados na linha de comando (Command Line Interface - CLI)
Uma Interface de Linha de Comando (Command Line Interface - CLI) fornece um mecanismo no qual o usuário pode interagir com a aplicação por meio de um prompt ou shell do sistema operacional.
Via de regra, a lógica de negócio da aplicação pode ser exercitada por meio da execução de um conjunto de comandos e parâmetros pré-determinados. A CLI interpreta os comandos e parâmetros, executa a função selecionada e apresenta o resultado. O objetivo da CLI é fornecer uma interface para o mundo exterior que não seja dependente da interface gráfica da aplicação. A automação de testes baseada na linha de comando faz uso dessa característica para orquestrar a execução dos testes. 

*Testes automatizados baseados em API (Application Programming Interface)
Uma API (Application Programming Interface ou Interface de Programação de Aplicativos) representa um conjunto de operações expostas por uma aplicação a fim de permitir que outras aplicações possam acessar ou consumir as suas funcionalidades.
O objetivo de uma API é fornecer uma interface para o mundo exterior que não seja dependente da interface gráfica da aplicação. A automação de testes baseada na API faz uso dessa característica para orquestrar a execução dos testes. Uma das vantagens advindas do uso de uma API é que a aplicação externa que consome as operações expostas, não precisa conhecer em detalhes como essas operações são implementadas. 

*Test Harness
O Test Harness é um tipo de automação de testes baseado na Lógica de Negócio que prega o uso racional e inteligente da automação. O Test Harness pode ser implementado por meio de um pequeno programa construído para testar uma API, uma interface de linha de comando, ou até mesmo ganchos "Hooks" projetados na aplicação para este fim.
Nesta abordagem, não importa o meio no qual o teste será realizado (contanto que não ocorra interação com a interface gráfica). O objetivo é exercitar as funcionalidades críticas da aplicação que exigem dezenas e milhares de cálculos ou variações virtualmente impossíveis (ou demoradas) para serem testadas por meios normais.

Bom, aproveitarei e deixarei a listagem de ferramentas Open Source e Gratuitas.


Gestão de projetos:

Testes de performance:

Gestão de testes:

Gestão de defeitos:

Gestão de Requisitos:

Testes Funcionais:
Selenium (WEB) http://www.openqa.org/selenium/
actiWATE (WEB)
http://www.actiwate.com/
Marathon (Java Swing)
http://www.marathontesting.com/marathon/
Watir (WEB)
http://wtr.rubyforge.org/
Canoo WEBTest (WEB)
http://WEBtest.canoo.com/
Apodora (WEB)
http://www.apodora.org/
Abbot (Java Swing)
http://abbot.sourceforge.net
SoapUI (WEBServices)
http://www.soapui.org/
SOAPSonar Personal Edition (WEBServices)
http://www.crosschecknet.com/
LISA WS-Testing (WEBServices)
http://www.itko.com/site/products/lisa/ws_testing.jsp
Squish for KDE (Linux)
http://www.froglogic.com
SharpRobo (WinForm .NET)
http://confluence.public.thoughtworks.org/display/SHRO/Home
FitNesse
http://fitnesse.org/











            

segunda-feira, 22 de novembro de 2010

Análise de Riscos

Analise de riscos em projetos de teste, deve seguir as mesmas regras e metodologias aplicadas a projetos de softwares em geral.
Nem sempre é possível aliar um risco a uma perda – um risco presente nem sempre vai gerar uma perda.
Risco é a “Probabilidade de insucesso, de malogro de determinada coisa, em função de acontecimento eventual, incerto, cuja ocorrência não depende da vontade dos interessados”.
A analise de riscos é o processo de avaliar riscos, ameaças, controles e vulnerabilidades.

Alguns conceitos usados no gerenciamento de riscos.

Risco – O risco é uma perda em potencial para a organização.
Analise de risco – A analise de risco é uma avaliação dos recursos de informação de uma organização, seus controles e suas vulnerabilidades.
Ameaça – Existe risco de um meteoro cair na cidade onde você mora. Isso é uma ameaça a sua vida? Não, pois a probabilidade é quase zero. Podemos dizer que ameaça é a capacidade de alguém explorar a vulnerabilidade de um sistema de computador ou aplicação.
Vulnerabilidade – A vulnerabilidade é uma falha de desenho, implementação ou operação que permite a concretização de uma ameaça.
Controle – O controle é a maneira de tentar reduzir as causas dos riscos, evitando, desse modo, sua ocorrência ou, pelo menos, reduzindo a freqüência de ocorrência.

Ao fazer a analise de riscos, devemos levar em conta o seguinte:
-> A probabilidade de ocorrência do risco.
->  O impacto e a perda associada a esse risco.

Identificação dos potenciais riscos ao processo de teste.
*Orçamento – Orçamento é insuficiente. O gerente é obrigado a estabelecer algumas prioridades.
*Qualificação da equipe técnica de teste – A equipe deve estar preparada para novos tipos de tecnologia.
*Ambiente de teste – O ambiente de teste deve estar o mais próximo possível do ambiente de produção.
*Ferramentas – A escolha correta para utilização de ferramentas.
*Metodologias – A falta de metodologia adequada condizente com o processo de desenvolvimento pode acarretar riscos para o sucesso do teste.
*Testware – Deve haver uma metodologia que permita guardar a documentação para uso futuro.


Custo X Benefício
É necessário fazer uma analise Custo versus Beneficio para determinar se vale a pena investir em algum controle de risco.

O QAI estabelece que um risco pode ser determinado de quatro maneiras:

 - Intuição ou Discernimento – Área de teste utiliza de sua intuição aliada a sua experiência.
 - Consenso – Consenso na equipe de que o risco tem um nível elevado de severidade.
 - Formula de Risco – Existem dados financeiros que permitem medir o curso da perda pela ocorrência do risco.

 - Estimativas de Perdas Anuais – Combinação de consenso com a formula de risco.

Um software mal testado pode ocasionar ocorrência de defeitos.

A norma ISO/IEC 9126-1 estabelece as características de qualidade que todo software deve ter:

Funcionalidade – Capacidade do software de fornecer funcionalidades que atendam a necessidades definidas quando usado sob determinadas condições preestabelecidas.

Confiabilidade – Capacidade do software de manter um nível especifico de desempenho quando usado sob determinadas condições preestabelecidas.

Usabilidade – Capacidade do software de ser entendido, aprendido, usado e atrativo quando empregado sob determinadas condições especificas.

Eficiência – Capacidade do software de manter o desempenho, em relação aos recursos disponíveis, quando usado sob determinadas condições especificas.

Manutenibilidade – Capacidade do software de ser mantido.

Portabilidade – Capacidade do software de ser transferido de um ambiente para outro.

Alguns tipos de teste necessários para que uma característica de qualidade seja atendida.

Funcionalidade: Teste de funcionalidade
Confiabilidade: Teste de estresse
Usabilidade: Teste de usabilidade;
Eficiência: Teste de desempenho;
Manutenibilidade: Teste caixa-branca etc.;
Portabilidade: Teste de produção, teste alfa, etc.

Outros riscos:

Datas finais dependentes da execução dos testes.
Baixa Qualidade da base dos testes.
Falta de métrica adequada para medir o sistema.


Seguindo o QAI, os riscos associados a instalação de um novo software ou sistema de aplicação são, basicamente, os seguintes:

 - Geração de resultados incorretos;
 - Aceitação, por parte do sistema, de transações erradas;
 - Perda de integridade de arquivo;
 - Dificuldades de reprocessamento em caso de necessidade;
 - Perda da continuidade do processamento;
 - Degradação inaceitável do serviço prestado ao usuário;
 - Comprometimento da segurança do serviço;
 - Resultados não confiáveis;
 - Dificuldade de usar o sistema;
 - Dificuldade de prover a manutenção ao sistema;
 - Falta de portabilidade;
 - Problemas de conectividade com outros sistemas;
 - Desempenho ruim;

Passei um pouco correndo sobre este assunto.. Falei no proximo topico sobre o Planejamento dos Testes.




quinta-feira, 18 de novembro de 2010

Ambiente de Teste

Bom, após um tópico sobre mim voltarei a falar sobre testes de software. Mas antes de começar direi que exatamente há uma semana atrás (Dia 12/11) eu havia desistido de fazer a prova de certificação.
Por quê? Por que fiquei desesperadamente entrando no site do Alats durante 2 SEMANAS e o site estava fora, e o ultimo dia para fazer a inscrição era no dia 13/11. Bem, esta semana vi que de uma forma, PORCAMENTE, o site ficou disponível para realizar inscrição, e fiz ela hoje mesmo.
Como fiquei 1 semana preocupada com a inscrição e mais 1 semana desistente da mesma. Não estudei! Então FUDEU!
Já não estou mais confiante em passar na prova, mas continuarei estudando e me motivando com cafezinhos.

Hoje falarei sobre Ambiente de Teste. 
Antes da elaboração dos cenários de teste, é necessário haver o planejamento do ambiente em que a aplicação será testada. O ambiente é toda a estrutura onde o teste será executado.

O escopo do ambiente será definido pelo nível de teste a ser executado.
O ambiente deve ser planejado em dois momentos.
            *Estratégia de teste
            *Plano de teste

Escopo

Teste Unitário:
- Estagio mais baixo da escala de teste.
- Aplicado aos menores componentes do código.

Teste de Integração:
- Aplicado à combinação das unidades de componentes

Teste de Sistema:
- Aplicado ao sistema como um todo.

Teste de Aceitação:
- Teste final do sistema.
- Funcionalidade e Usabilidade.


Equipe

Podemos considerar como responsáveis pela execução dos testes:

Líder do Projeto de teste: Técnico responsável pela liderança de um projeto de teste.

Arquiteto de teste: Técnico responsável pela montagem da infra-estrutura de teste.

Analista de teste: Técnico responsável pela modelagem e elaboração dos casos de teste e pelos scripts de teste.

Testador: Técnico responsável pela execução dos casos e scripts de teste.

Alem desses, que fazem parte exclusivamente da equipe de teste, podemos incluir outros profissionais envolvidos:
*Gestor
*Usuário (Testes de aceitação)
*Desenvolvedores (Testes unitários e de integração)
*Auditores
*Analistas de produção (Teste de carga, configuração, estresse...)
*Gerentes

Quanto mais especializada e independente for à equipe de teste, melhor será a qualidade do sistema e, consequentemente, menor será o custo total.

Volume e Origem dos Dados

O volume dos dados esta diretamente relacionada à necessidade e a abrangência da massa de teste para cada fase ou estagio de teste.
A técnica e o tipo de teste que esta sendo executado nos diferentes estágios também são fatores importantes nesse processo.
Dados reais são desejáveis em muitas circunstancias, porem, em alguns casos, o uso de dado real é inadequado.
Por exemplo: Para testes de confidencialidade, aquisição, validação, ter dados reais é interessante. Já nos casos dos testes de volume, estresse, carga, usabilidade e outros, não há necessidade de uma massa de testes com dados reais.

Ambiente de teste

É necessário que a preparação do ambiente de teste seja discutida, e suas necessidades básicas (equipamentos, softwares, browsers em aplicações web, e etc) sejam identificadas no momento inicial do projeto.
Ao definirmos o ambiente, devemos considerar:

*Sistema Operacional;
*A arquitetura do sistema;
*A identificação dos componentes;
*O meio de acesso do sistema;
*A linguagem de programação utilizada;
*A conectividade entre os ambientes.

A garantia de integridade do ambiente de teste esta diretamente relacionada a garantia de qualidade do produto.

Uma alternativa de criação de ambiente de teste, são os ambientes virtuais ou emuladores de ambiente, também conhecidos como virtual machine. Um exemplo de software é o VMware (Mto utilizado nas aulas que eu tive de S.O no técnico). Essas maquinas virtuais possibilitam ao analista de teste criar diversos ambientes, em diferentes configurações de sistemas operacionais e browsers.
Esses ambientes virtuais não são recomendados para testes de desempenho.


Obs.: O testador precisa entender primeiro as técnicas de teste para depois entender quais ferramentas devem ser usadas com cada técnica. A ferramenta é o recurso para o testador e, sozinha, é insuficiente para conduzir todo o teste.

Ferramentas de teste

As ferramentas de teste são apoio dos profissionais da área de teste, pois cobrem grande parte das atividades de teste e são aplicáveis em todas as fases do ciclo de vida do desenvolvimento do software. Algumas técnicas são manuais, e outras, automáticas, algumas vezes fazem testes estáticos, e outras, os dinâmicos; algumas atividades avaliam a estrutura do sistema, e outras, sua função.
Um exemplo de ferramenta de teste é o Selenium.





A configuração do selenium é bastante simples, mas algumas explanações sobre os projetos faz-se necessária.

Selenium Core - Utilize esta versão se você deseja rodar seus testes diretamente no Browser, da mesma forma como usuários farão.

Selenium Ide - Utilize está ferramenta em conjunto com o Selenium Core. Esssa ferramenta servirá para a escrita dos scripts do Seleium. Como qualquer ferramenta ela tem sua linguagem prórpria e escrever os scripts na mão seria uma tarefa árdua, o Selenium Ide serve para retirar essa tarefa da mão de que está escrevendo, ele fará isso para você.
Selenium IDE é um plugin do firefox. =)

Aqui esta o link para quem quiser baixar:

Ele é muito fácil de utilizar. ;)

Bom, por enquanto é só.







terça-feira, 16 de novembro de 2010

Sobre mim

Bom, depois de tantas postagens sobre Teste de Software, resolvi falar um pouco sobre mim.
Vivi minha infância e parte de minha adolescência em Cachoeiro de Itapemirim, Hell City! Não que a cidade seja ruim, mas por ela ser quente mesmo.
AHH, Cachoeiro não tem cachoeira, rsrsrs.. PQ? Pq Cachoeiro é um menino! =)

 

Sempre gostei de musica. Passei parte da minha infância escutando a Trilha sonora da Novela “A Viagem”, Sim eu gostava de novela, rsrsrs, que ainda na minha humilde opinião é a melhor trilha sonora de novelas já criada. The cranberries e The Pretenders no mesmo cd? *.*. MTO BOM!
Sou fanática por animes e seriados também, a primeira é uma das grandes influencias do meu irmão. A rede Manchete fez maravilhas nas minhas tardes de catarrenta. Escuto ate hoje a trilha do yuyu hakusho, ate pretendo criar futuramente um post sobre trilha sonora de animes. Seriados eu comecei a assistir do SBT, acordava todos os Domingos às 8 horas da manhã para assistir.
Voltando para minha vida, vim morar na Serra com 16 anos, para fazer meu ensino médio lá. Pobre de mim, não sabia nem que faculdade tentar, rsrsrs, não havia me encontrado profissionalmente. Bom, como todo bom ser humano resolvi escolher minha área pelo principio básico, Dinheiro! =) Fui fazer Engenharia Química em uma faculdade de Aracruz. PQP!! Engenharia não é para seres humanos, hauahauha. Desisti no primeiro período e voltei para Serra. Então pensei, “Se pensar na grana não da certo, então vamos pensar no que me faria feliz”, foi ai que comecei Técnico de Enfermagem.
Sempre gostei de trabalho voluntário, ainda por cima na área de saúde. Se trabalho ate de graça, pq não trabalhar ganhando neh?!
Mas, fazendo técnico de enfermagem, resolvi de bobs tentar o Técnico de Informática no CEFETES (Agora IFES). Mas não é que passei! Fiquei um tempinho fazendo os 2 técnicos. Alias, fazendo os 2 técnicos e trabalhando no posto de saúde de manha, rsrs, trabalho voluntário ainda (Ótimo tempo de trabalho, eu realmente gostava de la =)). Mas foi ai que comecei a passar pequenas dificuldade financeiras. A quem eu queria enganar? Dinheiro pode ate não trazer felicidade, mas te traz comida, roupa, moradia, cuidados com a saúde, conforto, e etc. Foi ai que troquei a área de enfermagem para de informática. SIM, FOI PELA GRANA! Rsrs
No segundo modulo já estava estagiando e conseguindo uma grana. Pensei, “Como quero trabalhar voluntariamente e com outras pessoas pagando minhas contas?”.
Ainda penso em terminar o técnico de enfermagem, mas em um dia muito distante.
Bom, fiz vários e vários estágios, em escolas como monitora de Informática ( Teoricamente né, por que na pratica ficava fazendo trabalho de secretaria ou jogando dominó).
Bom, trabalhei em Empresa Jr também, não fiz muita coisa, mas ela me ajudou bastante a ter uma idéia do que eu queria trabalhar. Engraçado, rsrs, o trabalho voluntário me tirou de uma área, e outro trabalho que também não era remunerado me indicou o caminho certo.
Por isso falo: Tudo que você faz com dedicação lhe traz algum retorno, mesmo não sendo financeiro. Às vezes sabedoria vale mais do que um salário.
Trabalhei na Incubadora de empresas tambem, la aprendi muita coisa, inclusive a me organizar no trabalho, é na vida pessoal e nos estudos ainda sou desorganizada =(.
Enfim, hoje sou analista de testes, ainda viciada em seriados, animes e musica. Toco baixo em uma banda de blues, que esta temporariamente parada.
Sou viciada em Campari e Café. O ultimo tem me acompanhado desde os tempos de ensino médio. O Café me ajudou e ajuda tanto que enchi o blog dele, rsrs.

Acho que é só.

=)

quinta-feira, 4 de novembro de 2010

Atributos de Qualidade

É necessária a identificação dos objetos ou requisitos de qualidade do software, para assim atender certos atributos de qualidade.
Esses atributos são transmitidos para a equipe de desenvolvimento e documentados da mesma maneira que os outros requisitos.  
Os atributos também fazem parte do Plano de teste.

Existem varias técnicas de identificação dos fatores de qualidade. A seguir serão exibidos alguns passos:

Passo 1 – Considerar as características básicas de aplicação: Os requisitos de qualidade são únicos e influenciados por suas características, ou então dependem do tipo de aplicação.

Passo 2 – Considerar as implicações no ciclo de vida: Considerar também as atividades do ciclo associadas com a entrega do produto de software (Operação, revisão e transição).

Passo 3 – Realizar uma avaliação Custo versus Beneficio da lista dos fatores de qualidade: É elaborada uma lista preliminar dos fatores de qualidade.

Passo 4 – Identificar os fatores de qualidade mais importantes: Os fatores de qualidade devem ser listados na ordem de importância, para depois serem escolhidas as opções definitivas.

Passo 5 – Fornecer explicações para as escolhas: Documentar a base racional para as decisões tomadas durante as etapas anteriores.

Fatores de Qualidade:

*Correção
*Confiabilidade
*Eficiência
*Integridade
*Usabilidade
*Manutenibilidade
*Testabilidade
*Flexibilidade
*Reusabilidade
*Interoperabilidade
*Portabilidade

Garantia X Controle de Qualidade

Definições:
Garantia de Qualidade: A garantia de qualidade é um conjunto sistemático e planejado de atividades, necessárias para proporcionar a confiança adequada de que produtos e serviços estarão em conformidade com requisitos especificados às necessidades do usuário. A garantia de qualidade deve ser uma função do pessoal da empresa responsável pela implementação da política da qualidade.

Controle de Qualidade: O controle de qualidade é um processo pelo qual a qualidade do produto é comparada com os padrões aplicáveis; quando uma não-conformidade é detectada, são tomadas as devidas providencias. O controle de qualidade é uma função em linha, e o trabalho é realizado num processo que assegura que o produto funcione conforme o padrão e os requisitos.

Qualidade tem 2 definições de trabalho:
    Do Ponto de vista do produtor, a qualidade é o cumprimento de requisitos. 
    Do Ponto de vista do consumidor, a qualidade é o atendimento às necessidades do cliente.

Uma metodologia utilizada no mercado é a FURPS. Nessa metodologia as categorias de qualidade são representadas como ilustrado abaixo.



Functionality (Funcionalidade) – representa todo aspecto funcional do software, ou seja seus requisitos

Usability (Usabilidade) – é o atributo que avalia a interface com o usuário.

Reliability (Confiabilidade) – refere-se a integridade, conformidade e interoperabilidade do software.

Performance (Desempenho) – avalia os requisitos de desempenho do software.

Supportability (Suportabilidade) – os requisitos de suportabilidade agrupam várias características, como: testabilidade, adaptabilidade, manutenibilidade, compatibilidade, configurabilidade, instalabilidade, escalabilidade, localizabilidade entre outros.