quarta-feira, 13 de março de 2013

Fluxogramas de Procedimentos


O uso de fluxogramas para definir o fluxo das informações entre os departamentos são muito utilizados para facilitar o entendimento e a execução das atividades.

Abaixo seguem exemplo de fluxogramas e suas explicações dos mesmos exemplos citados anteriormente, porém agora estão bem mais completos:

Pedido de Homologação:

Figura 19. Exemplo de fluxograma do Pedido de Homologação (elaborada pelo autor).




quarta-feira, 30 de janeiro de 2013

Procedimentos


Como quaisquer departamentos de uma empresa existem regras a serem seguidas, recomendações e formas de atuar, em resumo tudo isso se encaixa na palavra “procedimentos”.

É recomendado que se defina procedimentos para todas as ações de interação com outros departamentos, ou seja, entrada e saída de informação do departamento de testes, desta forma já terão pontos importantes para a medição de produtividade, controle das atividades, filas e etc.

Com base nas observações realizadas na empresa XYZ, abaixo seguem exemplos de alguns procedimentos de interação com outros departamentos:


  • Pedido de Homologação (teste): Solicitação formal via sistema ou não de teste de um software novo, atualizações, service patch e hotfix, geralmente solicitados pelo departamento de desenvolvimento de software.
  • Pedido de Avaliação (verificação de funcionalidade): Quando a empresa tem uma estrutura organizacional de suporte em camadas, o departamento de testes pode ser a ligação entre o suporte e o desenvolvimento, quando isso acontece o suporte ao encontrar um “possível” problema abre uma solicitação para que o departamento de testes verifique se não é um mau uso ou erro de configuração, antes de encaminhar o 
  • Pedido de Correção ao desenvolvimento. Esta etapa é muito importante para que os testes possam ser reavaliados e aperfeiçoados evitando que estes problemas cheguem aos clientes.
  • Pedido de Correção (abertura de bugs): Notificação de problemas no software ao departamento responsável pela sua correção.
  • Pedido de publicação: Após o termino de um teste de um pacote, patch ou hotfix é necessário disponibilizá-los aos clientes através dos meios de comunicação adotados pela empresa, normalmente um departamento de marketing faz esta atividade, este pedido marca o termino da atividade do departamento de testes.


Cada empresa adéqua suas atividades operacionais e escrevem seus procedimentos, com base na necessidade, devem ser publicados e seguidos por seus colaboradores. O termo de melhorias contínuas deve ser aplicado o tempo todo nestes procedimentos, pois a sua função é auxiliar na execução das atividades e não atrapalhar.

Diversos outros procedimentos devem ser adotados internamente no departamento de testes, procedimentos estes que já estarão definindo como o testador deve atuar em seus testes. Veremos em detalhes no capítulo Criando Testes.

segunda-feira, 7 de janeiro de 2013

Dokuwiki



DokuWiki é uma aplicação baseada no modelo Wikipédia escrito em PHP voltado para as necessidades de documentação em pequenas empresas, escrito por Andreas Gohr. Usa para armazenar dados em arquivos de texto, não necessitando de um banco de dados. Possui uma sintaxe simples, porém completa, similar à usada na Wikipédia.

Recursos disponíveis:

  • Funciona com arquivos texto como armazenador;
  • Simples de se editar com botões que facilitam a sintaxe de escrita;
  • Permite se editar apenas parte de uma página;
  • Geração automática de tabelas;
  • Número de revisões sem limite;
  • Suporte a diferenciação de revisões coloridas;
  • Suporte a páginas somente leitura;
  • Syndication de modificações recentes por RSS Feed;
  • Pastas de assuntos;
  • Interwiki Links;
  • Envio e inserção de imagens;
  • Redimensionamento de imagens;
  • Suporte multi-idioma;
  • Spam blacklist;
  • Troca de textos personalizados;
  • Trava de edição para evitar conflitos;
  • Suporte total a UTF-8.

sábado, 8 de dezembro de 2012

Certificação CBTS


Bom dia pessoal,


Primeiramente agradecer a minha família pelo apoio e paciência, especialmente minha esposa Juliana Lopes e minha filha, aos amigos da homologação e a Aker pelo curso preparatório.

Obtive a Certificação Brasileira de Teste de Software - CBTS da Associação Latino Americana de Teste de Software. 

Valeu

Certificação Brasileira de Teste de Software (CBTS)

A Certificação Brasileira em Teste de Software (CBTS) foi criada pela Associação Latino Americana de Teste de Software (Alast) com o objetivo de estabelecer padrões para avaliar a qualificação dos profissionais que atuam na área de testes de software (ALATS – ASSOCIAÇÃO LATINO AMERICANA DE TESTE DE SOFTWARE, 2010).
Não a pré-requisitos para a realização do exame, que será exigido os seguintes tópicos:

• Introdução ao Processo de Teste;
• Processo de Teste;
• Ambiente de Teste; 
• Análise de Risco;
• PMBOK do PMI;
• Planejamento de Teste;
• Elaboração do Teste;
• Gestão de Defeitos; 
• Teste de Aceitação;
• Relatório de teste;
• Estimativa de teste;
• Tópicos especiais em teste de software.

Os assuntos podem mudar de um exame para outro, recomenda-se fazer download sempre da última versão disponibilizada no site da Alast.





sábado, 17 de novembro de 2012

CRIANDO A INFRA-ESTRUTURA PARA OS TESTES - SCRIPTS


Scripts

Os scripts são linguagens de programação interpretada de alto nível, que são executadas dentro de outros programas ou até mesmo outras linguagens de programação, são freqüentemente usadas como ferramentas de configuração e instalação em sistemas operacionais (Shell script), como por exemplo, em alguns sistemas operacionais da família Linux, que usam as linguagens GNU/Shell bash ou sh.

Os scripts mais conhecidos são:
·         Shell scripts;
·         Bash/Linux;
·         Sh/Linux;
·         Bat/Windows;
·         VBScripts/Windows;
·         JavaScripts/Web;
·         Perl/Multi-plataforma;
·         Python/Multi-plataforma.

O uso de scripts nos ambiente de testes é imprescindível, pois facilitam a configuração dos ambientes de testes, em testes repetitivos e de validação (performance e stress), como são fáceis de montar e de se alterar dá ao testador uma grande flexibilidade.

O que é testar?



Bom dia,

Estou estudando para a certificação CBTS, e achei estas definições pertinente, resolvi compartilhar:
  • Testar é verificar se o software está fazendo o que deveria fazer, de acordo com os seus requisitos, e não está fazendo o que não deveria fazer (Rios e Moreira – 2002);
  • Testar é o processo de executar um programa ou sistema com a intenção de encontrar defeitos (teste negativo) (Glen Myers – 1979);
  • Testar é qualquer atividade que a partir da avaliação de um atributo ou capacidade de um programa ou sistema, seja possível determinar se ele alcança os resultados desejados (Bill Hetzel – 1988).


quarta-feira, 26 de setembro de 2012

Desenvolvimento aberto e backdoors

O artigo abaixo foi escrito por Rodrigo Fragola no http://www.blogdofragola.blogspot.com.br/ e rendeu uma ótima discussão. Compartilho agora com vocês e retomo o debate: 
o desenvolvimento aberto oferece maior segurança? Vejam o que já rolou sobre o assunto clicando aqui.  

Recentemente, tive uma dessas discussões apaixonadas sobre desenvolvimento aberto – das quais já não costumo mais ter paciência para participar.  Aprendi com o tempo que a área de tecnologia não deve ser movida por paixões, mas por decisões práticas e objetivas, que levem em consideração o ambiente ao redor. E partindo desse princípio, pode-se dizer que a grande maioria das técnicas e tecnologias é aplicável. 



Desenvolvimento aberto (código aberto e software livre são utilizados popularmente como sinônimos, o que não exatamente apropriado) é uma forma de desenvolvimento de software, nada mais. Nem é preciso entrar nos meandros da discussão, porque ela agrega muito pouco no quesito segurança e nada, nos paradigmas fundamentais da programação. 

O desafio atual da segurança no desenvolvimento reside naquela clássica questão de se saber o que realmente um código está fazendo (por exemplo, se ele está ou não em looping), um problema sem solução. 

Hoje, temos ferramentas que “fiscalizam” as melhores práticas de programação, capazes de detectar, em tempo real, um bom nível de erros de codificação. Mas no que diz respeito ao problema apresentado, são incompletas em sua funcionalidade. No final das contas, pressupõe-se que a intervenção humana ainda é necessária. 

O principal argumento da suposta segurança dos sistemas abertos baseia-se na abertura e na visualização do código por milhões de pessoas. A alegação apresenta um componente de obviedade tentador. Afinal, algo visto e validado por milhões de pessoas deve ser mais seguro do que aquilo que ficou restrito a duas ou três. Mas a realidade é outra. 

O código aberto não é nenhuma novidade, existe há muito tempo. Um exemplo clássico foi o bug da pilha TCP/IP que atingiu 100% dos Sistemas Operacionais, há mais de 10 anos.  Ou seja, todos os fornecedores tinham o mesmo bug. Isso significa que utilizaram o mesmo código, fatalmente derivado de um BSD, que era aberto, livre para uso. 

Ainda que o código tenha sido visto por milhões de pessoas de diferentes corporações, o bug existiu por muito tempo. Então, por que, ao olharem para o código, não viram o bug?

Muitas pessoas confundem a velocidade na correção de um problema de segurança com a inexistência dele.  Um grande equívoco! Já que a agilidade em corrigi-lo está vinculada diretamente ao compromisso do fornecedor em fazê-lo, seja ele aberto ou fechado. 

Assim, conclui-se que o sistema não está livre de problemas de segurança, já que os fornecedores, abertos ou fechados, têm esses mecanismos de fornecimento.

Então, onde estão os analistas de código? Por que o código aberto não é mais seguro?

Se oferecesse maior segurança, o software livre (baseado em desenvolvimento aberto) não teria bugs. Todos podem visualizar o código, entretanto 99,9999% dos bugs são descobertos em tempo de execução na maioria dos sistemas, e não com análise de código.  

Analisar o código, aliás, é algo mais complexo do que desenvolver o próprio código. Não existe um processo de automação que diga o que um código está fazendo. Além disso, já se tem poucas pessoas desenvolvendo código em comparação às pessoas que usam os produtos e, talvez, praticamente ninguém verificando.

Podemos até fazer uma analogia com os processos de compra do Governo. Todos eles são públicos e estão disponíveis para a população verificar. Nem por isso o número de problemas apresentados na televisão em relação a esses procedimentos diminui. A população em geral que tem acesso a tais processos não tem capacidade de avaliá-los, apesar de pagar por eles e usufruir de seu resultado.

Para piorar (no que diz respeito à segurança), temos as bibliotecas de terceiros, amplamente usadas, as BIOS de computador e os sistemas de apoio embarcados para processamentos especializados (FPGA, por exemplo). Todos, livres ou não, com possibilidades de backdoors. O mercado sempre foi colaborativo, não se esqueçam desse ponto. Bibliotecas, integrações e compartilhamento de código entre sistemas sempre existiram. Todas essas camadas de apoio, que são ligadas à execução de um sistema, podem esconder brechas de segurança.

Quantas vezes você, leitor, verificou o código aberto de alguma aplicação para ver se existe algo suspeito nele? Será que este “IF” esconde um backdoor? Quantas pessoas você conhece que já fizeram isso? Eu não me lembro de nenhuma nos últimos 15 anos – pelo menos que tenha descoberto algo  relevante. Conheci muita gente que o fez para corrigir um problema ou aprender como se faz algo, mas nunca para tirar conclusões sobre aspectos de segurança ou corretude do sistema.

Como se já não bastasse a dificuldade técnica na avaliação de um código feito por outra pessoa (em ambientes de desenvolvimento essa é uma reclamação constante de novos programadores que entram na equipe), ainda existe a possibilidade de estarem escondidas entre os códigos, ações não tão óbvias. 

Lembro de um campeonato que existia na época de faculdade, cujo objetivo era desenvolver um programa em C que parecia fazer algo específico, mas, na verdade, escondia outras operações. Havia também uma competição que premiava o programa em C mais “confuso”, de modo que, ao ser lido, o leitor não pudesse saber o que ele fazia. Um dos requisitos desses campeonatos era que o programa fosse pequeno, capaz de ser analisado por uma pessoa. 

Se é possível esconder códigos em programas pequenos, pense agora no volume de códigos existentes atualmente! 

Um backdoor pode ser apenas uma atribuição errônea de uma variável ou um conjunto de 03 linhas de código, bem diferente de milhares de linhas de código, como ocorreu no FLAME. 

Resiliência: Os backdoors vieram para ficar, sejam por erros de programação ou inserção proposital.