Como validar corretamente seu código?

8

Eu tenho cerca de 4000 linhas de código para um aplicativo da web em JavaScript / PHP / CSS / HTML. Como posso testá-lo corretamente?

Eu só suporte a versão mais recente do IE e Safari. Eu resolvi todos os erros. Existe uma boa maneira de testá-lo para que eu possa ir tão longe quanto chamar o código de robusto?

Eu considerei usar o perl Mechanize para preencher automaticamente formulários ou fazer algo semelhante.

Eu também tenho uma classe de teste PHP para testar o funcionamento interno das minhas classes PHP. No entanto, há algum tipo de padrão ou diretrizes de conformidade a serem cumpridas? Existe uma maneira de dizer que esse código passa nos padrões IEEE xxx foo para robsustness de código etc.?

Eu validei meu HTML usando validadores W3 e meu JavaScript usando jslint.com.

Aqui está uma lista de itens de dilligence:

  1. HTML / CSS passa na validação W3
  2. JavaScript passa jslint
  3. PHP passa na classe de teste PHP interna

Teste do Usuário

  1. Crie um conjunto de ações do usuário e implemente usando perl mechanize ou similar.

Existem padrões ou procedimentos para liberar código na Web?


fonte
O PHPUnit provavelmente será muito mais respeitado como um método para testar suas classes PHP do que uma solução personalizada, pois é o padrão de fato para testar o código PHP.
o único "padrão" disponível no mercado é o beta privado + o público beta, com muito tempo e tempo suficiente. Seu palpite é tão bom quanto o meu sobre quais valores colocam lá.
Itay Moav -Malimovka

Respostas:

2

A validação de software é uma área enorme, não há uma resposta definitiva para sua pergunta. Além disso, o engenheiro de validação de software geralmente é uma posição especial que requer muito mais conhecimento do que desenvolvimento e muitas habilidades (como por exemplo "especificação de depuração" que é realmente muito pouco trivial) que agora são comuns na comunidade de desenvolvedores.

Segundo, a validação de software (e a validação de código como parte essencial) não está testando. Há uma citação famosa de Dijkstra:

O teste mostra a presença, não a ausência de bugs

Portanto, essa é a principal diferença da validação de software (por exemplo, declarando que seu software é válido, não contém erros) e teste (para possíveis erros ou bugs).

Se reduzirmos sua pergunta para "como validar corretamente um aplicativo Web baseado em PHP?" Eu posso dar a seguinte resposta:

Análise de contaminação.

Existem algumas ferramentas legais ( 1 , 2 ) para realizar análises de contaminação no PHP. Essa é uma análise estática (que significa que é feita sem a execução do seu código) que identifica possíveis coletores (vazamentos) de informações confidenciais.

Eu usei algumas dessas ferramentas ( Pixy ) em minha própria prática e descobri que elas, como todas as outras ferramentas na análise estática, parecem superestimar o perigo potencial. No entanto, eles podem ajudá-lo a identificar alguns problemas de segurança que você pode não estar ciente. Isso é especialmente importante para aplicativos da Web que lidam com alguns dados confidenciais.

Isso não excluirá todas as vulnerabilidades possíveis, como XSS, mas cobrirá muitas comuns, como código PHP e injeções de SQL, etc.

Validação de conformidade.

Esta etapa você já executou executando os validadores JSLint e CSS / HTML em seu site completo.

Testes de carga.

Se a disponibilidade do seu aplicativo da Web for um problema (ou mesmo parte do seu SLA), eu também realizaria alguns testes de carga. Esses podem ser gerados por alguns IDEs, como o Visual Studio, ou você também pode usar a estrutura JMeter de código aberto para esse fim.

Alexander Galkin
fonte
Muito obrigado. Eu não percebi que havia ferramentas de análise estática para PHP como havia para Javascript ... Vou examinar isso primeiro.
Amém, Dijkstra ☺
Geremia 19/03
1

Os padrões são tão bons quanto as pessoas que os aplicam. (especialmente verdadeiro com os padrões de qualidade ISO ...)

Se você deseja testar completamente o seu software, precisa de uma boa especificação de requisitos que possa ser usada para verificar o fato de que você executou / implementou todas as tarefas / recursos / etc, conforme elas devem ser implementadas. Também ajuda ter outra pessoa a olhar para o projeto apenas de uma perspectiva de garantia de qualidade / teste de software (de revisões de código a testes exploratórios do usuário).

Outra observação que você pode querer considerar é o fato de que, sem uma especificação clara de requisitos, como desenvolvedor, você provavelmente assumirá as coisas como 'recursos' em vez de 'bugs' :)

Existem padrões IEEE para especificações de requisitos (IEEE 830) e planos de teste (IEEE 829). No entanto, acho que eles são um pouco OTT para muitos projetos.

(Também estou um pouco surpreso por você não ter um banco de dados?)

rks
fonte
Eu tenho um banco de dados .. eu considerei testá-lo como parte do teste do PHP .. como essa é a única maneira de acessá-lo. Obrigado pela sua contribuição .. Vou procurar no IEEE 830 e IEEE 829 apenas por algum conhecimento extra lateral ... obrigado por sua contribuição.
1

A resposta não é popular.

Você deve fazer com que os usuários saibam disso. Depois de esgotar a lista de bugs relatados após várias iterações de teste, você poderá chamar seu código apenas como robusto.

Você testá-lo sozinho será de pouca utilidade, porque você está nas árvores codificando e não pode ver a floresta.

Você não sabe que os desenvolvedores são os piores testadores de todos os tempos? Sou desenvolvedor e só sei disso depois de muitos anos caindo de cara depois de dizer com orgulho: "isso funciona perfeitamente no meu laptop".

Jason Sebring
fonte
Também é o mais fácil, porque você testa apenas o que está sendo usado. Outro usuário chamou isso de Beta e Beta Privado, pois você não deseja que os usuários públicos descubram bugs, pois eles usarão o produto de outra pessoa.