Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

Paolomania posted:

I wish our interviewing practice was more like a pair-programming session where you sit down with some mild refactoring task and get to talk about how to redesign something and reasoning behind various choices. I feel like you get a feeling for not only how much coding experience they have on some particular platform, but how they think and how they communicate.
This is something that works really well. When I interview someone I take a service with a large codebase, introduce a bug that causes a few tests to fail and tell them "please fix and keep talking to me while you work". This helps me get a feel for whether they know what they're doing or if they're just haphazardly clicking through code, not understanding they should probably start looking at the failing test case. Additionally, a lot of their initial stories are going to be of the small "fix this issue" variety and this gauges quite effectively whether they'd be up to it.

Adbot
ADBOT LOVES YOU

Pedestrian Xing
Jul 19, 2007

Sagacity posted:

This is something that works really well. When I interview someone I take a service with a large codebase, introduce a bug that causes a few tests to fail and tell them "please fix and keep talking to me while you work".

I like this. Do you use something proprietary or open source?

Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

Pedestrian Xing posted:

I like this. Do you use something proprietary or open source?
I simply use the codebase of whatever project I'm working on at that point. It's not really under NDA or anything, so that is really easy to set up :)

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Woodsy Owl
Oct 27, 2004
Edit: whoops, moving his to Career Advice thread

Woodsy Owl fucked around with this message at 00:23 on Jan 29, 2021

ChickenWing
Jul 22, 2010

:v:

holy loving poo poo the component I have been designing and working on for the past year just had a successful run with all the moving parts and I am so happy I want to die

thank gently caress I somehow managed to get two mostly-meeting-free days in a row to knock the last kinks out


it is so goddamn cathartic to have been able to spend the last week just crunching to deliver code instead of being mired in infinite meetings and not being able to deliver to any timelines because there are meetings forever oh god make them stop

For real this is like my first tangible achievement since lockdown started and I cannot begin to describe how happy I am right now goddamn

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

ChickenWing posted:

holy loving poo poo the component I have been designing and working on for the past year just had a successful run with all the moving parts and I am so happy I want to die

thank gently caress I somehow managed to get two mostly-meeting-free days in a row to knock the last kinks out


it is so goddamn cathartic to have been able to spend the last week just crunching to deliver code instead of being mired in infinite meetings and not being able to deliver to any timelines because there are meetings forever oh god make them stop

For real this is like my first tangible achievement since lockdown started and I cannot begin to describe how happy I am right now goddamn

I'm celebrating here with you, I'm glad you got to make something good :)

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

CPColin posted:

For my entire career, I've had to grapple with the simultaneous feelings thst I'm both overpaid and underpaid.
Overpaid for the results actually delivered and total time spent doing the low value work necessary to do said deliverables

Underpaid for the bullshit we undergo, the stress, the accountability put onto ourselves to do irresponsible things for the sake of future workers

Fano
Oct 20, 2010
Am I crazy for thinking that end-to-end test suites are just complete horseshit?

In my admittedly short 6 year career I've had to maintain and develop end-to-end tests across a variety of frameworks, and each one just ends up being a stupid section of the codebase that we have to keep maintaining to keep pipelines happy but every time a test fails it's always due to something super finnicky with the automation itself and never because an actual bug was introduced to the application.

I'm spending over half of my development time adding these tests for each of the stories I work on since that's part of our requirements and it honestly just feels like a waste of time.

Unit tests and Integration tests are great for verifying your logic is working but I've never seen an e2e pipeline that didn't have these issues.

This is my first project as a frontend developer (backend is handled by a separate team) and it's honestly been a nightmare, gently caress selenium and cucumber in particular.

Pedestrian Xing
Jul 19, 2007

Fano posted:

I'm spending over half of my development time adding these tests for each of the stories I work on since that's part of our requirements and it honestly just feels like a waste of time.

Unit tests and Integration tests are great for verifying your logic is working but I've never seen an e2e pipeline that didn't have these issues.

