Perfis de Twitter sobre testes que merecem ser seguidos

No post de hoje indico alguns perfis relacionados a área de testes de software, os quais frequentemente indicam conteúdos interessantes para o nosso aprimoramento. Abaixo, seguem os perfis e suas bios.

 

Entre os brasileiros, os seguintes perfis se destacam na minha timeline:

@c_caetano – Author, Speaker, Consultant, Entrepreneur and Director@qualister ccristiano.caetano@gmail.com
@CamiloribeiroCellist, Senior QA Consultant at ThoughtWorks, Passionate Tester, a lover of good music, books and movies –http://www.bugbang.com.br
@eliasnogueiraSoftware Test Architect and ALM Tech Consultant at Hewlett Packard, almost a bass / guitar player and spending a little time at Rio.

Já entre os perfis internacionais, os quais recomendo estão:

@testingclub – An online community of professional software testers, by@rosiesherry & @rob_lambert / Community Managers@pkirkham @stephen_j_hill.
@uTest – uTest provides in-the-wild testing services that span the entire software development lifecycle: 50,000+ testers in 180 countries.
@SoftwareTestProServing the global software testing & quality assurance community, providing information, education & professional networking.
@michaelbolton – I solve testing problems that other people can’t solve, and I teach people how they can do it too.
@googletesting – Official place for Google Testing news and updates.
@testrepublicKnowledge Network for Software Testing Professionals.

E vocês? Que perfis indicam sobre o assunto?

Agora você já pode acompanhar as novidades do BdB pelo Facebook, acesse e curta nossa página.

Anúncios

É melhor focar no problema? ou na solução?

Cabra-cega – Imagem Retirada de http://fadadacaixinhademusica.blogspot.de/

Cabra-cega é uma brincadeira de criança onde alguém coloca uma venda nos olhos e fica com uma vara na mão para tentar acertar um vaso de barro (cheio de doces e gostosuras) e quebrá-lo, dessa forma não só você ganha os doces, quanto todos ao seu redor tb correm para os doces e assim todos saem ganhando! Não sei no restante do Brasil, mas pelo menos em Recife essa é uma brincadeira bem comum. O detalhe dessa brincadeira é que todos os outros ao seu redor ficam dando dicas apra vocês chegar mais perto, e eventualmente acertar o vaso.

Trazendo isso para nossa realidade de TI, um ponto que venho percebendo com uma certa frequência  é que geralmente estamos fechando projetos e contratos onde nosso cliente chega até nós com uma “solução” para o problema dele, e nós geralmente vamos direto atacar essa pseudo-solução! Isso acontece mais frequentemente em casos onde o cliente tem um certo conhecimento de TI, de desenvolvimento de software, então ele já chega com a solução bolada na sua cabeça! E como cada vez mais temos gente que entende [um pouco que seja] de TI, temos essa situação acontecendo cada vez mais.

Me sinto um pouco jogando cabra-cega. Estamos lá, escutando as dicas e as direções dos outros, mas não sabemos exatamente ONDE está o problema! Estamos com uma venda nos olhos tentando caminhar na direção que os outros estão gritando! E eis que chega o grande conselho desse post (que até parece um pouco óbvio):

Tire a venda dos olhos!!

Faça isso, por favor! Procure entender sempre o problema que está por trás de uma solução proposta, entenda o porquê por trás daquilo e procure identificar outras possíveis saídas para aquele problema. Talvez a solução proposta inicialmente pelo cliente seja realmente a melhor, mas talvez seja a pior também. E você só vai saber se tirar a venda dos olhos! TI é pensar! Muitas vezes somos pagos não para implementar algo para o cliente, mas para PENSAR na situação dele e identificar saídas viáveis!

Vale salientar que isso se aplica a diversos contextos dentro do desenvolvimento de projetos, e ainda mais, se aplica a diversas outras áres além de TI!

BdB Recomenda – Stumble Upon

A disponibilidade da informação nos dias de hoje é abundante e muito completa, seja lá qual for o assunto ou tema que estamos falando.

Entretanto, hoje vivemos um novo fenômeno e dificuldade; Encontrar coisas realmente relevantes para o usuário de uma forma inteligente. Há temas que não nos interessam e, assim, não precisamos de gastar tempo em consultar sites sobre eles. No entanto, há outros temas que nós preferimos e que gostaríamos de conhecer melhor.

É assim que surge o StumbleUpon, um site, e também uma extensão para o Google Chrome, Firefox e Opera, que o vai ajudar a filtrar todos os conteúdos da Internet para ficar apenas com o melhor!

O StumbleUpon é uma plataforma que tem uma base de funcionamento muito simples: é-lhe apresentado uma página com o tema. Se gostar, então o StumbleUpon irá apresentar-lhe mais sites sobre esse tema. Se não gostar, irá apresentar-lhe menos sites, essa é inteligencia é feita por alguma heurística particular do site.

Ao se cadasrar, o usuário começa por escolher uma série de temas do seu agrado e, após isso, poderá fazer Stumble às páginas. “Fazer Stumble” é uma expressão que significa visitar uma página aleatória da Internet (escolhida pelo StubmleUpon) e que vai de encontro aos gostos do usuário. Isto é, com passar do tempo a plataforma vai conhecendo mais sobre você de forma que sempre terá sites relevantes para você.

Cargo cult, eXtreme go horse e afins

Depois de alguns anos escrevendo código, e também, observando códigos de outras pessoas, meus códigos antigos e código legado percebi alguns comportamentos e padrões entre o aptidão e/ou tempo de experiência X design do código das pessoas.

Investigando esses padrões, consegui entender melhor os “porquês” da incidência, em projetos grandes e bem financiados, de fenômenos como Cargo cult, eXtreme go horse, programação orientada a gambiarra e afins.

Contextualizando – Cargo Cult, descrito por Steven C. McConnell no livro Code Complete, é o fenômeno cultural observado em tribos indígenas/aborígenes, durante a segunda guerra mundial, que envolviam impactos entre duas civilizações, sendo uma moderna em aspectos tecnológicos e outra primitiva. Durante a guerra, soldados americanos necessitavam pousar em ilhas desertas para recarregar combustíveis ou armar mísseis, entretanto muitas dessas ilhas visitadas eram habitadas por esses povos. Ao ocorrer o choque das civilizações, os primitivos imaginavam que os soldados, com todo seu aparato, fossem deuses. Depois da partida da civilização moderna, os indígenas costumavam fazer rituais em determinados períodos do ano com o intuito de invocar os supostos deuses soldados, mudando assim o comportamento cultural/religioso do local.

Ao trazemos esse conceito para computação temos situações clássicas que vivemos no nosso dia a dia, talvez a mais popular seja : Ao perguntar a um desenvolvedor/gerente/engenheiro: – Para que serve esse pedaço de código? Ele te responde: – Não sei, mas não mexe aí! Pode parar de funcionar! Em outras palavras o desenvolvedor possui um tipo de ritual para realizar determinadas tarefas, como inserir código legado, bibliotecas, classes que não necessariamente são úteis para a implementação do mesmo, acarretando a incompreensão sobre o sistema de forma geral.

Para falar de eXtreme go horse temos que esquecer de qualquer boa prática, Scrum, Kanbam, Pair Programming ou qualquer coisa que lembre engenharia de software, isto é, se focar em escrever código e vencer o prazo. Infelizmente é uma realidade triste do mercado, que muitas vezes pode indicar falta de comprometimento do time e falta de alinhamento de interesses entre equipe/empresa ou má gestão do líder.

A verdade é que o caminho para esses cenários(caóticos) são convergentes podendo ser resumidos em falta de maturidade da parte do líder ou desenvolvedor, insegurança, pressão, contratos com prazos irreais, falta de comprometimento da equipe, etc. Muitas vezes esses motivos também podem acarretar um efeito dominó, piorando a situação exponencialmente.

Claro, podemos determinar inúmeras hipóteses para a solução do problema de desenvolvimento de software, entretanto, é fato que a solução está bem longe de determinar metologias rígidas ou mudar conceitos das mesmas. Temos que ir além, precisamos mudar conceitos, quebrar paradigmas, criar um time com determinação e com aptidão, mensurar e explorar potenciais, trabalhar com dificuldades, amadurecer a equipe e acima de tudo cair na real.

