r/softwaredevelopment • u/Grouchy_Monitor_7816 • 1d ago
How to Manage Auto Tests and Requirements?
I'm doing software development for the longer time of my life, but I'm stuck forever with those basic tasks I'm seemingly unable to find good solutions to. If I was to be tasked to create a software from scratch with infinite money and time but highest standards on product quality and maintenance quality, I would simply not be able to produce a good outcome.
I'd like to learn to find solutions for those technical blind spots.
I'd be super happy if people with insight or personal experience could point me to material to study - whatever it is (books, videos, research papers, abandoned projects, "join this particular OSS project", ..., paid, free)
Managing automated tests: How should I design and manage my automated test cases? How should I name them? Should I write them like use cases? Should I name them by requirements? Should I write them rather technical? How do I not get lost in the number of written tests and the near infinite amount of test I'd possibly have to write? How do I represent functional dependency between tests? If 200 tests are failing, how do I quickly figure out that they all depend on one basic functionality that is failing? (I've read a couple of books on the topic, but most seem to focus either on theoretical basics or on technical detail like "in JUnit....").
Background: So far I've only seen projects with super difficult to maintain test cases. Many cases are parameterized, most are hard to understand (complex data setup, complex notation). I've never encountered a project where I though "oh yeah, it's pretty clear what's happening here" - like when you go in a library and see where all the sections are and know where you need to go... never seen that.
Managing requirements: How to mange requirements for a software like MS Word - thousands of requirements, thousands of requirement combinations. The number of things that should need to be taken into account seems endless. And then you have to write it down, be able to process it as a human being and even change it if necessary. How can you keep connected requirements connected? And how do you do all that without spending 200% on text and -100% on actual development? And how do you integrate requirements with tests?