This is my first project as a frontend developer (backend is handled by a separate team) and it's honestly been a nightmare, gently caress selenium and cucumber in particular.

Pretty much my experience as well. They're all super fragile since everything is referred to by ID, and the whole suite is incredibly slow because every variable (1200+) is public static so nothing can be run in parallel. Then the idiots that put the whole abomination together get to critique our code whenever we write tests.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Deciding what to test is as important as whether to test at all. Bad tests wind up testing things that are unrelated to your domain or systems, which is where e2e tests tend to be pretty useless. For example, if a machine runs out of disk that doesn't matter except if you're an OS developer or similar. But over in SRE and infrastructure land literally 80%+ of our code is about handling stuff that product / feature engineers don't want to be bothered with (and shouldn't!) because they're all things dealing with computers, not the business domain that delivers the value people want out of the whole project.

However, there's definitely times when my end to end tests have caught changes to things we didn't know we relied upon, and they can be useful for exploring a system and discovering your real requirements because your system wasn't engineered as much as it was evolved organically. For example, a timeout in a transaction across several services wasn't really understood and people didn't realize one day that two services that started taking just a little longer but met their own internal SLAs would result in 500 errors in 3 other services. So we had to add in some new requirements and tests guaranteeing that timeout values in the call graph don't sum beyond the previously-unknown transaction boundary.

I think of e2e tests as crutches for actually knowing and owning the boundaries, failure modes, and interfaces between decoupled systems. Because really testing in production to me is simply observability which should be the same tooling capabilities that development has for simple local programs ideally with debuggers, profilers, etc.

froglet
Nov 12, 2009

You see, the best way to Stop the Boats is a massive swarm of autonomous armed dogs. Strafing a few boats will stop the rest and save many lives in the long term.

You can't make an Omelet without breaking a few eggs. Vote Greens.

Fano posted:

Am I crazy for thinking that end-to-end test suites are just complete horseshit?

In my admittedly short 6 year career I've had to maintain and develop end-to-end tests across a variety of frameworks, and each one just ends up being a stupid section of the codebase that we have to keep maintaining to keep pipelines happy but every time a test fails it's always due to something super finnicky with the automation itself and never because an actual bug was introduced to the application.

I'm spending over half of my development time adding these tests for each of the stories I work on since that's part of our requirements and it honestly just feels like a waste of time.

Unit tests and Integration tests are great for verifying your logic is working but I've never seen an e2e pipeline that didn't have these issues.

This is my first project as a frontend developer (backend is handled by a separate team) and it's honestly been a nightmare, gently caress selenium and cucumber in particular.
No, not crazy. Saying this not as a developer, but as a tester.

My experience so far has been that end to end tests are only useful for a very narrow/stripped back regression test of core functionality to give quick feedback on anything that's been accidentally broken.

Caveat: I've only ever worked at very small companies. I imagine my view would change in a larger organisation, or if I were working on something with substantially more moving parts. So... YMMV.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

froglet posted:

No, not crazy. Saying this not as a developer, but as a tester.

My experience so far has been that end to end tests are only useful for a very narrow/stripped back regression test of core functionality to give quick feedback on anything that's been accidentally broken.

Caveat: I've only ever worked at very small companies. I imagine my view would change in a larger organisation, or if I were working on something with substantially more moving parts. So... YMMV.

No, the problems just get worse at larger companies. Having a small set of end to end tests the validate that the application is deployed and running and can execute a few critical paths (think "search for item, add to cart, go through checkout pipeline" in a store app) is fine. Testing any more complex business logic at that level is an exercise in futility and pain.

Prism Mirror Lens
Oct 9, 2012

~*"The most intelligent and meaning-rich film he could think of was Shaun of the Dead, I don't think either brain is going to absorb anything you post."*~




:chord:
Most end-to-end tests are poorly written reproductions of the unit tests in python :( Thinking of and writing meaningful tests is much harder than writing app code, but most companies treat QA as “developers not good enough to write real code”. They’ll hire for a job which 90% consists of writing difficult code but accept someone who’s barely technical and can’t really grasp the concept of libraries, let alone the kind of stuff necrobobsledder mentioned. And then when the tests do catch things like timing issues, we all shrug and say “prod doesn’t have that issue. Put a delay in.”

I saw the straight up dumbest poo poo with Cucumber/Gherkin. What a doomed idea. All the code problems plus a language barrier.

vonnegutt
Aug 7, 2006
Hobocamp.

New Yorp New Yorp posted:

Having a small set of end to end tests the validate that the application is deployed and running and can execute a few critical paths (think "search for item, add to cart, go through checkout pipeline" in a store app) is fine. Testing any more complex business logic at that level is an exercise in futility and pain.

Came here to say this. I'm all for having a handful of "smoke tests" that check if login is working and maybe some checks to make sure every layer is talking to each other correctly. Although it's frustrating that most of the services rely on super brittle CSS selectors or worse. We're in the middle of a bit of a rewrite currently to make sure some of our core modules are more easily tested by unit tests mainly so we can avoid adding more e2e testing.

I do enjoy using headless browsers to mess around scraping other people's websites. That's just good old fashioned fun.

Xguard86
Nov 22, 2004

"You don't understand his pain. Everywhere he goes he sees women working, wearing pants, speaking in gatherings, voting. Surely they will burn in the white hot flames of Hell"

New Yorp New Yorp posted:

No, the problems just get worse at larger companies. Having a small set of end to end tests the validate that the application is deployed and running and can execute a few critical paths (think "search for item, add to cart, go through checkout pipeline" in a store app) is fine. Testing any more complex business logic at that level is an exercise in futility and pain.

100% it's just worse at scale. Also tends to depreciates the perceived value of all testing in the eyes of some mgmt because they hear eng ignoring breaks.

ChickenWing
Jul 22, 2010

:v:

How do you distinguish e2e tests from automated QA tests? Or is QA automation a pipe dream doomed to be too brittle forever?

HamAdams
Jun 29, 2018

yospos
we have a pretty extensive collection of automated qa tests and its always broken. our testers get so excited whenever the pass rate is over like 60%.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
We have end-to-end tests that pass reliably, to the point we use them to run performance benchmarks on every release.

We're not really testing a whole lot of business logic though - just start the app, go through this flow, did you get to the end without crashing and see everything you expected to see?

It doesn't replace QA.

Eezee
Apr 3, 2011

My double chin turned out to be a huge cyst
We have a ton of Selenium tests for our little web app and I would say at least 50% of failures that they detect are out of my control as a dev.

Since we make software for financial companies our clients like to self-host and someone back in the day made the very smart decision that we should support 3 different JBoss versions (thankfully no more Websphere), and 5 different databases DBs. Something inevitably breaks on some of them. Especially since our test systems don't necessarily use patched versions of JBoss since that would cost money.

We could have avoided a lot of stress by going for Spring and 1 or 2 databases instead.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

HamAdams posted:

we have a pretty extensive collection of automated qa tests and its always broken. our testers get so excited whenever the pass rate is over like 60%.

That upsets me so much. Tests that don't reliably pass are worse than useless because they encourage ignoring failures. Unreliable tests are just as bad as no tests at all.

CPColin
Sep 9, 2003

Big ol' smile.
At a previous job, we had the double-whammy of fragile Selenium tests combined with our team's QA person being the one who would immediately go in and try to fix the failing test, no matter whose team actually caused it (if it was even a real failure). Meanwhile, our team's "In Review" column in JIRA would be beet red with sirens going off, because it was way over the ticket limit.

The number of times we had to gently (or not so gently) prod the QA person to delegate/deflect so we could get anything done, ugh.

Hughlander
May 11, 2005

A key to having End to End automated testing particularly as part of a CI process, is someone has to be responsible for non-deterministic test failures from the infrastructure. If the engineers working on the project see constant failures in code they didn't change it undermines the confidence in the testing.

Canine Blues Arooo
Jan 7, 2008

when you think about it...i'm the first girl you ever spent the night with

Grimey Drawer

ChickenWing posted:

How do you distinguish e2e tests from automated QA tests? Or is QA automation a pipe dream doomed to be too brittle forever?

My entire job is basically trying to answer the question "How do we use software to better improve test". We get an enormous amount of freedom to experiment, and experiment we have.

Here's what I've more or less decided on:

As a product's state is more and more finite, automated tests can cover more of your total test area. Whether or not you can realize returns on that automation vs human effort in a given time span is dependent on the product and processes involved, but even in the most optimistic of scenarios, automated testing is going be unable cover everything. You can definitely reduce the human effort required to complete QA with confidence, but you can't eliminate it. Even in the best of times, it's hard to build rigid, reliable automated tests that aren't exactly unit tests in code (and even that is hardly the Perfect Solution™). Anyone who insists they can remove all human effort from that process is trying to sell you something...

Consider the opposite end of the spectrum of this problem, where possible state approaches infinity. Something like a video game becomes overwhelming to test really quickly without human QA. To this end, the goal we have is not to eliminate people from the process, but instead remove overhead that comes with test. Asking questions like, 'What tooling exposes the most useful data to discover bugs' and 'What is the absolute path of least resistance between bug discovery, entry, and fix verification'? have gone a long way to reducing man hours in test without sacrificing quality. There are pieces of test you can automate, but if you are in game QA Engineering for a game at large scale, and your task is to automate, I'd argue your team is solving the wrong problem.

There is a lot of nuance to this and it depends a lot on the nature of the product. I'd argue strongly that most of the solutions a team develops should be product specific (if scale allows). I also think the way most QA Engineering is done is quite bad, especially in games. I should write a proposal for GDC...

Canine Blues Arooo fucked around with this message at 22:40 on Feb 26, 2021

HamAdams
Jun 29, 2018

yospos

New Yorp New Yorp posted:

That upsets me so much. Tests that don't reliably pass are worse than useless because they encourage ignoring failures. Unreliable tests are just as bad as no tests at all.

totally agree, its been brought up in almost every retro since i started this job but its not something really under our control. our framework is bad enough that id probably look for a new job if i were a tester.

Hughlander
May 11, 2005

CPColin posted:

At a previous job, we had the double-whammy of fragile Selenium tests combined with our team's QA person being the one who would immediately go in and try to fix the failing test, no matter whose team actually caused it (if it was even a real failure). Meanwhile, our team's "In Review" column in JIRA would be beet red with sirens going off, because it was way over the ticket limit.

The number of times we had to gently (or not so gently) prod the QA person to delegate/deflect so we could get anything done, ugh.

I know you mentioned this story before, but for the bolded part, would they go and make the test pass and check it in?

CPColin
Sep 9, 2003

Big ol' smile.
A lot of the tests had Thread.sleep() everywhere, desperately trying to get some asynchronous action to complete before an assertion came along. In these cases, the QA person on my team tended to "solve" the problem by increasing the sleep delay. In other cases, the problem was because somebody changed the HTML and nobody updated the tests to match (or ran them to realize they needed to). For some reason, instead of instantly bouncing a ticket to the team that caused the problem, our QA person would dig deep into it, trying to figure out what went wrong. The worst, though, were when somebody went, "Oh, whoops, I forgot a database update! Hang on." in chat, but our QA person was already too deep in Thread.sleeps() to notice.

A lot of the problem was the weird siloing of responsibility; the designer doing the HTML and CSS and the developer doing the backend functionality had explicit permission to leave the testing to the QA person on their team, so there was no shared ownership of the testing code. When the QA person on our team, who actually was the person tasked with improving the overall reliability of the testing, I held up the meeting where they were announcing their departure by insisting that test code had to become a joint effort that the rest of us couldn't just brush off onto QA any more.

I got fired like two weeks later, lol

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Pentagon Wars - Bradley Fighting Vehicle Evolution

smackfu
Jun 7, 2004

BTW What’s the rest of that movie about? It seems like the 10 minute clip covers the subject pretty well.

Gildiss
Aug 24, 2010

Grimey Drawer

smackfu posted:

BTW What’s the rest of that movie about? It seems like the 10 minute clip covers the subject pretty well.

Discovering the full extent of the Bradley's flaws and getting it live fire tested and embarrassing the general responsible in front of a congressional hearing.

But the general and his cronies still get promoted and the guy trying to uncover the corruption just forced to retire.

Can't beat the system from within.

froglet
Nov 12, 2009

You see, the best way to Stop the Boats is a massive swarm of autonomous armed dogs. Strafing a few boats will stop the rest and save many lives in the long term.

You can't make an Omelet without breaking a few eggs. Vote Greens.

Canine Blues Arooo posted:

My entire job is basically trying to answer the question "How do we use software to better improve test". We get an enormous amount of freedom to experiment, and experiment we have.

Here's what I've more or less decided on:

As a product's state is more and more finite, automated tests can cover more of your total test area. Whether or not you can realize returns on that automation vs human effort in a given time span is dependent on the product and processes involved, but even in the most optimistic of scenarios, automated testing is going be unable cover everything. You can definitely reduce the human effort required to complete QA with confidence, but you can't eliminate it. Even in the best of times, it's hard to build rigid, reliable automated tests that aren't exactly unit tests in code (and even that is hardly the Perfect Solution™). Anyone who insists they can remove all human effort from that process is trying to sell you something...

Consider the opposite end of the spectrum of this problem, where possible state approaches infinity. Something like a video game becomes overwhelming to test really quickly without human QA. To this end, the goal we have is not to eliminate people from the process, but instead remove overhead that comes with test. Asking questions like, 'What tooling exposes the most useful data to discover bugs' and 'What is the absolute path of least resistance between bug discovery, entry, and fix verification'? have gone a long way to reducing man hours in test without sacrificing quality. There are pieces of test you can automate, but if you are in game QA Engineering for a game at large scale, and your task is to automate, I'd argue your team is solving the wrong problem.

There is a lot of nuance to this and it depends a lot on the nature of the product. I'd argue strongly that most of the solutions a team develops should be product specific (if scale allows). I also think the way most QA Engineering is done is quite bad, especially in games. I should write a proposal for GDC...

This is a great philosophy, particularly the bits in bold (even in non-game applications).

When I'm asked about test automation, my question is always 'is your software going to be used by machines, or by people?'. An automated test is great for ensuring certain bases are covered, but it's harder for them to determine quality.

In my case, I work in a very small company, and I'm not a particularly good developer (as in, I am a manual tester who happens to know enough to cobble together tests from a pattern taken from the internet), and sometimes the problems I ran into I wasn't sure if it was just that I wasn't particularly good at C#/Selenium, or if they were a problem that needed to be handed onto someone else. E.g. The steps worked fine manually, but the automated test was not moving from Step 4 to Step 5 and I lacked the skill or experience to work out if I needed to Thread.sleep() my way out of it, or if a developer could do something to get me past the issue.

smackfu
Jun 7, 2004

Best case end-to-end tests I’ve worked with was on an old school monolith app that did everything itself except using an external database and mail server. In the E2E tests, it would spin up an empty database, load fresh data into it, and then run completely independent test runs, resetting the database between each. There was also the team expectation that every commit had the appropriate tests updated, and all the tests ran at push time and you had to fix them if you broke them.

And it still sucked because the tests were fragile and took twenty minutes to run.

Bongo Bill
Jan 17, 2012

Writing e2e tests that aren't super brittle and unreliable is very difficult, and it's also difficult to learn the general principles and to gain practice writing them, and I'm not aware of any substantial literature on the subject either. On top of that, the tools tend to be either very verbose or very glib, or somehow both, which will make you want to design and write extensive page objects, which is challenging in its own right and not the sort of thing you want to be busy with while you're learning the thing your bespoke library wraps. They're always going to be slow, and you're always going to have to deal with complicated data setup and cleanup.

However, they can give you the most certainty you can attain (from an automated process) about whether all the different components of your application are actually doing what you intended. And at the end of the day, it's only a pretty ordinary kind of difficult.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

Bongo Bill posted:

However, they can give you the most certainty you can attain (from an automated process) about whether all the different components of your application are actually doing what you intended. And at the end of the day, it's only a pretty ordinary kind of difficult.
Ehhhhhhh? I think this is true for applications that are extremely linear. Like, if you have a very specific conversion funnel, and you want to test that a single session along the happy path can complete all the steps in the funnel, the end-to-end test is precisely what you want. But as the number of potential combinations of application state grows, as your number of external dependencies multiply, or as you become increasingly concerned with testing the robustness of your failure scenarios instead of your happy path, end-to-end tests become increasingly expensive to run.

E2E will also stress test unhappy paths in the precise ways you don't want: by surfacing transient failures in ways that prevent you from using measures like "build is yellow" as a useful status indicator.

Ither
Jan 30, 2010

How do you deal with a bad new job?

A couple of months ago, I left a low paying but chill job for a six figure position. The money is great, but everything else is terrible.

For instance:

1) I'm stuck in meetings (stand ups and other ceremonies) from 9 to 12.

2) I'm new, so I can't really do anything on my own yet. But when I try to ask questions, they are either too busy or just straight up ignore me.

