Página 1 de 1

Testes unitários e testes estáticos

Enviado: 25 Fev 2020 15:45
por André Corrêa
Boa tarde,

Há algum tempo tenho pesquisado e pensado a respeito da possibilidade de termos uma suite de testes para o Harbour.
Para aqueles que não conhecem, testes unitários são testes executados sobre pequenos trechos de código, a fim de garantir que o resultado
será o esperado. Ou seja, em programação funcional, são escritos para testar funções em POO, são testados os métodos.
A maioria das linguagens conhecidas já possuem ferramentas que facilitam esses testes, como a JUnit para Java, pyTest para Python, e inúmeros frameworks e plataformas que executam testes estáticos em diversas linguagens, como o https://www.sonarqube.org/, que tem suporte para 28 linguagens, mas não para a família xBase.
Para o Harbour, o mais próximo que encontrei, foi a hbUnit, https://github.com/endersonmaia/hbunit, um projeto independente, incompleto e sem atualizações desde 2013.

O assunto é complexo, mas a abordagem inicial pode ser simples: criar uma ferramenta para executar testes estáticos em código Harbour, que futuramente possa ser estendida para cobrir também os testes unitários.
Minha ideia inicial é ler o código, obter as variáveis declaradas e buscar erros de acesso, como acesso fora do limite do array (ou of bound), acesso a array vazio (array acess), acesso a variáveis não inicializadas, etc.

Eu gostaria da ajuda dos colegas mais experientes nesse projeto, que poderá ser útil a toda a comunidade caso saia do papel.
Preciso de ideias para encontrar a melhor forma de ler o código, localizar as variáveis e checar pelos possíveis erros.
Inicialmente pensei em utilizar regex ou as funções simples de localização de strings mesmo, mas não sei se esse é o melhor caminho.
Se alguém tiver algum conhecimento mais técnico sobre como o compilador checa por este tipo de erro, será de grande ajuda.
O link do projeto no Github é https://github.com/andrelccorrea/Harbou ... sting-Tool, porém, ainda não existe nada de
grande relevância.

Abraços,

Testes unitários e testes estáticos

Enviado: 25 Fev 2020 19:02
por JoséQuintas
André Corrêa escreveu:Minha ideia inicial é ler o código, obter as variáveis declaradas e buscar erros de acesso, como acesso fora do limite do array (ou of bound), acesso a array vazio (array acess), acesso a variáveis não inicializadas, etc.
Considerando que muitos aqui nem sequer usam a compilação -e3 -es2 .....

Mas sabe o que sinto falta no Harbour?
Checagem de objetos.
Talvez até checar isso seja mais fácil do que o resto, e geralmente faria parte da IDE.

Tipo... colocar no fonte classe:Iniciar(), mas o nome correto era classe:Inicializa()

Isso não dá pra colocar no compilador, porque teria que analisar o conjunto de fontes, e talvez até alguma possível LIB.

Testes unitários e testes estáticos

Enviado: 25 Fev 2020 19:15
por André Corrêa
Boa noite, Quintas.

Eu gostaria de ideias que possa usar, de como fazer, etc.
Sozinhos, muitas vezes não encontramos os melhores caminhos e nesse caso, a vasta experiência de usuários como você, ajudaria muito.

Abraço,

Testes unitários e testes estáticos

Enviado: 26 Fev 2020 20:54
por André Corrêa
Considerando que muitos aqui nem sequer usam a compilação -e3 -es2 .....

Mas sabe o que sinto falta no Harbour?
Checagem de objetos.
Talvez até checar isso seja mais fácil do que o resto, e geralmente faria parte da IDE.

Tipo... colocar no fonte classe:Iniciar(), mas o nome correto era classe:Inicializa()
Como costumo utilizar IDE, estou conhecendo agora os parâmetros de compilação via linha de comando. Não encontrei nenhum documento, nem do Harbour, nem do Clipper tratando disso.
Alguém poderia disponibilizar algum documento ou compartilhar o que conhece?
Sobre criar algo no sentido de checagem de métodos e variáveis de objetos, é uma ideia bem interessante. Poderia ser algo baseado no que o Intellisense faz, mas pré compilação.

Testes unitários e testes estáticos

Enviado: 03 Mar 2020 08:24
por sygecom
André Corrêa escreveu:Como costumo utilizar IDE, estou conhecendo agora os parâmetros de compilação via linha de comando. Não encontrei nenhum documento, nem do Harbour, nem do Clipper tratando disso.
Alguém poderia disponibilizar algum documento ou compartilhar o que conhece?
Andre,
De uma olhada no link abaixo.
https://harbour.github.io/doc/harbour.h ... er-options

Testes unitários e testes estáticos

Enviado: 03 Mar 2020 08:55
por jairfab
Dar uma olhada neste projeto ve se ajuda

https://github.com/endersonmaia/hbunit

Testes unitários e testes estáticos

Enviado: 05 Mar 2020 08:59
por Itamar M. Lins Jr.
Ola!
Dar uma olhada neste projeto ve se ajuda
Mas é exatamente esse projeto que ele cita no primeiro post. !?

Saudações,
Itamar M. Lins Jr.

Testes unitários e testes estáticos

Enviado: 05 Mar 2020 15:21
por JoséQuintas
Para o Harbour, talvez sirva o mesmo estilo do Visual Basic.
Pelo menos serve como referência, ao invés de partir do zero.

Testes unitários e testes estáticos

Enviado: 06 Mar 2020 07:52
por André Corrêa
Bom dia,

Obrigado pelas respostas, é um bom ponto de partida.
Vou analisar tudo e tentar fazer algo funcional, aí posto por aqui.

Abraços,