FEM Workbench Testing - GSoC Proposal

Hey everyone,

I’ve submitted a GSoC proposal that aims to improve the quality and reliability of the FEM workbench by introducing a extensive and consistent testing approach and developing a test suite covering the whole FEM module.

It goes by the name FEM Workbench Testing and can be viewed on google docs: https://docs.google.com/document/d/1riddGK1_k2DLCleUdNQ_qVk7uMqyyDj_cIL4ugN-AC4/edit?usp=sharing. Via this link you also have the right to add comments to the document. I invite everyone to read through the proposal and to leave comments in the document or directly in this topic :slight_smile:

regards,
Markus

Hi Markus,
Congrats for this really well written and clear structured proposal.
Hope to see this topic selected for this years GSoC since I know how easy it is to break things as non professional developer and a Testing-WB would help here tremendous.
BR,
HoWil

Thanks :smiley:

Hi Markus,

thank you for this proposal. At the moment it is fine for me since it totally fits in the GSoC project we made public on our wiki page. It attracts some very underestimated and often neglected point in software development. This will for sure help FreeCAD FEM to get more stable and reliable.

Cheers bernd

In the mentioned test helper functions, do you plan to implement some kind of viewscreen comparison? As FEM is to a big part looking at meshes and result plots it would be helpful to enable tests to check if the on screen view is correct (also as this allows postprocessor tests)? Maybe some kind of picture comparison… not sure if this is trival or hard :slight_smile:

I really like the idea of viewscreen comparison because it would test every component along the way. I may even end up doing it although the implementation would not be easy I think and involve a lot of statistic stuff. I think that in most cases though going one step less that is just verifying the inventor scene (or VTK in case of the new style result objects) would be enough and much easier. The step from the Inventor/VTK representation to the screen is the territory of the respecting libraries (VTK and Inventor).

Hey @m42kus, how’s it going? Will you be marking your progress in a blog or log somewhere?

Hey, yes I will post my progress of course. Since bernd suggested that I’ll use this topic I will do that. At the moment I am still quite busy preparing for the last few tests I have that semester but I will post a testing tool survey in the next few days.

I just posted the first part of the testing tool survey in the Developers corner: https://forum.freecadweb.org/viewtopic.php?f=10&t=36515.

In addition to this topic I have just set up a devlog on my github pages site: https://ceeli.github.io/gsoc/
I will still post everything I consider noteworthy in this topic. For daily updates on my progress though please use the devlog.

Today I started the creation of a very much simplified version of essential runtime components of FreeCAD. I will use that in the next few days to implement a prototype of the test framework. This will make it much easier to convey my idea to you guys and also to argue about it, make changes and generally improve it before I implement it for the real FreeCAD. It’s also much easier for me to initially develop for those simplified components. The code is available on GitHub: https://github.com/ceeli/gsoc2019_prototype.

I just posted part 2 of the testing tool survey concerning the selection of a C++ unit test library in the Testing Tool Survey topic: https://forum.freecadweb.org/viewtopic.php?f=10&t=36515&p=310930#p311026

Hi everyone,

sorry for the slowdown of my project. Unfortunately I’m sick since a few days. The doctor says that I should still rest for a week but I’ve been doing a few things anyway :stuck_out_tongue: I’m going to share them with you guys tomorrow :slight_smile:

Hi Markus. Get well and take the time to recover. BR HoWil

Thanks, I’ll try :stuck_out_tongue:

Now, for those who didn’t already see it on my devlog: I developed a test runner for google test which starts FreeCAD before it runs the tests. Without the application running FreeCADs Document Objects wouldn’t work properly. You can look into the code on my testing feature branch: https://github.com/ceeli/FreeCAD_bhb/tree/testing.

I also wrote some source documentation for the Analysis Document Object (specification). Based on the specification I than wrote some tests. Right now all this is located in src/Mod/Fem/Test.

In addition I started to develop a test support library for C++ tests. Right now there isn’t much in it yet but I expect it to grow over the next month.

To figure out how to properly test objects I needed to dig around a lot in the FreeCAD source to learn how exactly everything works. When I learn stuff I always write down what I learned wiki style (mostly because I forget things pretty fast xD). I think most of that isn’t part of the wiki yet. If you are interested I could share that docs with you and if you find it helpful put it on the wiki :slight_smile:

Yes, please! :pray:

Yes please (2)

Hey @m42kus hows it going? Any updates ?

Hey, not that much… I really wasn’t in the shape of doing anything worthwhile the past week. Today I already feel much better and I did a little documentation work. From tomorrow on I’m going to work full time again. I’m very sorry for the delay…

Hello,
thanks for your patience, I’m going to try to make up for the lost time by working a few weekends. Today I implemented a few more tests, advanced the FCTest library a bit and also wrote tests and documentation for the new code I wrote for the library :stuck_out_tongue:. I also updated my devlog where you can find more details: https://ceeli.github.io/gsoc

One thing I did yesterday was to setup a alternative version of FreeCADs doxygen documentation. Imo doxygens default configuration is a bit overloaded so I hacked together a lighter prototype. It only includes documented C++ code and is hosted on github. I did this just so I can keep track of my stuff but maybe you find something worth stealing :stuck_out_tongue:. If you are interested you can look at two classes I documented today:



Nice to see that you are interested, I’m going to share them as soon as I find the time to polish the notes a little more. Probably next week I think :slight_smile: