O custo dos testes de unidade

O teste unitário é um tema recorrente para mim nestas últimas semanas; entre falar Stackoverflow e outros fóruns e os testes que eu escrevo para dois projectos em curso, Perguntei a algumas perguntas sobre o custo real dos testes de unidade.

Isto é especialmente um artigo de Thomas Brandt (Alemão: “TDD in der (a minha) Prática - desejo e realidade”) que me fez pensar seriamente. Brandt descreve em seu artigo muito bem este fato Golfo entre teoria e prática de Test Driven Development. Ponto final, Pelo contrário, ela adere aos princípios do TDD;

Devo começar por dizer que Test Driven Development, especialmente o princípio de "primeiro teste", é um pouco “sexy” desenvolver. Ele pode certamente melhorar a arquitetura de software e nos impede de fazer certas (pequenas) erros.
— tradução relativamente livre de cerca de T. Brandt

Ele considera, portanto, TDD como uma ferramenta poderosa – pelo menos de um puramente acadêmico. Mas o resultado imediato é uma dúvida;

A questão é simplesmente: a que preço?

Como mencionado, exceto T. Brandt e eu, muitas outras pessoas parecem perguntar, ea pergunta mais freqüente é a seguinte: É que o uso de testes de unidade é que ela é realmente melhor software, e que os esforços para investir são realistas?

Condensado, a questão se resume a uma simples:

Custou-me o quanto os testes de unidade?

Muitas vezes a questão envolve, que aquele que levanta acho testes de unidade são muito caros para aplicar de forma consistente. Eu me lembro de uma discussão que tive sobre o valor de uma cobertura total do ensaio além do ideal teórico. Relatado esforços para fornecer eu disse “não” no momento.

A partir de hoje, acho que todas estas perguntas são feitas simplesmente mal, porque não é saber o custo dos testes de unidade é importante, mais:

Como faço para pagar a omissão de testes de unidade?

E aqui está a minha resposta, ilustrada com um exemplo concreto;

Um dos meus projetos atuais incluem um grande número de componentes distribuídos. Descobri um erro no projecto de, que me forçou a refatorar ambas as classes. Tudo me levou cerca de 1 hora. Lançamento testes de unidade? Sobre 30 segunda. 30 segundo, eu descobri que alguns comportamentos não eram, como inicialmente previsto. Levei cerca de 20 minutos para correções. Escrevendo testes me custou cerca de 45min.
O balanço é de cerca de duas horas.

Sem testes de unidade, Eu provavelmente não iria perceber alguns dos erros imediatamente. Eu teria 1 refatoração tempo, mais de um mais ou menos determinável, certamente estender por vários dias, para corrigir os problemas passam despercebidos quando mudar. A probabilidade de que neste momento vai bem além de uma hora é relativamente alta (depurar “mão”, recriar as condições existentes em aplicações multi-threaded, etc…).

Pela minha parte, Eu acho que para calcular um tempo definido (testes com cobertura de uma parte realista do software – não 100%) mais interessante é que a navegação no escuro, tal como praticada.

Experimento! ;)

A NoSQL poucos para MariaDB

Logo de MariaDB

MariaDB um garfo do MySQL

A mensagem chegou-me muito feliz por MariaDB, o garfo muito promissor MySQL. Com uma muito recente confirmação no seu repositório, MariaDB se permite relaxar um clássico modelo relacional pode. Com a introdução de colunas dinâmicas (Tradução livre “Dinâmica Coluna”) a próxima versão (5.3) Então, aparentemente MariaDB para conter uma pitada de NoSQL!

A meta principal do desenvolvimento foi usado para fazer essas colunas através de sintaxe SQL Classic. Internamente colunas dinâmicas são armazenados como BLOB (Binary Large Object).

Para ilustrar a operação pode este novo tipo, um pequeno exemplo:

Select All Code:
1
2
3
4
INSERT INTO exemple (nom, classe, prix, attributs) VALUES
("HTC Desire Z", "telephone", 420, COLUMN_CREATE(1.5, "Gris")),
("Nokia E7", "telephone", 509, COLUMN_CREATE(32, "noir", 2, "Clavier")),
("Lenovo Thinkpad E420", "ordinateur", 1019, COLUMN_CREATE(1, "noir", 3, "Win7 Pro", "500Go"));

Como você pode ver, tudo parece uma consulta inteiramente convencional, coluna de varejo “attributs” fechar. No exemplo, cada entrada contém dados, portanto, convencional, sobre um campo “attributsatributosue contém um número variável de dados (NB: ao contrário dos campos clássicos, matriz de entrada dinâmica tem apenas um número de endereçamento, mas, aparentemente, os desenvolvedores ainda têm que mudar isso).

Para criar uma entrada para a coluna, portanto, utilizadosCOLUMN_CREATE(), Para atualizar ou excluir uma entrada deve usar o COLUMN_ADD() em uma chamada normal UPDATE:

Select All Code:
1
2
UPDATE exemple SET attributs=COLUMN_ADD(attributs, 1, "jaune")
  WHERE COLUMN_GET(attributs, 1 AS CHAR(10)) = "noir";

O exemplo também ilustra bem o uso de COLUMN_GET() que dá acesso a um atributo da coluna. Há também Column_list() que retorna a lista de colunas dinâmicas presentes.

Se você quiser experimentar este novo recurso já, jettez do seu compilador e repositório de MariaDB; binários estará disponível com a versão 5.3 O MariaDB.

componentes de terceiros e testes de unidade

Teste de Software - Ser uma ciência

Acabei de ler o estudoSoftware Relatório risco a integridade que foi realizada a pedido doCoverity. Em termos gerais o estudo mostra muito a sensação de que há muito tempo; o desenvolvedor médio é muito menos preocupados com a qualidade dos softwares de terceiros que se integra num projecto que a qualidade do seu próprio código.

Sobre os valores, diz o estudo 90% de (330) Os desenvolvedores usam fontes de terceiros (eles são livres de direitos autorais ou proprietários) no seu software. Contras apenas cerca de 40% Os desenvolvedores dizem que estes fazem testes automatizados sobre estas fontes (contras mais 75% para as fontes “home”). É o mesmo (alguns por cento) para o teste manual e integridade (stress-testing/functional-testing).

Existe um certo consenso a respeito dos atrasos devido ao código de terceira parte má qualidade; mais 140 Os desenvolvedores responderam que a maior parte dos atrasos de lançamento ou foram recolhidas devido a problemas com fontes de terceiros.

A palavra final: TESTEZ! TESTEZ! TESTE!

Linux em um navegador

Durante muito tempo todos nós sabíamos que o JavaScript não estava lá para validação de formulários (X)HTML e fazer algum efeito sobre os sites. Mas agora M. Fabrice Bellard golpeou outra vez com uma demonstração de’escala!

Este gênio de fato alcançado um emulador x86 em JavaScript puro! Vou poupar os detalhes técnicos aqui (eles possam ser lidos em Site Fabrice Bellard). Atacado, JSLinux é um emulador 486, sem FPU e MMX, mas com uma unidade de gerenciamento de memória (MMU)complète!

Uma característica de projeto (o que tornou possível explorar essa) é a extensa utilização de matrizes digitados (especificação por) que recentemente se tornaram disponíveis nos browsers recentes (Chrome 11 e atualmente Firefox4, Opera ser espirituoso para apanhar se a minha informação está correta).

Quanto “distro” Linux instalado no demo, ele é bastante completo; kernel 2.6.20, BusyBox, nós, qemacs e um compilador C (TinyCC, Tive a alegria de tentar, pela primeira vez =)

Nesta, Vou deixar que você descubra por si mesmo a maravilha: JSLinux (a página leva alguns segundos para carregar)

Instale Mono 2.10 Red Hat Enterprise Linux com YUM

E eu estou de volta com um pouco de ajustes Linux: Instale Mono 2.10 no CentOS (5.6 pela primeira vez).