I'm thinking about starting the job hunt again, but should I give it more time?

AskYourself
May 23, 2005
Donut is for Homer as Asking yourself is to ...
Are you stuck in meeting 3 hours every day of the week or Is it only for start and end of spring ceremonies ? 3 hours of meeting everyday seem way overkill for an individual contributor...

Is there a sandbox environment where you can fudge around ? Did your boss give you some objectives ?

Ither
Jan 30, 2010

I've been put on multiple projects, each with their own standup and ceremonies. This adds up to my morning calendar being booked pretty much everyday.

I do have a local environment, but the code is opaque. It's hard for me, as a beginner, to make heads or tails of it on my own.

I guess objective is to get my tickets done.

Pile Of Garbage
May 28, 2007



Ither posted:

2) I'm new, so I can't really do anything on my own yet. But when I try to ask questions, they are either too busy or just straight up ignore me.

IMO this is a huge red flag and reason enough to :sever: as soon as possible. If people aren't helping you because they don't have the time then management has failed, deliberately or otherwise, to allow for on-boarding and assisting new hires (This may have something to do with the extreme amount of meetings you mentioned). If people aren't helping because it's the culture then yikes.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Three hours of meetings every day is a management failure.

Adbot
ADBOT LOVES YOU

CPColin
Sep 9, 2003

Big ol' smile.

Ither posted:

I'm thinking about starting the job hunt again, but should I give it more time?

My vote is to go ahead and start looking. If the current job unfucks itself while you're looking, bonus.

I emerged from seven months of unemployment with a job that did similar things to what you're describing. It was just starting a switch to Scrum, so the first week was all-day Scrum training. The instructor basically said, "It doesn't sound like this is compatible with your organization." but management had sunk the cost and pressed onward. Each of us was siloed in our assigned projects with no collaboration, so all the planning meetings were pretty tiresome and useless. I'd ask things of my coworkers like, "What package should this class go in?" and get a meeting invitation for the next morning to talk about it.

I started looking again after a month and took my current job three months after that. Current job isn't a ton better, since I'm the only developer, but at least I'm calling the shots now and don't have to sit through sprint planning!

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply