PJSSIP is one very good option for end to end testing, it is a very RFC compliant SIP stack, it will fail if anything is wrong and will usually provide verbose logging explaining why it failed.
If you want to integrate such a CLI tool in CI/CD to provide automated end to end tests.
I would recommend looking at
https://github.com/jchavanton/voip_patrol(note that I may not be neutral since I am the author)
This app is based on the higher level library PJSSUA2 and is using XML scenario (a little bit like Freeswitch does) and does provide JSON formatted test results.
A Dockerfile is provided
https://github.com/jchavanton/voip_patrol/tree/master/dockerIf you need to mock broken clients, SIPP will be very handy, since you are mainly forging raw messages.