Poucas horas de pesquisar na net eu sempre trouxe ao mesmo resultado; construir a partir da fonte… e com a boa lista de dependências, nada muito engraçado… a solução: quebrar um pouco a cabeça pequena!

Leia mais

Restaurar as chaves SSL privado perdeu!

O experimento’ Eu estou descrevendo hoje é bastante acentuada, especialmente tendo em conta o tema!

A primeira história: j’ai malencontreusement effacé, ou melhor, substituiu a chave privada usada para criptografia SSL em um dos meus servidores. Sabendo que sem esta chave o servidor faz andar mais uma vez reiniciado!

O que me salvou? O fato de que carrega Apache arquivo inteiro na memória! Eu poderia ter feito um dump da pilha / stack processo apache2 pesquisa…. ou procurar por 2 horas no Google para encontrar a seguinte ferramenta pouco

Leia mais

Imprimante HP Color Laserjet 2600n sous W7

Bonjour à tous; voilà la grande nouvelle; je suis maintenant parmi les utilisateurs de Windows 7 (3semaines maintenant) et plutôt satisfait. Mis à part deux petites pannes de pilotes (résolues maintenant) rien à reprocher, si ce n’est que l’imprimante Laser de HP (CLJ2600n) qui est chez ma mère m’a posé un petit lapin ce matin quand j’ai voulu l’utiliser:

Enfait je pensais que tout allais bien fonctionner du premier coupsous Vista ca marchaismais apparemment les pilotes pour cette imprimante réseau ne sont plus sur Windows Update pour W7, et HP propose seulement une versionPlug and Playsur leurs site (assim: page de support HP pour la 2600n) qui est destinée au fonctionnement via USBdu moins officiellement.

Leia mais

7 Astuces Google qui peuvent vous sauver la vie!

Tout le monde utilise Google (à quelques exceptions près…) comme moteur de recherche, mais qui savais qu’on peut utiliser Google pour trouver la définition d’un mot, convertir des Euros en Levs Bulgares, ou limiter la recherche à des information comprises entres certaines dates?

Voici quelquesAstucesGoogle, qui peuvent d’avérer bien utiles!

Leia mais

jQuery: Transformações CSS animados para Opera 10.50

Descobri há algum tempo transformações CSS primeira disponíveis no WebKit (o motor de renderização por trás Safari e Google Chrome), foi então adicionado Firefox, Opera e mais recentemente com o lançamento 10.50.

Como sempre, as implementações são diferentes (para não mencionar que o Internet Explorer não apoiá-los em todos os…) mas o script Zachstronaut (um “hotpatch” infact jQuery, adicionar a propriedade transformar a função $.css() e rodar como escala para $.Animado()) funcionou bem no Firefox e do WebKit…

Infelizmente, a aplicação de CSS Transformações Opera não retorna um valor “legível” mas uma matriz de dados, para o qual eu não encontrei documentação. Então eu peguei alguns desvios, e através da função getComputedStyle() Eu era capaz de recuperar o necessário para executar a animação no Opera.

A versão modificada do script é assim (Você também vai encontrar um exemplo para aqueles que não sabem alterações CSS).

LMGTFY.com, ou “comment les aider à chercher?”

Si l’on a le malheur de passer commegeek” (ou expert desnouvelles technologies” – pour être politiquement correcte)  on se retrouve souvent à jouer la Hotline pour les amis et autres connaissances. La plupart du temps il nous reste qu’a lancer un moteur de recherche.

La science "Google"

La science "Google"

Pour nous aider, les gens derrière LMGTFY, pour Let Me Google That For You, ont créé leurs site; vous entrez une recherche, et le site vous génère une “animação” qui montre comment il faut chercher avec Google. Vous envoyez le liens à votre connaissance et vous la laissez apprendre

Une belle idée je trouveAmusez vous ;)

P.S.: Pour les fans du logos Google: les Google Doodles (c’est la collection officielle de tous les logos thematiques :P )