15 julho 2009

O problema da fusão de papéis

Hoje um dos temas quentes do twitter foi precisamente a questão da segurança, ou melhor dizendo das suas falhas de segurança.

Existem quanto a mim, duas grandes fontes destes problemas, por um lado os clientes, sejam internos ou externos, pagam funcionalidades e dão a segurança como um dado adquirido, os prazos são geralmente apenas pensado em termos de funcionalidades, por outro lado, existe o problema da fusão de papeis, tarefas que deviam ser executadas por pessoas diferentes são na realidade executadas pelas mesmas pessoas.

Mesmo no caso do desenvolvimento de software, o developer têm um reforço positivo quando os testes correm, e um reforço negativo quando quebram.

Como o seu cérebro funciona no sentido dos reforços positivos, isto motiva o developer a corrigí-los e a não quebrá-los, mesmo quando tem mesmo de o fazer para avançar.

A situação piora quando o developer quer testar a sua aplicação, criando novos testes, sendo de certa forma traído pelo seu próprio cérebro que não o ajuda a criar bons testes para o quebrar.

No entanto existem possíveis soluções, como gerar testes aleatóriamente ou todos os casos possíveis (quando é possível), ou recorrer apenas aos use-cases e depois ir adicionando à medida que vão sendo reportados bugs.

Mas a melhor solução é sem dúvida ter um tester especializado, idealmente até pode ser um gajo do contra, cujo prazer lhe vem apenas de encontrar falhas no trabalho dos outros, o que importa é que ele tenha prazer em encontrar bugs e a reportá-los para que possam ser criados os testes.

Quando falamos em termos de segurança, a situação é ainda mais complicada, porque normalmente as consequências são maiores, pelo que a questão dos reforços é ainda mais evidente.

Obviamente não é dizer que o developer não deva perceber de segurança, claro que sim, o máximo possível, mas o objectivo dele é protecção, o tester é penetração.

Eu sou a favor de disputas amigáveis entre developers e testers.