编程基础
概述
软件测试涉及执行软件组件或系统组件,以评估一个或多个相关属性。通常,这些属性表示待测试的组件或系统在以下方面的表现:[1]
- 是否满足指导其设计和开发的需求
- 是否对各种输入做出正确响应
- 是否在可接受的时间内执行其功能
- 是否足够易用
- 是否可以在预期的环境中安装和运行
- 是否达到了其利益相关者期望的总体结果
讨论
测试数据由用户提供一些输入值并预测输出值。对于一个简单的程序,这可以非常容易,测试数据可以使用两次:
- 检查模型是否生成正确的结果(模型检查)
- 检查编写的程序是否生成正确的结果(代码检查)
测试数据是通过使用程序的算法开发的。该算法通常在程序设计过程中使用流程图或伪代码进行文档记录。以下是描述一个用于计算小时工工资的程序的输入、处理和输出的伪代码大纲。
使用IPO大纲计算总工资的伪代码
输入
- 显示消息,询问用户输入工作小时数
- 从键盘获取工作小时数
- 显示消息,询问用户输入时薪
- 从键盘获取时薪
处理
- 通过以下方式计算总工资:
- 将工作小时数乘以时薪
输出
- 在显示器上显示总工资
- 暂停,便于用户查看答案
创建测试数据和模型检查
测试数据用于验证输入、处理和输出是否正常工作。最初开发测试数据时,可以验证文档化的算法(如我们在示例中使用的伪代码)是否正确。它帮助我们理解甚至可视化程序的输入、处理和输出。
输入: 我本周工作了37.5小时,时薪是每小时$15.50。我们应验证伪代码是否在询问用户输入这些数据。
处理: 使用我那款太阳能手持计算器,我可以计算总工资:37.5 * 15.50,结果是$581.25。我们应验证伪代码是否执行了正确的计算。
输出: 只有重要信息(总工资)会显示给用户看。我们应验证是否正确显示了相应的信息。
测试已编写的程序——代码检查
测试数据可以在程序设计阶段开发并用于测试已文档化的算法(在我们例子中的伪代码)。当程序编码完成并解决了编译器和链接器的错误后,程序员应该像用户一样进行测试,使用开发的测试数据来测试程序。当你运行程序时,如何知道它是否正常工作?你是否正确规划了逻辑以实现目标?即使你的规划是正确的,是否正确地将其转化为所选编程语言的代码?所有这些问题的答案(或解决方案)就是我们的测试数据。
通过开发测试数据,我们预测结果应该是什么,从而可以验证程序是否正常工作。当我们运行程序时,输入我们在测试数据中使用的输入值。希望程序会输出预测的值。如果没有,那么我们的问题可能是以下之一:
- 计划(IPO大纲或其他项目)可能是错误的
- 计划转换为代码时可能出错
- 测试数据结果可能计算错误
解决这种性质的问题可能是程序员遇到的最困难的问题。你必须回顾上述每一个部分,找出错误所在。修正错误并重新测试程序。
关键术语
- 代码检查:使用测试数据检查特定语言(如C++)中的已编写程序。
- 模型检查:使用测试数据检查设计模型(通常在伪代码中完成)。
参考文献
- cnx.org: Programming Fundamentals – A Modular Structured Approach using C++
- Wikipedia: Software testing