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.
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
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.
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
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, 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.
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.
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 I’m going to share them with you guys tomorrow
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
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 . 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 . If you are interested you can look at two classes I documented today: