第三章:详细介绍遗传算法理论和方法概念,系统介绍遗传算法的整体结构和优点。
第四章:详细介绍基于遗传算法测试用例生成技术,详细说明一些基本概念和具体实现过程,最后通过三角形问题模型对实验的可行性做出说明。
结论:总结本文所做的工作、研究的内容和结论。
致谢:对于为本文工作做出帮助的老师同学和朋友提出致谢。
论文最后附参考文献。
2. 软件测试及测试用例自动生成
软件测试的定义为:“通过有方向性的运行某个软件系统,对其进行测定,以检验被测软件是否满足需求。对比预期结果和实际结果的异同,确定软件系统的质量。”
Grenford. J. Myers在其著作《The Art Of Software Testing》[9]中指出软件测试的目的,其中有三个中心思想:
软件测试是程序的执行阶段,其直接目标是发现程序中存在的bug;
一个好的测试用例的意义在于,它很可能找到目前未发现过的错误;
一个成功的测试是指防患于未然,在发生错误前发现可能存在的错误。
然而随着被测程序规模的扩大,完全检测出所有错误是不可能的,这就需要我们用尽可能少的资源耗费发现尽可能多的、最可能出现的错误。虽则没有发现缺陷或错误也并不意着被测软件就是完善无误的,但是,软件测试确实可以提高被测软件的可信度。
根据IEEE标准,测试用例是“一个指定的文件输入,预期结果,以及一组被测系统的执行条件”。由此可见,测试用例有三个必需的元素:测试输入,也被称为测试数据,预期结果和执行的条件。它同时也明确了测试数据和测试用例之间的差异。
2.1 软件测试
2.1.1 软件测试原则
软件测试在执行过程中必须遵守一定的准则,以确保测试的质量。软件测试一般必须遵守的原则有以下几点:
应防微杜渐,尽早且不断地进行软件测试。
由于本人对于自己程序常存在一些盲目的自信,应尽量避免程序员本人检查自己的程序,亦即最好有专业的测试人员进行测试。
测试用例的设计要尽可能去覆盖所有可能的路径。
充分注意测试中的群集现象——软件测试中一个功能部件已发现的缺陷越多,那么就越有可能性找到它内部其它更多未发现的缺陷。
制定测试计划并严格执行,尽可能排除测试的随意性。
妥善保存测试计划、测试用例、出错统计和最终分析结果报告,以提供文护信息。
2.1.2 软件测试方法
软件测试方法常被分为静态分析和动态测试[10]。
静态分析不执行被测软件,而是由测试者逐句阅读并理解被测软件源代码的逻辑结构并对其分析以检查出缺陷和错误,所以该方法高度依赖于有经验的测试者,效率不高,而且会消耗较多的人力和时间。
然而一般所说的软件测试指动态测试。动态测试是指通过运行被测程序,对比运行结果与预期结果的差异,以找出软件中的缺陷和错误。动态测试分为黑盒测试和白盒测试两种[11]。黑盒测试又称功能测试,它把程序看做一个整体,检测每个功能是否都能正常使用,不需要考虑程序内部结构和内在逻辑。黑盒测试重点检测程序外部结构,而忽略内部逻辑结构,主要用以测试软件界面和功能。
白盒测试又称逻辑覆盖测试,该方法深入程序的内部结构,分析程序的逻辑结构,按照程序内部的结构测试程序,检测是否能够覆盖程序中的每条路径,而不需要考虑各条路径的具体功能。相对而言,白盒测试的应用范围更加广泛,本文考虑的也是白盒测试的测试数据生成问题。 基于遗传算法的测试用例自动生成技术研究(3):http://www.youerw.com/jisuanji/lunwen_19222.html