Elicitação de Requisitos de sistemas Safety-critical

Sistemas safety-critical são aqueles que, em caso de falha, podem causar danos severos ou morte de indivíduos e/ou danos significativos ao meio ambiente. Esses sistemas estão presentes em diversos equipamentos que fazem parte do nosso cotidiano, como, por exemplo, carros (e.g. sistema de controle de frenagem, controle de piloto automático, ajuste de tração), aviões (e.g. sistema de controle de porta, sistema de ajuste de rota, navegação), e equipamentos médicos (e.g. sistema de ajuste de radiação em maquinas de ressonância magnética, sistemas de gatilho de marca-passo).

 IEEE_logoVocê já se perguntou como os requisitos desses sistemas são elicitados e documentados? As regras para tratar requisitos de safety são um tanto quanto diferentes das praticas “tradicionais” de elicitição de requisitos. Para que os produtos sejam homologados, e então liberados para o mercado, os equipamentos tem que ser desenvolvido seguindo praticas descritas em padrões ISO/IEEE (e.g. ISO 26262, ISO 14971). Esses padrões cobrem práticas que vão da especificaçao até à implantação do sistema. Nesse post vamos tratar apenas dos itens que são comuns à fase de requisitos de sistemas safety-critical.

Processos de elicitação de requisitos de safety, em geral, seguem 5 passos:

1 – Identificação do ítem: Considerando o domínio automotivo, o item não é o carro em si; mas um sistema que, ao final, irá compor o automóvel, como, por exemplo, o sistema de controle de tração, o sistema de piloto automático, etc.

2 – Análise de riscos e ameaças (hazard and risk analysis): Nessa fase são analisados e documentados todos os riscos inerentes àquele sistema. Um exemplo de hazard é “Piloto automático não desativar quando requisitado pelo motorista”. A cada um desses eventos é associado um Safety Integrity Level ou SIL (isso é assunto para outro post), que corresponde a uma indicação do quão catastrófico esse evento pode ser cruise-control-traktor-headercaso aconteça.

3 – Estabelecer Safety Goal: Cada evento ameaçador é associado a um safety goal ou, traduzindo literalmente, meta de segurança. Por exemplo, o safety goal associado ao hazard “Piloto automático não desativar quando requisitado pelo motorista” pode ser “Piloto automático precisa ser desativado quando requisitado pelo motorista”.

4 – Requisitos funcionais de safety: Para cada safety goal, uma série de requisitos funcionais de safety são derivados. Exemplo: “Ao pisar pedal de freio, piloto automático deve ser desativado”.

5 – Requisitos técnicos de safety: Cada requisito funcional de safety deve ter detalhes técnicos de como ele será implementado. Essa especificação deve conter detalhes dos blocos funcionais que vão implementar a função (hardware e/ou software).

normas-iso

No processo de certificação do produto, todos os artefatos e documentos associados são analisados e avaliados quanto a consistência, detalhamento, de modo a julgar a eficácia e eficiência do produto. Uma vez homologado, o produto é liberado para o mercado.

Processos de engenharia de safety são muito complexos e rígidos. Muitas outras técnicas são usadas para assegurar que esses sistemas não falharão. E, caso falhem, que o efeito seja o menos trágico possível.

No próximo post irei escrever sobre o que vem sendo feito no Brasil na área de sistemas safety-critical; mais especificamente no que diz respeito a software embarcado em equipamentos médico-hospitalares.

Aumentando a Velocidade da Execução dos Testes com Selenium

Quando falamos de automação de testes um dos principais benefícios citados é a possibilidade de obtermos a execução de um ciclo completo de execução num espaço de tempo bem inferior aos testes manuais. No entanto, quando começamos a nos aprofundar no assunto vemos que existem diversas práticas que podem ser utilizadas na codificação dos testes para permitir uma eficiência ainda maior.

Uma das possibilidades para o aumento da velocidade de execução é a utilização dos Headless Browsers, tema que inclusive foi abordado pelo Elias Nogueira, do excelente blog Sem Bugs, em sua apresentação sobre CasperJS. Resumindo numa única frase o Headless Browser é um navegador sem a interface gráfica.

Estudando sobre o assunto vi que já existe uma implementação do WebDriver para Selenium, que utiliza o PhantomJS e de maneira bem simples permite que possamos nos beneficiar da utilização de um headless browser. O projeto chamado Ghost Driver funciona perfeitamente e sua integração ao seu projeto é extremamente fácil utilizando o Maven.

Para adicioná-lo ao seu projeto basta seguir as orientações do projeto no github e se ainda tiver dúvidas basta seguir as orientações do post no blog Assert Selenium do Manoj Kumar. Além disso, a excelente apresentação abaixo, realizada pelo Ivan de Marino, um dos responsáveis pelo projeto, resume bem os benefícios da utilização e as orientações básicas.

 

Fiz um teste rápido num dos meus projetos e o ganho de velocidade foi significativo, como exemplificado pela imagem abaixo:

Comparação

Ainda não conhece o Selenium? Em outubro estarei ministrando um curso presencial no CESAR.EDU, onde abordaremos os conceitos básicos para utilização do Selenium WebDriver apoiado por diversas práticas em sala, segue o link para mais informações:

banner_curso2

Validação de layout automatizada com Selenium

Validação de layout nos diferentes browsers é um problema comum em diversos projetos de desenvolvimento de software. Afinal, assegurar comportamento e aspectos visuais adequados em diversas combinações de browser/SO é algo que demanda bastante tempo.

Durante essa apresentação na SeleniumConf 2013, Frank O’Hara apresenta um solução, que em conjunto com o Selenium, permite de maneira automatizada indicar erros de layout na aplicação.

Ainda não tive a oportunidade de utilizar a solução, mas parece bem simples associá-la ao Selenium.

Links do projeto:

RedGlass github

DomReactor github

DomReactor

E vocês ? Conhecem alguma outra proposta de automação para validação de layout? 

O que fazer quando o defeito está no teste ?

Contribuir para o aumento do nível de confiança, prevenir e encontrar defeitos estão entre os principais objetivos que queremos alcançar quando testamos um software. Porém, para atingirmos essas metas não existe uma simples receita de bolo e precisamos estar sempre atentos para maximizar as nossas chances de entregarmos constantemente software de qualidade e que atenda às necessidades dos clientes.

Apesar de nossos esforços, invariavelmente temos que lidar com os defeitos escapados, que normalmente implicam em stress, re-trabalho e desgaste na relação com o cliente. Em meio ao problema, uma das primeiras ações que temos é a análise da causa raiz, ou seja, identificar o porquê do defeito ter ocorrido e consequentemente do mesmo não ter sido identificado nas etapas anteriores de validação.

Diversos podem ser os motivos para a falha na detecção do defeito, por exemplo:

– Cenário de teste não estava coberto.

– Teste existia, mas não foi priorizado para o ciclo de execução.

– Teste existia, foi priorizado, porém não foi executado corretamente.

– Teste existia, foi priorizado, executado corretamente, porém diferenças de ambiente não permitiram a detecção da falha.

– Etc.

You are doing it wrong

Porém, ainda há um outro motivo, que talvez seja um dos mais frustrantes – O teste existe, mas está errado.

Quando isso acontece, independente de planejarmos corretamente, o teste, seja ele manual ou automático, nunca nos trará o resultado correto e a falha inevitavelmente aparecerá em produção. Nesses casos, ainda temos como dificuldade adicional o fato de que a re-execução do nosso teste não ajudará na reprodução do erro, podendo inclusive gerar ruído na comunicação e dificuldades na identificação da causa do problema e consequentemente em sua correção.

Identificar testes com defeito não é algo simples e corremos o risco de executá-lo diversas vezes e confiarmos em resultados enganosos. Para tentar minimizar esse tipo de situação, podemos realizar algumas ações:
– Revisar os testes existentes

– Se forem testes manuais, mudar o responsável pela execução

– Aprofundar-se no funcionamento de mocks e stubs utilizados para teste

– Conhecer as limitações das ferramentas utilizadas

– Revisar as pré-condições e o ambiente de validação

E você já enfrentou o problema de ter falhas escapadas devido a testes defeituosos? Que ações tomou para tentar evitar que o problema se repetisse?

Privacidade na web! Será que existe?

Ao meu ver existem dois pontos relativos a privacidade pessoal na web que devem ser levados em consideração:

  1. Nós estamos escancarando cada vez mais nossas informações na internet (principalmente através das redes sociais). Nossos dados, opiniões, relações, fotos, desejos, gostos, etc! Está tudo nos facebooks, twitters, youtubes,  google+, amazon (suas compras e seus hábitos de compras), etc. Essa informação é facilmente encontrada por qualquer um, e ela por si só já é perigosa. Precisamos ter muito cuidado.
  2. Mas adianta ter cuidado?? Até as coisas que não abrimos para o mundo todo, como nossos emails ou nossas conversas via voz no skype, estão sendo (podem ser) devidamente analisadas e acompanhadas por entidades superiores. E o que nós podemos fazer diante disso? No momento nada…

O ponto 1 acima é algo que precisamos aprender a conviver e aprender com tempo. Mas o ponto 2, é algo inadmissível que precisa ser mudado e precisamos criar formas na web onde não fiquemos nas mãos desses “magnatas da informação”. Recentemente essa questão de espionagem atingiu a mídia do mundo inteiro com o caso Snowden. Recentes relatos mostram como essas “magnatas da informação” ajudam (e podem ajudar) o governo dos EUA a espionarem e bisbilhotarem a privacidade alheia. Microsoft (outlook e skype), Google (principalmente youtube e gmail), etc são somente alguns exemplos de “magnatas” que tem “nossas vidas” nas mãos deles.

E agora? O que fazer?

Minha previsão sobre isso tudo é que, a longo prazo, essas magnatas vão modificar a forma como implementam seus serviços para uma forma mais “descentralizada” da informação (aonde as empresas magnatas não terão poder e domínio sobre todas as informações). Mas isso é uma coisa difícil de acreditar e ainda mais difícil de checar se é realmente acontece o que as magnatas dizem que acontece.

Então a possibilidade mais tangível ao meu ver (uma vez que as pessoas amadureçam como usuários da internet) é que vamos gradativamente parar de utilizar serviços e sistemas dessas magnatas e migrar para soluções descentralizadas que serão mais seguras (apesar de não serem lá tão maduras ou bonitas como as soluções das magnatas). Esses serviços e soluções provavelmente usarão tecnologia P2P (peer-to-peer), ou algo mais avançado que ainda não conhecemos. Soluções aonde a informação seja descentralizada e seja de todos, regulamentada e protegida por todos, ao invés de somente por uma empresa “dona” dos dados. Soluções assim já são realidade hoje em dia, e um exemplo muito bom é o do BitCoin (leia aqui se você não conhece o bitcoin).

A outra possibilidade é comprar máquinas de escrever ao invés de usar computadores 🙂 A Rússia já está fazendo isso para produção de documentos confidenciais (veja aqui isso)

Temos que lembrar que a humanidade toda é um bebê no mundo da web, e precisamos começar a amadurecer, crescer, abrir os olhos e parar de engatinhar… Caso contrário, temos que continuar aceitando calados os pontos 1 e 2 que citei acima.

Como reduzir o tempo gasto em testes?

Teste é sempre um gargalo! Não dá pra estimar quanto tempo é gasto em testes (e certificação),  mas algumas fontes mostram que cerca de 50% do esforço para desenvolver um produto é gasto em testes. Com esse dado, e o senso comum de quem trabalha com desenvolvimento de software, teste de software se torna um excelente alvo para ser estudado com o objetivo de se reduzir o tempo gasto.

Obviamente, muitos estudos já foram feitos nessa direção, e nesse post vamos falar um pouco sobre um artigo que realizou um mapeamento sistemático com o objetivo de identificar todos os trabalhos existentes (acadêmicos) que tratam sobre redução de tempo e esforço de testes. O artigo, publicado em 2012, tem como título “Reducing test effort: A systematic mapping study on existing approaches” e pode ser encontrado aqui.

Primeiramente, é claro que poderíamos reduzir o esforço de testes simplesmente tendo menos testes, mas é claro que reduzir a qualidade do produto final é inadmissível, principalmente quando tratamos de sistemas críticos e safety-relevant.

Diante disso, o artigo identificou 5 categorias que se propõem a diminuir o esforço gasto com testes (consequentemente diminuindo o tempo também na maioria das vezes). As cinco categorias são:

  • Test Automation – 50% dos estudos identificados nesse mapeameanto sistemático abordam essa categoria. Isso não é surpreendente pois automatizando testes muito tempo consegue ser economizado.
  • Prediction – 28% dos estudos abordam predição, no sentido de dar suporte a decisões sobre quanto esforço de teste precisa ser gasto para um dado sistema e como distribuir esse esforço entre as diversas atividades.
  • Test input reduction – 15% dos estudos abordam essa categoria, com o intuíto de ajudar da seleção e priorização  de test cases (essa categoria também é conhecida como redução de suítes de teste)
  • Quality assurance (QA) before testing – Essa categoria (encontrada em 5% dos estudos) lida com atividades executadas antes dos testes propriamente ditos e que ajudam a reduzir os testes. Essas atividades são: análises estáticas, inspeçoes e revisões.
  • Test Strategies – Essa categoria (encontrada em 2% dos estudos) aborda pontos  como a seleção de diferentes técnicas de teste e também seleção de diferentes níveis de teste para economizar tempo e esforço.

É claro que esses pontos são focados em estudos acadêmicos, e que nos projetos reais da vida real podem existir outras abordagens para reduzir esforço dos testes. Você usa/conhece alguma abordagem? Compartilhe conosco 🙂

Quais são as necessidades de um tester?

O que o motiva no seu trabalho como testador? Stephen Janaway, profissional de testes há 12 anos, tenta nos ajudar a entender nossas necessidades profissionais e a determinar como você pode deixar de sentir que trata-se apenas de um trabalho para um estado de “auto-atualização”.

A seguir, apontamos alguns dos principais aspectos discutidos por ele.

Stephen inicia fazendo uma relação com a pirâmide das necessidades de Maslow, tentando entender como as principais necessidades dos seres humanos são atendidas. Considerando, que de maneira geral as pessoas tem um grande desejo de atingir seu potencial, de progredir. Para Maslow, as pessoas que alcançaram o ponto de auto-atualização tinham características comuns, como: criatividade, espontaneidade, visão clara do certo e errado, etc.

Em seguida, ele monta a pirâmide associando cada um dos grupos as necessidades dos testadores, tentando esquecer descrições de cargo e funções, mas considerando o que nos satisfaz como testadores.

Stephen aborda que no nível mais básico (aceitação) a função é vista como algo que qualquer um pode fazer e que não é respeitado ou apoiado pelos superiores. No nível seguinte os testes passam a um nível de aprendizado, onde os mesmos são incluídos, mas vistos como algo irritante. No terceiro nível começa a existir o respeito e os testers são vistos como parte do time, consultados e respeitados. Já no nível de interação o negócio depende e percebe o valor adicionado pelos testes. Por fim, chegamos ao grupo onde há o reconhecimento interno e externo da comunidade, onde ele cita Maslow “O que um homem pode ser, ele deve ser.”.

Imagem1

Por fim, o palestrante pergunta: Em que nível você acredita estar? O que pode fazer para subir ou se manter no topo ?

Segue, abaixo, o vídeo da palestra, são apenas 15 minutos, bem objetivo e vale a reflexão.

TestBash 2.0 – A Tester’s Hierarchy of Needs – Stephen Janaway from Software Testing Club on Vimeo.

Vídeos – Google Test Automation Conference 2013

Nos dias 23 e 24 de Abril aconteceu mais uma edição do GTAC – Google Test Automation Conference. Dessa vez também acessível via streaming. Os vídeos das 16 horas de palestras também já estão disponíveis no YouTube, os quais compartilho com vocês no decorrer do post. Ainda não tive tempo de assistir a todas as palestras, mas tenho certeza que o nível do conteúdo é excelente, pois já assisti a vários vídeos dos anos anteriores.

As palestras estão divididas em dois vídeos, referentes a cada um dos dias do evento, porém a partir da agenda você pode saltar para a palestra que mais lhe interessar. Já assisti as 4 primeiras palestras do dia 1 e gostei bastante das duas primeiras.

Segue a lista das palestras e os vídeos.

Dia 1:

Duração Palestrante Empresa Tema
00:15:00 Tony Voellm Google Opening
00:45:00 Ari Shamash Google Evolution from Quality Assurance to Test Engineering
00:45:00 James Waldrop Twitter Testing Systems at Scale @Twitter
00:30:00 Break
00:45:00 David Burns and Malini Das Mozilla How Do You Test a Mobile OS?
01:00:00 Lunch
00:45:00 Igor Dorovskikh and Kaustubh Gawande Expedia Mobile Automation in Continuous Delivery Pipeline
00:15:00 David Röthlisberger YouView Automated Set-Top Box Testing with GStreamer and OpenCV
00:15:00 Ken Kania Google Webdriver for Chrome
00:15:00 Vojta Jina Google Karma – Test Runner for JavaScript
00:15:00 Patrik Höglund Google Automated Video Quality Measurements
00:15:00 Minal Mishra Netflix When Bad Things Happen to Good Applications…
00:30:00 Break
00:45:00 Tao Xie North Carolina State University Testing for Educational Gaming and Educational Gaming for Testing
00:45:00 Simon Stewart Facebook How Facebook Tests Facebook on Android
00:15:00

Dia 2:

Duração Palestrante Empresa Tema
00:15:00 Opening
00:45:00 Mark Trostler Google Testable JavaScript – Architecting Your Application for Testability
00:45:00 Thomas Knych, Stefan Ramsauer, Valera Zakharov Google Breaking the Matrix – Android Testing at Scale
00:30:00 Break
00:45:00 Guang Zhu (朱光) and Adam Momtaz Google Android UI Automation
01:00:00 Lunch
00:45:00 Jonathan Lipps Sauce Labs Appium: Automation for Mobile Apps
00:15:00 Eduardo Bravo Google Building Scalable Mobile Test Infrastructure for Google+ Mobile
00:15:00 Valera Zakharov Google Espresso: Fresh Start to Android UI Testing
00:15:00 Michael Klepikov Google Web Performance Testing with WebDriver
00:15:00 Yvette Nameth, Brendan Dhein Google Continuous Maps Data Testing
00:15:00 Celal Ziftci, Vivek Ramavajjala University of California, San Diego Finding Culprits Automatically in Failing Builds – i.e. Who Broke the Build?
00:30:00 Break
00:45:00 Katerina Goseva-Popstojanova West Virginia University Empirical Investigation of Software Product Line Quality
00:30:00 Kostya Serebryany Google AddressSanitizer, ThreadSanitizer and MemorySanitizer — Dynamic Testing Tools for C++.
00:30:00 Claudio Criscione Google Drinking the Ocean – Finding XSS at Google Scale
00:05:00

Vou cancelar minha conta do facebook… quer saber o(s) motivo(s)?

Quem me conhece ou acompanha alguns dos meus posts vai ver que o Facebook para mim é uma questão meio complicada. Quem acompanha o BdB também já deve ter visto alguns posts meus reclamando a respeito do facebook. Se quiser entender melhor esse post você pode primeiramente ler esses outros aquiaqui e aqui. Caso não

67037_474539079272861_1104199120_nqueira ler os posts antigos, tudo bem, você pode começar a ler por aqui mesmo.

Nem todos vão concordar com meus argumentos
Queria começar esclarecendo que o que estou falando aqui reflete apenas a minha opiniao sobre o assunto. Entao todos os pontos de vista sao pessoais, e nao refletem a opinao do blog.  A grande maioria dos argumentos aqui são a respeito de como utilizar da melhor forma e também o motivo pelo qual você utiliza. Provavelmente, algumas pessoas vão odiar esse post, outras pessoas vão se identificar, e outras até vão parar de ler antes de chegar nesse ponto.

Queria também ressaltar que meu objetivo com este post nao é fazer com que você cancele sua conta do facebook, mas talvez que você reflita um pouco sobre sua utilizacao e sobre os pontos que vou falar 🙂

O facebook tem muitos pontos positivos…
e ponto final! Sei do poder como ferramenta de rede social que é, a quantidade de dinheiro que movimenta através de seus anúncios, etc. Sei que cada vez mais criamos grupos, e até disciplinas de faculdade e assuntos mais “sérios” sao tratados e discutidos dentro do facebook. Além disso como ferramenta de marketing e divulgacao ele é espetacular. O próprio blog (Bytes Don’t Bite) tem uma página no facebook para divulgacao dos posts, e vai continuar tendo, pois é um ótimo canal de comunicacao. Talvez até, o facebook seja o bode expiatório no meu caso. E o cancelamento da minha conta simplesmente uma atitude em direcao ao movimento de DESCONECTAR-SE! Mas vamos aos motivos do cancelamento.

1- Meu tempo é muito precioso, aliás, o seu também é…
Acredito que todos nós temos vontade de investir nosso tempo em coisas que regularmente não fazemos como indivíduos (como ler mais livros, fazer exercícios, aprender uma nova lingua, aprender uma nova tecnologia, estudar para um concurso, etc…), e também como coletividades que somos (dar mais tempo para seus pais, mais tempo para seus filhos, para seus irmãos, se importar com os outros, fazer mais favores, escutar as pessoas, conversar, etc…).

Tudo isso demanda tempo, mas só temos 24 horas no dia, e visitar alguém ou algo do tipo pode tomar muito tempo. Conversar com seus amigos, fazer uma ligacão, mandar um email,  toma muito tempo. No entanto, gastamos uma quantidade CONSIDERÁVEL de HORAS no facebook diariamente (é óbvio que isso não vale para todo mundo, mas tem uma quantidade absurda de pessoas que vão se identificar).

Eu decidi que: Quero dar mais tempo para minha família, meus amigos, para as pessoas e para meus projetos pessoais.

2- A mudança de valores que vem junto com uma “curtida do facebook”…
Sabe aquela sensação que tínhamos antigamente quando recebíamos uma carta? Era muito legal, você sabia que alguém (que provavelmente se importava o suficiente com você para isso) tinha gastado o tempo dela para escrever algo para você. Tudo bem que o email veio ao mundo,  e substituiu praticamente por completo essa situação descrita a pouco. Mas, ainda hoje, a sensação de receber um email (destinado a você somente) é algo muito precioso (pelo menos para mim) e ainda dá uma sensação de satisfação muito grande.

É muito bom quando comentam e curtem nossas fotos e status no facebook. É legal ver que muitas pessoas curtem, e muitas dessas pessoas realmente se importam com conosco, se preocupam conosco, e procuram fazer com que a relacao de amizade vá além de um curtir. No entanto, para muitas outras pessoas aquele curtir é um resumo da relacao que se tem, a “consideração” que muitos demostram uns ao outros, hoje é um simples CURTIR na sua foto/status.

Eu decidi que: Não vou demonstrar minha amizade e meu carinho por alguém utilizando um simples curtir. Quero fazer a diferença na vida de verdade, e não no facebook.

3- Fora do facebook vamos perder muita coisa que acontece no dia-a-dia…
Primeiramente queria dizer que não tenho NADA importante acontecendo no facebook.

Além disso, eu possuo telefone celular, telefone fixo, email, whatsapp, linkedin, instagram, twitter, foursquare, skype, facetime, blog, slideshare, pinterest, etc… Isso que significa que se alguém quiser verdadeiramente entrar em contato comigo, não é pelo fato de eu não ter facebook que essa pessoa não vai conseguir entrar em contato.

Caso alguma delas tome mais meu tempo do que eu gostaria eu simplesmente vou cancelar minha conta também, ou pensar em alternativas que minimizem o problema.

Eu decidi que: Tudo que tirar meu tempo e não trouxer benefícios muito claros para mim eu vou tirar da minha vida.

4- Roda de amigos, todos eles de olho no celular…stock-footage-two-female-friends-with-mobile-phone-in-bar-outdoors-camera-stabilizer-shot
É muito triste ver isso, mas a gente faz parte disso e faz isso sem sentir. As pessoas são os bens importantes que temos na vida, e ainda assim estamos ao lado delas (nossa familia, amigos, etc) e simplesmente abaixamos a cabeça para checar e responder as notificações do facebook (ou qualquer outra app) no celular a cada 10 minutos. Ou simplesmente trocamos uma conversa real, para responder conversas virtuais no celular. Por esse motivo eu já tenho desinstalado o facebook do meu celular a um bom tempo, e não me arrependo nem um pouco. Talvez outras apps, como whatsapp, também sejam o motivo de trocarmos conversas e relacoes reais por virtuais.

Eu decidi que: Quando estiver com pessoas, não quero que o celular tenha maior atenção que as próprias pessoas

5-O facebook amplifica o alcance das nossas opinioes e pensamentos… Boas ou ruins…
Neste ponto, eu vou  usar um texto que li em um blog da Luciana Honorata nesse link e achei muito bom, e reflete exatamente o que penso sobre esse ponto.

“Antigamente, quando não havia internet, “todo mundo” ficava sabendo das catástrofes. Os desastres naturais, os acidentes aéreos, a enchente não sei de onde, o assassinato de Daniela Perez, a morte de Ayrton Senna… Todo mundo chorava, lamentava, comentava e criticava. As pessoas tinham suas opiniões formadas, mas elas ficavam restritas ao seu círculo social. Vizinhos, família, colegas de trabalho. Caso tivessem um comentário infeliz a fazer, deixavam uma marca negativa em seis, sete pessoas, e quando muito, (sendo bem pessimista) 20 ou 30 desafortunados os ouviam, mas isso não causava um efeito tão devastador na imagem de um grupo quanto nos dias de hoje. 

A internet, entretanto, facilitou a comunicação de um modo que potencializou o poder de influência das pessoas. Sites, blogs e redes sociais massificaram a opinião, e agora todo mundo diz o que pensa quando quer e bem entende sobre qualquer coisa, não na mesa do restaurante, para um público que se pode contar nos dedos da mão, mas para milhares de indivíduos, simplesmente quando decide responder ao sr. Facebook ‘ O que você está pensando?’ “

Como ela falou, sempre fomos desse jeito que somos agora,  a única diferenca é o alcance das nossas opinoes e comentários. Entre o pensamento e o teclado, acredito que exista uma distancia menor do que entre um pensamento e a boca. Agora temos “coragem” de escrever qualquer coisa no facebook. Coisa que nao teriamos “coragem” para dizer cara a cara com alguém, mas é tao fácil simplesmente escrever no facebook. É muito comum pessoas reclamando de TUDO, e “metendo o pau” em todo tipo assunto possível. É comum ver opinioes de pessoas que você nunca conhecia antes, e nao por nao terem tido contato suficiente, mas simplesmente porque o nível de “coragem” dessas pessoas ao publicar algo no facebook é muito alto. Diferentemente de uma conversa cara a cara.

Além disso,  a “coragem” aumenta pelo fato de nao precisarmos nos preocupar com o impacto de algo que falamos, quem nao gostou do que você falou que lhe bloqueie.

Eu decidi que: Quero evitar falar “besteiras” e “reclamacoes” para um público de milhares de pessoas sem me preocupar com o alcance real dessas palavras e com as consequencias disso. E nas redes sociais que ainda continuar participando quero ter cuidado com o que falo, e contar até 10 antes de compartilhar, postar, responder, rebater, curtir, etc.

7- E a privacidade?
Repare que eu ainda nao toquei no ponto da privacidade, que por sinal é muitíssimo discutido. Privacidade é algo que nao me preocupa muito pois ninguem é forcado a usar o facebook (ou qualquer outra rede social). Entao existe uma opcao simples para escapar dos problemas de privacidade do facebook: Parar de utilizar! Cancelar sua conta. Mas…. se você quiser utilizar e ainda assim manter um nível bom de privacidade você vai ter problemas sim, tenho certeza. Nao consigo pensar em nada na web que exponha tanto sua vida pessoal com o facebook. Se tiver algum outro servico ou app ou qualquer outra coisa que exponha tanto ou ainda mais que o facebook por favor me avisem.

6- Porque ainda daqui a 10 dias somente que vou cancelar minha conta no facebook?

O motivo disso é simplesmente porque pode ser que eu esteja errado, então se alguém me der motivos fortes o suficiente para não cancelar, eu posso até mudar de idéia. É importante salientar também que se eu julgar que por algum motivo o facebook é uma parte integral da minha vida que eu não posso viver sem ele eu simplesmente reativo minha conta (mas eu espero de verdade que isso não aconteça).

Os testes estão atrapalhando a qualidade?

No primeiro post de 2013 relacionado a testes, compartilho com vocês uma palestra que encontrei do James Whittaker na conferência StarWest (Software Testing Analysis and Review) 2011. Largamente conhecido por suas contribuições a nossa área, ele questiona de maneira forte qual o verdadeiro papel dos testes.

James aborda diversas questões, que nos levam a refletir a importância de cada uma de nossas tarefas, por exemplo:

– Como ganhar respeito para os testes?

– Os testes são apenas uma disciplina que apoia o desenvolvimento?

– Os softwares estão ficando melhores… Porquê?

– Os bugs que você encontra poderiam ser encontrados pelos usuários?

– A única coisa que se mantém atualizada é o código.

O vídeo tem 55 minutos, mas tenho certeza que é um tempo bem investido. Assista e avalie como você se sente em relação ao seu trabalho com testes e principalmente como você pode torná-lo melhor?

 

“A única coisa que importa é o produto”

                                                                                     James Whittaker

Pessoalmente, concordo com muita coisa dita por ele no vídeo. Se prestarmos bastante atenção, o tom forte utilizado é apenas para chocar e chamar a nossa atenção a um problema visível e que muitos preferem empurrar com a barriga. Cada vez mais precisamos entregar valor, e ficar gastando tempo com atividades que pouco beneficiam o desenvolvimento do produto é um erro grave, do mesmo modo que o tempo perdido com trabalho que poderia ser melhor executado por ferramentas.

Você concorda com o cenário geral descrito por Whittaker? Ele, inclusive, aponta que estávamos enganados e que, sim, usuários e desenvolvedores podem testar melhor que uma equipe de testadores.

Link do post falando das ferramentas que o google tornou open-source para testes, mencionado no vídeo :

 – Google Testing Blog

No início do vídeo James faz um rápido questionário com a platéia, adicionei as perguntas abaixo em português, compartilhe conosco sua resposta: