You already know have / has + the past participle (I have finished). For something that started before and is still going on now, use have / has been + the -ing form. It puts the spotlight on how long it has been happening.
have / has been + the -ing form
I have been studying for three hours. (and I'm still studying)
She has been working here since 2020. (and she still works here)
We have been waiting for an hour. (still waiting now)
Try it: I ___ for three hours, and I still haven't finished the chapter. (have been reading / am reading / have read) Answer: have been reading — It started before and is still going on, with how-long in view (three hours), so use have been + the -ing form: have been reading. "Am reading" only says now, not for how long. "Have read" sounds finished, but you're still reading.
the evidence you can see, now
have / has been + the -ing form has a second use: explaining the evidence you can see. The activity has just stopped, but the sign it left is right there in front of you now — that is why you mention it.
I'm tired because I have been running. (I've stopped, but you can see I'm out of breath)
Her eyes are red. She has been crying. (the crying is what you can see now)
The road is wet. It has been raining. (the rain has just stopped, the result is right there)
Not "You look exhausted. What do you do?" — say "You look exhausted. What have you been doing?". When something you see now is the result of a recent activity, use have / has been + the -ing form.
Try it: Your hands are covered in flour and the kitchen is a mess. You ___! (have been baking / are baking / bake) Answer: have been baking — The activity has just stopped, but you can see the result right now (flour on your hands, a messy kitchen), so use have been + the -ing form: have been baking. "Are baking" says it is happening at this moment, and "bake" is a general habit — neither one explains the fresh result you can see.
has been for he, she, it
Use have been with I, you, we, they. Change to has been with he, she, it. The been and the -ing form stay the same.
I have been waiting. / They have been waiting.
He has been waiting. / She has been waiting.
It has been raining all morning.
Not "She have been working all day." — say "She has been working all day.". With he, she, it, use has been, not have been.
Try it: Lars looks exhausted. He ___ since six this morning. (has been driving / have been driving / has been drive) Answer: has been driving — With he, use has been (not have been): he has been driving. And after been comes the -ing form driving, not the plain "drive".
haven't / hasn't been
For the negative, put not on the first word: haven't been or hasn't been + the -ing form. (haven't = have not, hasn't = has not.)
I haven't been sleeping well lately.
He hasn't been feeling great this week.
They haven't been answering their phone.
Try it: He ___ well lately, so he went to see a doctor. (hasn't been sleeping / haven't been sleeping / hasn't been sleep) Answer: hasn't been sleeping — With he, the negative is hasn't been (not haven't been). And after been use the -ing form sleeping, not the plain "sleep": he hasn't been sleeping.
How long have you been ...?
To ask, put have or has first: Have / Has + person + been + the -ing form. To ask about how long, start with How long.
How long have you been waiting?
Has she been working here long?
What have you been doing all afternoon?
Try it: ___ you been waiting long? (Have / Do / Are) Answer: Have — To ask about something going on from before until now, start with Have: Have you been waiting? "Do you been" and "Are you been" are not real forms. This one uses Have + been + the -ing form.
Try it: A verb like finish points to the completed result, not a stretched-out activity. Which is the natural choice here? (She has finished her essay. / She has been finishing her essay. / She has been finish her essay.) Answer: She has finished her essay. — Finish points to the completed result, so the plain past participle fits best: she has finished. "Has been finishing" sounds unnatural here, because finish names a finished result, not a stretched-out activity. "Has been finish" is not a real form. Save have been + -ing for actions you picture still going on, like waiting or working.