Testes unitários e testes estáticos
Moderador: Moderadores
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Testes unitários e testes estáticos
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,
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,
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Testes unitários e testes estáticos
Considerando que muitos aqui nem sequer usam a compilação -e3 -es2 .....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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Testes unitários e testes estáticos
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,
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
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Testes unitários e testes estáticos
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.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()
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
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Testes unitários e testes estáticos
Andre,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?
De uma olhada no link abaixo.
https://harbour.github.io/doc/harbour.h ... er-options
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
Testes unitários e testes estáticos
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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Testes unitários e testes estáticos
Ola!
Saudações,
Itamar M. Lins Jr.
Mas é exatamente esse projeto que ele cita no primeiro post. !?Dar uma olhada neste projeto ve se ajuda
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Testes unitários e testes estáticos
Para o Harbour, talvez sirva o mesmo estilo do Visual Basic.
Pelo menos serve como referência, ao invés de partir do zero.
Pelo menos serve como referência, ao invés de partir do zero.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Testes unitários e testes estáticos
Bom dia,
Obrigado pelas respostas, é um bom ponto de partida.
Vou analisar tudo e tentar fazer algo funcional, aí posto por aqui.
Abraços,
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
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho