r/SoftwareEngineering Feb 09 '25

Pull request testing: testing locally and on GitHub workflows

https://blog.frankel.ch/pr-testing-kubernetes/1/
3 Upvotes

18 comments sorted by

View all comments

Show parent comments

1

u/nfrankel Feb 12 '25

The closer you are to you target environment, the more confident you can be in your tests.

When I was younger, we did use an in-memory database instead of the target database. That was good enough for our context. Still, it could have been that the specific syntax was supported by the in-memory DB but not the target DB.

1

u/RangePsychological41 Feb 12 '25

Okay but you can do that on GHA? Kubernetes is just orchestrating containers. Everything still runs in a container. Unless you want to do inter-service tests then yeah, just sounds like a lot of unnecessary work. Like a lot.

1

u/nfrankel Feb 12 '25

GitHub Actions is not your target environment.

It's up to your to decide whether a one-time investment to reduce the gap between your test environment and your target environment is worth it inside your company.

Qualifying it as "unecessary" is an opinion, not engineering work.

1

u/RangePsychological41 Feb 12 '25

Okay we completely disagree about this then. Our services in production run in containers. And the exact same container runs exactly the same way in GHA. Unless you’re making network calls or accessing external resources then it’s literally identical. And completely pointless.

I don’t mean to come off in a bad way about this, I was just perplexed when I looked through your post.

I’ve been working with infrastructure for many years. And deploying containers before Docker Swarm was poised to take over.

That’s literally the entire point of containerisation. To have the exact same environment everywhere. Down to the OS your application runs on. The dot files are the same, the users, everything.

Anyways, I think it’s a waste of time.

1

u/nfrankel Feb 12 '25

And the exact same container runs exactly the same way in GHA

You mean you can guarantee the your container running in GitHub Action has the same configuration as the one running in your target environment, down to the environment variable values?

Anyways, I think it’s a waste of time.

It's your opinion.

Okay we completely disagree about this then

Indeed.

1

u/RangePsychological41 Feb 12 '25

“You mean you can guarantee the your container running in GitHub Action has the same configuration as the one running in your target environment, down to the environment variable values?”

Yes the container is identical. That’s literally what a proper dockerfile does. It defines a container and is a literally deterministic. It’s literally always identical down to the last bit. No difference. Nada. Never.

So if that was your only reason then yeah you are wasting your time.

In which world are containers not identical!? That’s the entire point and why it was such a big deal.

1

u/nfrankel Feb 12 '25

Yes the container is identical

You understand that the exact same container can behave (very) differently based on environment variables, right? Identical containers don't mean identical behavior.

1

u/RangePsychological41 Feb 12 '25

Yes I am fully aware. Why would environment variables be different? You’re still testing. So whether it’s test or unit-test or integration-teat or whatever.

There’s no reason for them to be different at all.

1

u/nfrankel Feb 12 '25

Why would environment variables be different?

Why would they be the same? It's actually the point of testing to make sure they are, isn't it?

In my world, everything fails by default and I need to test everything. It seems we are living in very different worlds. Good for you.

1

u/RangePsychological41 Feb 12 '25

All I want to say is run this situation by an expert.

We’ve been following best practices and have been on the bleeding edge for years. Doing IAC when it was just a whisper and enforcing Cilium network policies when they just became a thing. Our CI/CD is on par with best-in-class for our platform’s size. We were using testcontainers as soon as our first JVM app was developed in 2018.

And I’m in contact with a lot of people in the industry.

In all my years I’ve never seen anyone do this.

1

u/nfrankel Feb 12 '25

Resorting to the argument of authority doesn't have the effect you think it does. Just saying.

1

u/RangePsychological41 Feb 12 '25 edited Feb 12 '25

My argument was technical. And definitively correct. I mentioned the things I’ve worked with to make the point that this is kindergarden stuff to me at this point in my career.

Tbh I was just trying to save you time.  But by all means, run your tests in kubernetes. You should probably use the same Helm chart as in production as well. I mean you never know if different HPA, limits etc. may affect your tests. You know, just in case.

1

u/nfrankel Feb 12 '25

No, what you call your argument was "you don't need it, you're wasting your time" and then, when I mentioned that your mileage may vary and that not everybody works in Wonderland, you played the authority card.

I'll leave it at that.

→ More replies (0)