Clipper On Line • Ver Tópico - Testes unitários e testes estáticos

Testes unitários e testes estáticos

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Testes unitários e testes estáticos

Mensagempor André Corrêa » 25 Fev 2020 15:45

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/Harbour-Static-Testing-Tool, porém, ainda não existe nada de
grande relevância.

Abraços,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Testes unitários e testes estáticos

Mensagempor JoséQuintas » 25 Fev 2020 19:02

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testes unitários e testes estáticos

Mensagempor André Corrêa » 25 Fev 2020 19:15

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,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Testes unitários e testes estáticos

Mensagempor André Corrêa » 26 Fev 2020 20:54

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.
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Testes unitários e testes estáticos

Mensagempor sygecom » 03 Mar 2020 08:24

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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7005
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Testes unitários e testes estáticos

Mensagempor jairfab » 03 Mar 2020 08:55

Dar uma olhada neste projeto ve se ajuda

https://github.com/endersonmaia/hbunit
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Avatar de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 242
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes

Testes unitários e testes estáticos

Mensagempor Itamar M. Lins Jr. » 05 Mar 2020 08:59

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Testes unitários e testes estáticos

Mensagempor JoséQuintas » 05 Mar 2020 15:21

Para o Harbour, talvez sirva o mesmo estilo do Visual Basic.
Pelo menos serve como referência, ao invés de partir do zero.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testes unitários e testes estáticos

Mensagempor André Corrêa » 06 Mar 2020 07:52

Bom dia,

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

Abraços,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot] e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro