5.4.5.1功能测试
功能测试是对软件需求规格说明中的功能需求逐项进行的测试，以验证其功能是否满足要求。功能测试一般需进行：
1. 每一个软件功能应至少被一个测试用例和一个被认可的异常所覆盖，对大的功能应进一步分解为更细的功能，使测试用例可以直接和功能对应：
2. 用基本数据类型和数据值测试：
3. 用一系列合理的数据类型和数据值运行，测试超负荷、饱和及其它“最坏情况”的结果；
4. 用假想的数据类型和数据值运行，测试排斥不规则输入的能力；
5. 每个功能的合法边界值和非法边界值都应被作为测试用例；
6. 应考虑软件功能对操作模式、运行环境、运行状态、状态转换、运行时间等的覆盖要求；
7. 对于在需求规格说明中没有指明，而在用户使用手册、操作手册中表明出来的每一功能及操作，都应有相应测试用例覆盖。

5.4.5.2性能测试
性能测试是对软件需求规格说明中的性能需求逐项进行的测试，以验证其性能是否满足要求。性能测试一般需进行：
1. 测试程序在获得定量结果时程序计算的精确性(处理精度. ;
2. 测试程序在有速度要求时完成功能的时间(响应时间. ;
3. 测试程序完成功能所能处理的数据量；
4. 测试程序各部分的协调性，如高速、低速操作的协调：
5. 测试软/硬件中因素是否限制了程序的性能；
6. 测试程序的负载潜力；
7. 测试程序运行占用的空间。

5.4.5.3外部接口测试
外部接口测试是对软件需求规格说明中的外部接口需求逐项进行的测试。外部接口测试一般需进行：
1. 测试所有外部接口，检查接口信息的格式及内容；
2. 对每一个外部的输入/输出接口做正常和异常情况的测试。

5.4.5.4人机交互界面测试
人机交互界面测试是对所有人机交互界面提供的操作和显示界面进行的测试，以检验是否满足用户的要求。人机交互界面测试一般需进行：
1. 测试操作和显示界面及界面风格与软件需求规格说明中要求的一致性和符合性：
2. 以非常规操作、误操作、快速操作来检验界面的健壮性；
3. 测试对错误命令或非法数据输入的检测能力与提示情况；
4. 测试对错误操作流程的检测与提示：
5. 如果有用户手册或操作手册，应对照手册逐条进行操作和观察。

5.4.5.5强度测试
强度测试是强制软件运行在不正常到发生故障的情况下(设计的极限状态到超出极限. ,检验软件可以运行到何种程度的测试。强度测试一般需进行：
1. 性能的强度测试；
2. 降级能力的强度测试；
3. 系统健壮性测试；
4. 系统饱和测试。
强度测试在某种程度上可看作性能测试的延伸，测出软件功能、性能的实际极限。其详细要求可参见附录B“强度测试”。

5.4.5.6余量测试
余量测试是对软件是否达到需求规格说明中要求的余量的测试。若无明确要求时，一般至少留有20%的余量。根据测试要求，余量测试一般需提供：
1. 全部存储量的余量；
2. 输入、输出及通道的余量；
3. 功能处理时间的余量。

5.4.5.7可靠性测试
可靠性测试是在真实的和仿真的环境中，为做出软件可靠性估计而对软件进行的功能测试(其输入覆盖和环境覆盖一般大于普通的功能测试. ,可靠性测试中必须按照运行剖面和使用的概率分布随机地选择测试用例。可靠性测试一般需：
1. 测试环境应与典型使用环境的统计特性相一致，必要时使用测试平台；
2. 定义软件失效等级；
3. 建立软件运行剖面/操作剖面；
4. 测试记录更为详细、准确，应记录失效现象和时间；
5. 必须保证输入覆盖，应覆盖重要的输入变量值、各种使用功能、相关输入变量可能组合以及不合法输入域等；
6. 对于可能导致软件运行方式改变的一些边界条件和环境条件，必须进行针对性测试。
有关可靠性测试的详细要求参见附录C“可靠性测试”。

5.4.5.8安全性测试
A、B、C级软件需要进行安全性测试。安全性测试是检验软件中已存在的安全性、安
全保密性措施是否有效的测试。安全性测试一般：
1. 应进行软件安全性分析，并且在软件需求中明确每一个危险状态及导致危险的可能原因，在测试中全面检验软件在这些危险状态下的反应；
2. 对安全性关键的软件部件，应单独测试，以确认该软件部件满足安全性需求：
3. 对软件设计中用于提高安全性的结构、算法、容错、冗余、中断处理等方案应进行针对性测试；
4. 测试应尽可能在符合实际使用的条件下进行；
5. 除在正常条件下测试外，应在异常条件下测试软件，以表明不会因可能的单个或多个输入错误而导致不安全状态；
6. 应包含硬件及软件输入故障模式测试：
7. 应包含边界、界外及边界接合部的测试；
8. 应包括“0”、穿越“0”以及从两个方向趋近于“0”的输入值；
9. 应包含在最坏情况配置下的最小和最大输入数据率，以确定系统的固有能力及对这些环境的反应；
10. 操作员接口测试应包括在安全性关键操作中的操作员错误，以验证安全系统对这些错误的响应；
11. 应测试双工切换、多机替换的正确性和连续性；
12. 应测试防止非法进入系统并保护系统数据完整性的能力。

5.4.5.9恢复性测试
恢复性测试是对有恢复或重置(reset. 功能的软件的每一类导致恢复或重置的情况，逐一进行的测试，以验证其恢复或重置功能。恢复性测试是要证实在克服硬件故障后，系统能否正常地继续进行工作，且不对系统造成任何损害。恢复性测试一般需进行：
1. 探测错误功能的测试；
2. 能否切换或自动启动备用硬件的测试；
3. 在故障发生时能否保护正在运行的作业和系统状态的测试；
4. 在系统恢复后，能否从最后记录下来的无错误状态开始继续执行作业的测试。

5.4.5.10边界测试
边界测试是对软件处在边界或端点情况下运行状态的测试。边界测试一般需进行：
1. 软件的输入域或输出域的边界或端点的测试；
2. 状态转换的边界或端点的测试；
3. 功能界限的边界或端点的测试；
4. 性能界限的边界或端点的测试；
5. 容量界限的边界或端点的测试。

5.4.5.11安装性测试
安装性测试是对安装过程是否符合安装规程的测试，以发现安装过程中的错误。安装性测试一般需进行：
1. 不同配置下的安装和卸载测试；
2. 安装规程的正确性的测试。

5.4.5.12互操作性测试
互操作性测试是为验证不同软件之间的互操作能力而进行的测试。互操作性测试一般：
1. 必须同时运行两个或多个不同的软件；
2. 软件之间发生互操作。

5.4.5.13敏感性测试
敏感性测试是为发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试。敏感性测试一般需进行：
1. 发现有效输入类中可能引起某种不稳定性的数据组合的测试；
2. 发现有效输入类中可能引起某种不正常处理的数据组合的测试。

5.4.5.14测试充分性要求
1. 对软件需求规格说明中明确和隐含的需求(包括功能、性能、接口、质量要求等. 的覆盖率应达到100%;
2. 配置项测试应使用与软件开发相同的编译器，全面覆盖软件需求说明文档中的所有要求。
3. 对于A、B级嵌入式软件，对配置项源程序测试的语句、分支覆盖率均应达到100%。对用高级语言编制的A、B级嵌入式软件，应对配置项目标码进行结构分析和测试，测试的目标码语句、分支覆盖率均应达到100%。对覆盖率达不到要求的软件，应对未覆盖的部分逐一进行分析和确认，并提供分析报告。

