There are many different kinds of testing you can use in your projects, but in this last chapter, rather than discussing the techniques or these tests, we are going to cover some things you can use and benefit from to get a full understanding of your project. Keep reading the last part o this blog post series!
Squint Test
Squint test your files.
Open any specific file, take a step back, and squint your eyes. By doing this you can have a complete idea and full view of your code architecture. Check those basic elements (classes, methods, objects).
Identity the Subject/System Under Test (SUT)
What are we testing? Do you have any unit testing at all (Rspec, mini-test, something else)? Try finding which classes, objects, and methods are tested.
if there is Capybara, Cucumber, Cypress or whatever is being used for testing, take a deep look of what is being tested there.
You will understand a lot about your codebase and business logic by doing this.
Understand the test setup and dependencies
Are we using factorybot? VCR? Are we cleaning our test database after every run?
Check how your test is running, how the configuration looks like… There are many useful insights to be obtained by doing this.
Find out the test coverage
Use simplecov
to discover how much of your code is being tested. This tool provides us a way to check for that, and see which things must be considered for improvement before we start working on the code.
Remember Single Responsibility Principle also applies to tests
Further reading:
- There are Test Smells
Extract Features
Changing code often will get difficult, so consider extracting features into a new app.
When | How |
---|---|
Lack of or outdated documentation | Extract code and start documenting it |
Single test containing multiple SUT | Create a high-level collaborative test suite, check Specification by Example |
Low coverage | Bring enough code to make tests pass, iterate |
Hard test setups | Simple is better |
Slow test suite | Maybe consider migrating to a new tool |
Wrap Up
There you go, by this point, you have all that you need to approach a Rails Legacy System. I hope you found this series useful, and that you learned some useful bits of information and tools to land successfully on a Rails Legacy Project. If so, follow us to learn more about Rails, React Native, JS topics. Thanks for your time.