Xcode集成了对测试的支持,使您能够构建测试包,以支持各种不同方式的开发工作。使用测试,可以发现代码中潜在的回归,并测试预期的成功与否,并验证应用程序的行为。通过确保对象能以预期的方式运行,测试能提高代码的稳定性。
当然,通过测试让程序达到稳定的水平也取决于你写的测试的质量。同样,编写良好测试的难易度也取决于你的编码方式。专为测试设计的代码编写有助于编写良好的测试。阅读下面的指南,以确保你的代码是可测试的,以有效减小编写良好测试的难度。
- 定义API的需求
为添加到项目中的每个方法或者函数定义需求和结果非常重要。对于需求,包括输入和输出范围,exceptions 抛出异常,条件限制,以及返回值的类型(尤其如果值是类的实例时)。定义要求并确保满足代码中的需求可以帮助你编写出健壮的安全的代码。
- 边写边测(Write test cases as you write code)
每当你设计和编写一个方法或函数时,就应该编写一个或多个测试用例来确保API的需求得到满足。记住,为现有代码编写测试要比为你正在编写的代码难得多。
- 检查边界条件
如果对一个方法的参数值必须在特定范围内,你的测试应包括该范围的最低值和最高值。例如,如果一个程序有一个整数参数,那么该参数值的范围要在 0 和 100 之间(包括首尾值),该方法的测试代码应该为参数传递0,50和100这些值。
- 使用negative测试
negative 测试可以确保您的代码能适当地响应出错的条件。当收到无效的或意外的输入值时,它可以验证代码的行为。同样的,还可以验证它返回错误代码或引发异常时的行为。例如,如果一个整数参数范围必须为 0?100(包含首尾值),创建测试用例并传值 -1 和 101,以确保该程序能引发一个异常或返回一个错误代码。
- 编写全面的测试用例
全面的测试通过结合不同的代码模块来实现 API 的一些更复杂的行为。虽然简单,隔离测试提供值,堆叠测试表现复杂的行为,这样能捕获住更多的问题。这些类型的测试在更现实的条件下模拟你的代码的行为。例如,除了将对象添加到数组,你还可以创建数组,为之添加几个对象,使用不同的方法删除若干对象,然后确保集合以及其余对象的数量是正确的。
- 覆盖测试用例的bug修复
每当你修复完一个 bug,都要编写一个或多个测试用例,来验证此次修复的有效性。