#TGIF – Computação nas nuvens atrapalha?? #Humor

O BdB abordou nos últimos posts alguns assuntos relacionados com computação nas nuvens (aqui e aqui)! E para fechar esta semana com uma pitada de humor, vamos ver como a Computação Nas Nuvens também pode atrapalhar a vida de alguns! 😛

Agora você já pode acompanhar as novidades do BdB pelo Facebook, acesse e curta nossa página.

Testes de sistemas na nuvem

Recentemente participei do IV EBTS,  no qual participei como palestrante e com certeza, o tema mais falado neste evento foi cloud computing. Inclusive o palestrante mais aguardado do evento Profº Silvio Meira falou sobre este assunto e alertou que todos se preocupassem em se atualizar sobre o assunto na área de testes. Neste evento participei de um minicurso sobre Cloud Computing e o ministrante e meu amigo Elias Queiroga ,  abriu minha mente para essa área e me deixou bastante empolgado com os desafios que quero compartilhar com vocês.

Antes de falarmos sobre testes em sistemas na nuvem, precisamos entender alguns conceitos básicos sobre a mesma, e a primeira delas são os tipos de cloud que existem hoje e os principais tipo são IaaS (Infra-estrutura como serviço), PaaS (Plataforma com serviço) e SaaS (Software como serviço).

No IaaS utilizamos puramente a infra do servidor para a nossa necessidade, como exemplo armazenamento ou memória e processamento. Já no PaaS utlizamos alguma plataforma configurada no servidor, podemos citar diversos exemplos como Google App Engine, Windows Azure, etc. Por último temos o SaaS que simplesmente é o software em si que usamos na nuvem e não faltam exemplos como Google Docs, iCloud, Microsoft SharePoint Online, etc.

Algumas das características mais importantes na computação em nuvem são: segurança, performance, disponibilidade e escalabilidade. Notem que estas características não são tão triviais de serem testadas e precisam do suporte de ferramentas específicas, muitas delas até a infra-estrutura de hardware precisa ser investida para viabilizar os testes de alguns sistemas na nuvem.

Figura 01
Figura 01

Um exemplo claro que podemos dar de como testar um sistema na cloud é utilizando ferramentas como JMeter que simula o múltiplo acesso a um serviço na cloud. Como isso funciona ? A aplicação quando instalada e configurada para rodar numa única máquina, abre várias threads para acessar o sistema alvo de teste e validar a sua capacidade de atender as requisições (Figura 1). Caso o sistema falhe antes de atender a quantidade de requisições previamente definida, ai os desenvolvedores do sistema tem que prover alguma solução e provavelmente será a replicação do sistema internamente na nuvem e a inserção de um balanceador para direcionar as requisições para cada instância da aplicação, como mostra a figura 2.

Figura 02
Figura 02

E quando o sistema em teste tem como requisito uma capacidade de atender à uma quantidade de requisições maior do que a nossa máquina de teste é capaz de gerar ? Ai vem o caso no qual precisamos inverstir na infra-estrutura de hardware do nosso ambiente de teste para viabilizar a validação desse sistema na nuvem. Nesse caso podemos colocar mais máquinas no nosso ambiente de teste e configurar o Jmeter para gerenciar a geração de requisições paralelas por estas novas máquinas, com isso aumentamos a capacidade do nosso ambiente de teste para testar o sistema na nuvem. A figura 3 mostra uma máquina “chefe” que gerencia as requisições que são feitas por cada máquina “escrava”, e cada uma dessas máquinas por sua vez abre várias threads para gerar requisições ao sistema na nuvem.

Figura 03
Figura 03

Esse é apenas um exemplo de uma das características de um sistema na nuvem pode ser testada, existem diversas outras ferramentas com diferentes propósitos para validade esses sistemas. Para saber mais sobre computação na nuvem visite este site developerworks da IBM  e para se aprofundar em teste para computação na nuvem, este tópico sobre cloud testing na wiki é bastante relevante .