testing approaches