A domain-specific language for testing programs using Behavior-Driven Development (BDD) process in Haskell