Monthly Archives: August 2009

Chamada de Trabalhos II Encontro|PHPSP

ii-encontroO grupo PHPSP esta se programando para realizar um novo encontro do grupo. Um evento de um dia a ser realizado entre setembro/outubro.

Para iniciar os preparativos queremos sua contribuição, queremos trazer palestrantes da comunidade de São Paulo, então estamos mais uma vez pedindo que cadastrem suas palestras no link acima de Cadastro de palestras. (Palestras de 1h no máximo)

Em breve iremos anunciar as datas corretamente e logo em seguida as palestras que serão realizadas. A data do evento será a melhor possível, levando em consideração outros eventos de/ou envolvidos com PHP, e muito provavelmente em um sábado.

Não existe tema específico, falou sobre PHP você é bem-vindo! Iremos selecionar as melhores palestras para serem apresentadas no dia do encontro. Não se acanhe, você não precisa ser nenhum expert em nada para palestrar, caso você tenha alguma dúvida sobre sua palestra ou deseja alguma ajuda, manda um reply pro @phpsp no Twitter, ajudaremos com o maior prazer do mundo.

Obrigado!

Oportunidade na 4Linux

Seguem dados da oportunidade na empresa 4Linux.

A 4linux, empresa especializada em serviços e treinamentos baseados em software livre, está procurando um profissional para trabalhar na cidade de São Paulo com o seguinte perfil:

  • curso superior completo
  • conhecimentos avançados em php ( desejável também conhecimento em  linux)
  • inglês fluente.
  • horário de trabalho – das 9 as 18h ou das 13h00 as 22h00.
  • disponibilidade para viagens

Este profissional será responsável por:

Benefícios:

  • plano de saúde Sulamérica
  • subsídio para curso de inglês
  • trabalhar 100% somente com softwares livres
  • assistir outros cursos da 4linux gratuitamente
  • estar envolvido com alguns dos maiores projetos de sofwware livre do Brasil com o da Caixa Economica Federal , por exemplo : http://www.4linux.com.br/clientes/caixa-economica-federal.html

Salário compatível com as responsabilidades.
Interessados devem enviar CV para rh@4linux.com.br com o título ‘php2009′ e também preencher seu CV no banco de curriculos da 4linux em : http://curriculo.4linux.com.br/

Curso Webservices em PHP

Em Agosto, dia 29, acontecerá em São Paulo o Mão na Massa “Webservice em PHP”

Ensinar as definições de um webservice, sua tipagem, as tecnologias envolvidas em sua construção e consumo, seus benefícios e a como desenvolver utilizando as ferramentas existentes para php.

Após o treinamento, os participantes estarão aptos a escolher qual tecnologia deseja utilizar para desenvolver e também criar webservices para integração de sistemas, além de conhecer as questões de segurança e performance.

Tópicos:

  • Entendendo webservices
  • Como criar webservices
  • Desenvolvendo webservices
  • Utilizando Objetos externos em um Webservice
  • Desenvolvendo webservices mais robustos
  • Conectando-se ao banco dados
  • Segurança em webservice
  • Outras práticas de segurança.

Maiores informações e Inscrições

http://www.temporealeventos.com.br/?area=66

Inscreva-se até este dia 27 com o seguinte código promocional “55c1s4” no valor de R$ 249,00

PHPSPCast #3: Des-sobrinhação, PHP pra gente grande

PHPSPCast #3: Des-sobrinhação: PHP para gente grande!O PHPSP continua na sua eterna batalha para acabar com os sobrinhos no PHP! Você é um sobrinho? Não sabe? Então acompanhe o quarteto do PHPSP com seu convidado Alex Piaz enquanto discutimos o que é um sobrinho, e como deixar de ser um. Vamos conversar sobre diversos assuntos ligados ao trabalho profissional com PHP, conheça termos como KISS, DRY, aprenda sobre ambientes de desenvolvimento, controle de versão, frameworks e tudo mais que faz parte da jornada do PHP no mundo Enterprise.

Ao final do cast se tiver interessado em saber mais sobre os assuntos discutidos, nao deixe de participar do Seminário PHP que ira tratar exatamente do mesmo assunto.

Mas se tudo isso não te interessa, escute o cast ao menos para saber o problema do skype no linux e da relação de “Ruth do sanduiche-iche” com nosso colega Anderson Casimiro-iro

Continue reading

Seminário PHP 2009

Seminário PHP 2009

O PHPSP esta preparando grandes surpresas para a comunidade neste final de ano. Nosso primeiro passo confirmado é o Seminário PHP que acontece no dia 31/Outubro.

O Seminário PHP é realizado pela Tempo Real Eventos com o apoio do PHPSP para montar o seu conteúdo. A coordenação do grupo se reuniu e definimos que o tópico ideal para o evento seria a profissionalização do desenvolvedor PHP, ou como falamos por aqui, a Des-Sobrinhação. Portanto o foco do evento é apresentar técnicas, formas de pensar, estratégias de carreira e novidades sobre o PHP.

Participando deste evento você poderá levar a sua carreira a um novo patamar, melhorando seu ambiente de trabalho com novas tecnicas que facilitam o trabalho em equipe e se destacar profissionalmente, abrindo caminho para novas experiências profissionais.

Nosso grupo de palestrantes é formado por grandes nomes da comunidade e pessoas que construíram suas carreiras utilizando o PHP. Rafael Dohms e Augusto Pascutti são coordenadores do PHPSP e possuem vasta experiência em contribuir com projetos open source como o Habari, PHP e outros, além de serem hosts do PHPSPCast. Guilherme Blanco se destaca ainda mais na comunidade por ser contribuidor do Doctrine, um sistema de ORM excelente para o PHP, além de já ser palestrante de carteira carimbada em grandes eventos de PHP no Brasil. Alex Piaz também possui um grande histórico de participação em projetos Open Source e se destaca pela evolução que causou no ISA com o seu conhecimento de ambientes e equipes.

Com essa equipe de “heróis” o evento passará por palestras de carreira, PHP 5.3, boas práticas e ambientes de desenvolvimento, com certeza uma grande contribuição para quem quer dar o próximo passo em sua carreira.

A pré-inscrição no evento custa apenas R$ 79,00 e se prolonga até o dia 19/Setembro. Este evento não segue o formato de eventos do PHPSP, pois estamos apenas realizando o conteúdo do evento. Mas não deixe de participar por isso, parte do dinheiro da inscrição será repassada ao PHPSP e convertido em benefícios para a comunidade, como a confecção de camisetas, canecas, coffee breaks nos eventos e muito mais, tudo isto será apresentado à comunidade de forma transparente com uma prestação de contas online, contribua para o grupo!

Se quiser saber mais sobre o conteúdo do evento, aguarde o lançamento do PHPSPCast #3 em breve, nele reunimos parte desta equipe de palestrantes e conversamos sobre diversos fatores de uma carreira profissional.

Esperamos que todos possam participar do evento e que ele traga uma luz a todos que querem construir uma carreira com tijolos de PHP e melhorar seus ambientes de trabalho para melhorar ainda mais seu trabalho. E aguardem pois temos mais novidades a caminho, fiquem de olho no blog.

Coordenação PHPSP

Escrevendo testes com PHPT e contribuindo com o PHP

Este ano esteve em destaque a PHPTestFest09, sendo realizada em vários cantos do mundo e destacando-se a participação do PHPSP que contribuiu com o maior número de testes. Ficou de fora? Então já comece a se preparar para ano que vem.

O PHPT é um framework extremamente simples de testes criado e usado internamente pelos desenvolvedores do core. Ele é extremamente atômico e centrado em testes como os que esperamos do PHP, como testar funções e bugs específicos.

O que preciso saber?

A grande vantagem do PHPT é que para poder escrever um teste, tudo que você precisa saber é: como escrever código PHP. Claro que um pouco de conhecimento interno do funcionamento do PHP vai te ajudar a procurar detalhes para testar, mas sabendo escrever PHP você já pode contribuir com uma grande percentagem dos testes que precisamos.

Vamos então atacar por partes:

  1. Preparando o ambiente
  2. Escolhendo um teste
  3. Escrevendo um teste
  4. Rodando um teste
  5. Enviando seu teste para o PHP

1. Preparando o Ambiente

A preparação do ambiente não é nada complicada e exemplos estão disponíveis para referencia. A primeira coisa que você precisa é da versão do PHP que vai precisar para rodar testes. No caso do TestFest focamos no PHP 5.3, no momento recomendo pegar as últimas disponíveis na página do PHP QA (qa.php.net) vá lá e baixe o pacote (source ou binary para windows).

Em ambientes Linux/Mac Os X, você irá passar pelo processo de compilar o PHP, passando pelos processos normais de “./configure”, “make” mas antes de rodar o “make install”, você poderá rodar o comando “make tests”. Este comando irá rodar todos os testes do PHP (em torno de 900+), pode demorar, mas é um ótimo procedimento, pois ao final você poderá mandar um relatório para a equipe de QA e “fazer sua parte”. Rode também o comando make install pois durante a confecção de um teste será interessante você poder testar ele com a versão correta do PHP.

Mais pra frente vamos ver como usar o make tests para rodar os seus novos testes.

2. Escolhendo um teste

Antes de escrever um teste é necessário escolher o objeto de nosso teste. Para tal é preciso identificar um ponto do PHP que necessita de um teste, isto pode vir de duas fontes, um bug ou uma linha de código não “coberta” (code coverage). Para descobrir bugs com/sem testes a melhor forma é olhando a pasta de testes da extensão do bug (GD -> /ext/gd/tests) ou conversando com o pessoal na lista do QA.

Para testes específicos de linhas de código sua melhor aposta é o site http://gcov.php.net onde você deve navegar até a versão correta que esta testando e então escolher uma área sem cobertura. No caso da testfest deste ano, o PHPSP focou na GD pois sua cobertura estava bem baixa então navegamos até o gcov do gd.c para ver onde poderiamos atuar. Para fazer esta parte do processo um conhecimento básico de C e de como o PHP funciona por baixo dos panos é muito bom, mas após alguns testes você aprende a identificar os pontos e durante o testfest o Guilherme Blanco e o Erick nos ajudaram a entender o código.

Para exemplificar melhor vamos ver como identificar estas linhas e o que elas fazem. Veja por exemplo a linha abaixo:

PHPT-Gcov

O que queremos é que todas as linhas fiquem azuis (executadas) ou brancas (código não executável), as linhas não testadas estão marcadas de vermelho. Identificando a linha 1856 como não executada devemos interpretar que como há um if logo antes, a condição “== FAILURE” nunca é atingida, ou seja, esta linha nunca é executada pois a função zend_parse_parameters não retorna falso em nenhuma das chamadas a função imagecolorallocatealpha identificada logo ali encima na linha 1848.

Mas e ae? Ok, a função zend_parse_parameters é responsável por validar os parâmetros da função, ou seja, para testar esta função precisamos escrever alguns testes que passem parâmetros inválidos para a função e verifique se ela alerta o erro corretamente. Agora podemos passar para o passo de escrever este teste.

3. Escrevendo um teste

Escrever um teste é incrivelmente simples, e como testes devem ser objetivos e pontuais isso é bem claro. Você deve limitar o escopo de seu teste, procurando testar apenas uma função ou aspecto. Isso irá facilitar a nomeclatura de seu teste.

3.1 Nomeclatura de arquivos

A nomeclatura é bem simples:

  • Teste para bug: bug<bugid>.phpt
  • Funcionamento básico da função: <função>_basic.phpt
  • Erros da função: <função>_error.phpt
  • Variação do funcionamento da função: <função>_variation.phpt
  • Extensões: <extensão>_<#>.phpt

3.2 Estrutura de um .phpt

Arquivos de teste seguem uma estrutura bem simples:

Como vemos, a sessão TEST é um título de uma linha do teste descrito no arquivo. A sessão FILE é usada como o corpo de um arquivo .php que será gerado para o teste, e a sessão EXPECT demonstra o resultado que esperamos da execução da função. Recomenda-se o uso de var_dump para gerar saídas.

Estas são sessões padrões, mas a documentação completa pode ser vista aqui: phpt format

Você poderá ver situações onde os blocos acima não são o bastante, mas em geral você estará checando para ver se executando a função X irá retornar a saída esperada. Porem um bloco é interessante ser mencionado aqui, o bloco CREDIT. Caso você não tenha acesso ao CVS, colocando seu nome nesse bloco irá levar seu nome aos créditos do PHP, no caso do TestFest utilizamos este formato:

Ok. Vamos tentar escrever um teste agora para ver se entendemos tudo até agora. Usando o exemplo acima onde identificamos uma linha não coberta por testes, vamos escrever um teste para testar o primeiro parâmetro da função. Observe a linha abaixo:

O que devemos entender aqui é o trecho que diz “rllll” pois ele identifica o tipo que cada parâmetro deve ter, neste caso o primeiro parâmetro deve ser um “Resource” por isso o “r”, e os outros devem ser do tipo “long”. Pare um momento agora e verifique o manual do PHP para esta função

Ele confirma exatamente o que vemos no código, mas você poderia também achar uma situação onde o manual esta incorreto, mais um ponto onde você poderia contribuir com o PHP.

