测试、调试和异常处理入门
- 7 分钟
每个软件开发人员在开发代码时需要完成某种级别的测试和调试,并且通常需要异常处理。 但是,这三个任务是如何相关的以及何时应实现的?
测试、调试和异常处理
代码调试显然与代码开发和测试相关。 毕竟,在开发应用程序时对代码逻辑进行更正,还定期运行代码,以验证代码语法和逻辑是否正确。 但是,在开发过程中更新代码逻辑是否真的意味着调试? 验证代码生成和运行是否就意味着测试? 不,不是真的。
异常处理与代码开发和测试有何关联? 事实上,“异常处理”的含义是什么,开发人员应该这样做? 在 C# 开发中,应用程序运行时期间发生的错误(与生成过程中发生的生成错误)称为异常,而“异常处理”是开发人员在其代码中用来管理这些运行时异常的过程。
你可能想知道异常处理与代码开发和测试的关系。 事实上,“异常处理”的含义是什么,开发人员应该这样做? 在 C# 开发中,应用程序运行时发生的错误称为异常。 术语“异常处理”是指开发人员用来在其代码中管理这些运行时异常的过程。 生成过程中发生的错误称为错误,不是异常处理过程的一部分。
以下部分介绍开发人员在测试、调试和异常处理中的作用。
软件测试和开发人员职责
软件开发过程可能涉及大量测试。 事实上,软件测试有自己的专业学科,软件测试人员在开发大型应用程序方面发挥了重要作用。 甚至还有一些基于测试的软件开发过程的方法,例如测试驱动开发。
软件测试类别可以按测试 类型 、测试 方法 或两者的组合进行组织。 对测试类型进行分类的一种方法是将测试拆分为 功能 测试和非 功能 测试。 每个函数类别和非功能类别都包含测试的子类别。 例如,功能和非功能测试可以分为以下子类别:
- 功能测试 - 单元测试 - 集成测试 - 系统测试 - 验收测试
- 非功能测试 - 安全测试 - 性能测试 - 可用性测试 - 兼容性测试
尽管大多数开发人员可能不认为自己是测试人员,但在开发人员将工作移交之前,预期会进行某种级别的测试。 开发人员被分配到测试过程中的正式角色时,通常是在单元测试级别。
注释
由于软件测试是一个大主题,并且由于它通常由单独的作业角色执行,因此不会在本模块中讨论软件测试的正式方法。
代码调试和开发人员职责
代码调试是开发人员用来隔离问题并识别一种或多种解决问题的方法的过程。 此问题可能与代码逻辑或异常相关。 不管怎样,当代码无法按所需方式工作时,你都需要调试它。 一般来说,术语“调试”是为不容易隔离的运行时问题保留的。 因此,修复语法问题(如代码语句末尾缺少的“;”)通常不被视为调试。
请考虑以下示例代码:
string[] students = new string[] {"Sophia", "Nicolas", "Zahirah", "Jeong"};
int studentCount = students.Length;
Console.WriteLine("The final name is: " + students[studentCount]);
该代码示例旨在实现以下目的:
- 声明名为
students的字符串数组。 该students数组包含学生的名称。 - 声明一个名为
studentCount的整数。 代码使用Length数组的方法将值赋给studentCount。 - 将最终学生的名称打印到控制台。 代码使用
studentCount来访问students数组中的最终名称,并使用Console.WriteLine()方法将信息打印到控制台。
一目了然,一切都看起来很好。 但是,当尝试将学生名称打印到控制台时,此代码将生成异常。 开发人员忘记数组是从零开始的。 应使用 students[studentCount - 1] 访问数组中的最终名称。
代码调试绝对是开发人员的责任。 在此代码示例中,你可能已立即识别问题。 但是,在更复杂的编码方案中,查找问题并不总是容易。 别担心,有一些工具和方法可用于跟踪难以找到的问题。
异常处理和开发人员职责
如前所述,应用程序运行时期间发生的错误称为异常。 如果应用程序生成异常,并且该异常未在代码中管理,则可能会导致应用程序关闭。
处理异常绝对是开发人员的责任。 C# 提供了一种方法来“尝试”你知道的代码可能会生成异常,并提供了一种方法来“捕获”发生的任何异常。
回顾
在本单元中,应谨记以下几个重要事项:
- 测试、调试和异常处理都是软件开发人员的重要任务。
- 测试可分为功能和非功能测试,开发人员应执行某种级别的测试。
- 代码调试是隔离问题并确定解决问题的方法的过程,也是开发人员的责任。
- 异常处理是管理运行时发生的错误的过程,开发人员负责在其代码中使用“try”和“catch”语句处理异常。