Voltando ao nosso exemplo, vamos então escrever um teste para testar a validação do primeiro parâmetro da função. Verificando a pasta /ext/gd/tests vemos que não há testes desta função, mas especificamente não há um teste chamado imagecolorallocatealpha_error1.phpt, então como vamos testar justamente isto, podemos usar esse nome. (podemos usar _error2… para os outros parametros por exemplo)

Primeiramente vamos definir o título, deixando claro que estamos testando o parâmetro 1 da função e adicionar nosso crédito, que também é importante se houver algum erro no teste ou adaptação e precisarem saber quem foi o autor original do mesmo.

O bloco –SKIPIF– é muito importante neste caso. Como estamos testando uma função da GD, que é uma extensão do PHP, ela não estará sempre ativada, portanto só devemos executar os testes caso a extensão esteja ativa. O bloco SKIPIF é exatamente para isso, faça as verificações necessárias, caso não deva rodar, execute um die. O processo que executa os testes interpreta isso como SKIP e não FAIL. Isto vale para outras condições também, como arquivos necessários e qualquer outro fator que possa determinar se um teste deve ou não ser “pulado”.

Este é o corpo do teste, a parte mais importante. Basicamente estamos executando a chamada à função com diversos parâmetros inválidos, como strings, arrays e um resource que não é uma imagem. Passando um resource que não é imagem estamos na verdade testando a linha 1859, mas é uma condição importante de se testar também. O restante dos parâmetros recebem valores válidos.

Finalmente vamos testar o resultado. Aqui no caso utilizamos o EXPECTF que funciona como um printf, poderíamos ter usado outros disponíveis com expressões regulares por exemplo, mas o funcionamento deste é bem mais simples. Aqui basicamente estamos conferindo se o texto de erro bate com o que esperamos e como usamos um formato de printf $s e %d substituem textos que são dinâmicos, como o nome do arquivo que varia em cada máquina.

Dica: Para obter as mensagens de erro, rode o arquivos usando o PHP, ex: php imagecolorallocatealpha_error1.phpt. O arquivo será executado, todo conteudo dele será echoado na tela, mas dentro do bloco –FILE– o conteudo que aparecer é o resultado da execução.


4. Rodando um teste e fazendo faxina

Agora você tem um arquivo phpt pronto e precisamos ver se este teste esta mesmo passando. Para isso precisamos chamar o executor de testes e passar o nosso teste, caso contrário ele irá executar todos os 900+ testes. Para fazer isso o processo é simples, execute o comando make test da mesma forma de antes, mas definindo o parâmetro TESTS, assim:

Você pode dar o caminho completo para o arquivo, ou usar um wildcard como assim, isso é útil se você acabou de escrever os testes para todos parâmetros e quer rodar todos testes daquela função.

Veja o resultado:

Test Results

Note que o teste passou, como indica o PASS logo em frente ao que escrevemos no bloco –TEST–.  É interessante também comentar o que acontece quando um teste falha, além de ser marcado com um FAIL o sistema gera um numero de arquivos com o mesmo nome e diferentes extensões:

  • .out – output do arquivo php criado po teste
  • .php – o código gerado para o teste (bloco –FILE–)
  • .diff – uma comparacao do que foi o output e do que se esperava
  • .exp – o texto em –EXPECTEDF– isaolado
  • .log – um resumo do processo

Estes arquivos são muito uteis para que se analise o resultado e poque da falha.

5. Enviado seu teste para o PHP

Você possui algumas formas de fazer seu teste chegar no PHP. A primeira é participando do PHPTestFest anual, onde todos os testes são enviados para um repositório separado e então integrados ao SVN oficial. A segunda forma é você enviar este teste que escreveu para a lista do QA Team e alguem irá colocar ele no SVN por você. A terceira forma é uma junção de ambas, muitas pessoas apos a testfest são presenteadas com contas do SVN e karma para poderem comitar seus próprios testes, como ocorreu comigo (viu, não é mentira!)

Conclusão

Pronto, agora você tem todas as ferramentas para começar a escreve testes para o PHP. O PHPT é excelente para sua função em testes do PHP, mas testes não param por ai, procure incluir os testes em seus sistemas e bibliotecas, mas para isso procure o PHPUnit e aprende sobre Test Driven Development (TDD). Em breve falarei destes por aqui também.


© Rafael Dohms for Rafael Dohms, 2009. |
Permalink |
No comments
Want more on these topics ? Browse the archive of posts filed under PHP.