2007-12-14 11:18:00 thinker_csai 阅读数 1172
  • 微信公众平台模板消息开发-微信开发14(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 右侧可办理会员卡。微信公众平台模板消息开发是子恒老师《子恒说微信开发》视频教程的第14部。详细讲解了用php开发微信公众平台模板消息。内容包含设置模板所属行业,获取微信模板ID,用公众号发送微信模板消息等等。欢迎反馈,微信号:QQ68183131

    3678 人正在学习 去看看 秦子恒
 单元测试指导  (为thinker_csai本人2001年所做,字字原创)

一、单元测试环境配置测试
1. 网络连接是否正常
2. 网络流量负担是否过重
3. 软件测试平台是否可选
4. 如果(3),是否在不同的软件测试平台进行软件测试
5. 所选软件测试平台的版本(包括Service Pack)是否正确
6. 所选软件测试平台的参数设置是否正确
7. 所选软件测试平台上正在运行的其它程序是否会影响测试结果
8. 画面的分辨率和色彩设定是否正确
9. 对硬件测试平台的要求和支持程度

二、代码测试
A 静态测试
1. 同一程序内的代码书写是否为同一风格
2. 代码布局是否合理、美观
3. 程序中函数、子程序块分界是否明显
4. 注释是否符合既定格式
5. 注释是否正确反映代码的功能
6. 变量定义是否正确(长度、类型、存储类型)
7. 子程序(函数和方法)接受的参数类型、大小、次序是否和调用模块相匹配合
8. 函数的返回值类型是否正确
9. 程序中是否引用了未初始化变量
10. 数组和字符串的下标是否为整数
11. 数组和字符串的下标是否在范围内(不“越界”)
12. 进行数组的检索及其它操作中,是否会出现“漏掉一个这种情况”
13. 是否在应该使用常量的地方使用了变量(例:数组范围检查)
14. 是否为变量赋予不同类型的值
15. (14)的情况下,赋值是否符合数据类型的转换规则
16. 变量的命名是否相似
17. 是否存在声明过,但从未引用或者只引用过一次的变量
18. 在特定模块中所有的变量是否都显式声明过
19. 非(18)的情况下,是否可以理解为该变量具有更高的共享级别
20. 是否为引用的指针分配内存
21. 数据结构在函数和子程序中的引用是否明确定义了其结构
22. 计算中是否使用了不同数据类型的变量
23. 计算中是否使用了不同的数据类型相同但长度不同的变量
24. 赋值的目的变量是否小于赋值表达式的值
25. 数值计算是否会出现溢出(向上)的情况
26. 数值计算是否会出现溢出(向下)的情况
27. 除数是否可能为零
28. 某些计算是否会丢失计算精度
29. 变量的值是否超过有意义的值
30. 计算式的求值的顺序是否容易让人感到混乱
31. 比较是否正确
32. 是否存在分数和浮点数的比较
33. 如果(32),精度问题是否会影响比较
34. 每一个逻辑表达式是否都得到了正确表达
35. 逻辑表达式的操作数是否均为逻辑值
36. 程序中的Begin…End和Do…While等语句中,End是否对应
37. 程序、模块、子程序和循环是否能够终止
38. 是否存在永不执行的循环
39. 是否存在多循环一次或少循环一次的情况
40. 循环变量是否在循环内被错误地修改
41. 多分支选择中,索引变量是否能超过可能的分支数
42. 如果(41),该情况是否能够得到正确处理
43. 全局变量定义和用法在各个模块中是否一致
44. 是否修改了只作为输入用的参数
45. 常量是否被作为形式参数进行传递

B 动态测试
1. 测试数据是否具有一定的代表性
2. 测试数据是否包含测试所用的各个等价类(边界条件、次边界条件、空白、无效)
3. 是否可能从客户那边得到测试数据
4. 非(3)的情况下,所用的测试数据是否具有实际的意义(客户业务上的)
5. 是否每一组测试数据都得到了执行
6. 每一组测试数据的测试结果是否与预期结果一致
7. 文件的属性是否正确
8. 打开文件语句是否正确
9. 输入/输出语句是否与格式说明书所记述的一致
10. 缓冲区大小与记录长度是否匹配
11. 使用文件前是否已打开了文件
12. 文件结束条件是否存在
13. 产生输入/输出错误时,系统是否进行检测并处理
14. 输出信息中是否存在文字书写错误和语法错误
15. 数字输入框是否接受数字输入
16. (15)的情况下、数字是否按既定格式显示
17. 数字输入框是否拒绝字符串和“非法”数字的输入
18. 组合框是否的能够进行下拉选择
19. 组合框是否能够进行下拉多项选择
20. 对于可添加数据组合框,添加数据后数据是否能够得到正确显示和进行选择
21. 列表框是否能够进行选择
22. 多项列表框是否能够进行多数据项选择
23. 日期输入框是否接受正确的日期输入
24. 日期输入框是否拒绝错误的日期输入
25. 日期输入框在日期输入后是否按既定的日期格式显示日期
26. 单选组内是否有且只有一个单选钮可选
27. 如果单选组内无单选钮可选,这种情况是否允许存在
28. 复选框组内是否允许多个复选框(包括全部可选)可选
29. 如果复选框组内无复选框可选,这种情况是否允许存在
30. 文本框及某些控件拒绝输入和选择时显示区域是否变灰或按既定规约处理
31. 文本框中数据格式(大小、对齐方向、颜色、背景)是否符合规范
32. 密码输入框是否按掩码的方式显示
33. 控件是否存在默认输入值,若存在,默认值是否得到显示和提交
34. Cancel之类的按钮按下后,控件中的数据是否清空复原或按既定规约处理
35. Submit之类的按钮按下后,数据是否得到提交或按既定规约处理
36. 异常信息表述是否正确
37. 软件是否按预期方式处理错误
38. 文件或外设不存在的情况下是否存在相应的错误处理
39. 软件是否严格的遵循外设的读写格式
40. 产生的文件和数据表的格式是否正确
41. 产生的文件和数据表的计算结果是否正确
42. 打印的报表是否符合既定的格式
43. 错误日志的表述是否正确
44. 错误日志的格式是否正确

C GUI测试
1. 窗体是否能够基于相关的输入或菜单命令适当的打开
2. 窗体是否能够改变大小、移动和滚动
3. 窗体的数据是否能够利用鼠标、功能键、方向箭头和键盘操作
4. 当窗体被覆盖并重新调用后,窗体是否能够正确再生
5. 窗体相关的功能是否可以操作
6. 是否显示相关的下拉菜单、工具条、滚动条、对话框、按钮、图标和其他控制,既能正确显示又能调用
7. 显示多窗体时,窗体名称是否能够正确表示
8. 活动窗体是否能够被反显加亮
9. 多用户联机时所有窗体是否能够实时更新
10. 鼠标无规则点击时是否会产生无法预料的结果
11. 窗体声音及提示是否符合既定编程规则
12. 窗体是否能够被关闭
13. 窗体控件的大小、对齐方向、颜色、背景等属性的设置值是否和程序设计规约相一致
14. 窗体控件布局是否合理、美观
15. 窗体控件TAB顺序是否从左到右,从上到下
16. 窗体焦点是否按照编程规范落在既定的控件上
17. 窗体画面文字(全、半角、格式、拼写)是否正确
18. 鼠标有多个形状时是否能够被窗体识别(如漏斗状时窗体不接受输入)
2010-03-09 19:24:55 weixin_34310369 阅读数 20
  • 微信公众平台模板消息开发-微信开发14(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 右侧可办理会员卡。微信公众平台模板消息开发是子恒老师《子恒说微信开发》视频教程的第14部。详细讲解了用php开发微信公众平台模板消息。内容包含设置模板所属行业,获取微信模板ID,用公众号发送微信模板消息等等。欢迎反馈,微信号:QQ68183131

    3678 人正在学习 去看看 秦子恒
单元测试模板<?xml:namespace prefix = o />

单元测试又称为模块测试,主要步骤为程序语法检查和程序逻辑检查等。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

供参考单元测试模板如表所示。
 

    以上内容均出自机械工业出版社出版的《软件测试实用技术与使用模板》一书

2008-06-04 15:55:00 xu_zh_h 阅读数 3199
  • 微信公众平台模板消息开发-微信开发14(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 右侧可办理会员卡。微信公众平台模板消息开发是子恒老师《子恒说微信开发》视频教程的第14部。详细讲解了用php开发微信公众平台模板消息。内容包含设置模板所属行业,获取微信模板ID,用公众号发送微信模板消息等等。欢迎反馈,微信号:QQ68183131

    3678 人正在学习 去看看 秦子恒

集成测试计划模板

集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别。

      集成测试是在单元测试的基础上,测试在将所有的 软件 单元按照概要设计规格说明的要求组装成模块、 子系统 或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的 对象 应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。

      集成测试是单元测试的逻辑扩展。在现实方案中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分,如分系统或系统。集成测 试采用的方法是测试软件单元的组合能否正常工作,以及与其他组的模块能否集成起来工作。最后,还要测试构成系统的所有模块组合能否正常工作。集成测试所持 的主要标准是《软件概要设计规格说明》,任何不符合该说明的程序模块行为都应该加以记载并上报。

     集成测试不同与系统测试,主要表现在测试内容上不同,不同的根源是集成测试是针对概要设计,而概要设计主要描述系统接口,技术架构,业务和用户功能要求,所以从测试内容对概要测试计划进行描述,

    

 

2.2 功能表现

1页

1页

测试需求

测试过程说明

过程

功能点

根据用户文档列出所有功能点,检验其正确性

F-01  

验证程序与产品描述、用户文档中的全部说明相对应,一致性

F-02  

       

 

 

 

 

2.3 接口

1页

1页

测试需求

测试过程说明

过程

接口

根据用户文档列出所有功能点,检验其正确性

F-03  

接口提供的功能或者数据正确

F-04  

       

 

2.3 接口

1页

1页

测试需求

测试过程说明

过程

流程处理

根据用户文档列出所有功能点,检验其正确性

F-05  

验证程序与产品描述、用户文档中的全部说明相对应,一致性

F-06  

       

 

2.3 接口

1页

1页

测试需求

测试过程说明

过程

外部接口

根据用户文档列出所有功能点,检验其正确性

F-07  

验证程序与产品描述、用户文档中的全部说明相对应,一致性

F-08  

       

 

集成测试计划其他部分参考系统测试计划

2009-12-15 10:38:00 a332897696 阅读数 1785
  • 微信公众平台模板消息开发-微信开发14(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 右侧可办理会员卡。微信公众平台模板消息开发是子恒老师《子恒说微信开发》视频教程的第14部。详细讲解了用php开发微信公众平台模板消息。内容包含设置模板所属行业,获取微信模板ID,用公众号发送微信模板消息等等。欢迎反馈,微信号:QQ68183131

    3678 人正在学习 去看看 秦子恒

  对嵌入式系统软件进行测试是一项很有挑战性的工作。因为嵌入式系统的软件开发平台和最终运行平台是完全不一样的两个平台,开发者不可能在其运行平台上像在桌面环境那样执行测试程序。这些差异可以表现在这几个方面。在软件开发的时候目标硬件平台可能还没有准备好,软件工程师在访问硬件时可能会很麻烦,在开发环境下模拟整个系统存在困难性等。

  本文阐述了单元测试在嵌入式系统软件开发过程中的作用以及其如何帮助开发者解决上述问题。简要地讲,它提升了桩函数在宿主环境下或者仿真器中的作用。这使软件工程师在代码编写完毕之后就可以立即对其进行验证,即使此时目标硬件系统还没有准备好或暂时不能进行测试。这样,绝大部分的潜藏在程序中的逻辑问题都能够在早期被发现,软件工程师就可以迅捷地修复这些问题,而目标平台上的测试就可以注重于检测软硬件接口方面的问题。

  为何要对嵌入式系统软件进行单元测试?

  单元测试是检查嵌入式系统软件缺陷的最有效的一种方法,更确切而言也即在宿主机环境下或在仿真器上进行的API测试。这能使测试尽早开始并且最大程度地降低了测试工作对目标硬件平台的依赖性。嵌入式系统软件的单元测试的一个前提是能够让软件独立于硬件进行测试,这是由桩函数对目标硬件平台的模拟而实现的。在这种情况下,代码的绝大多数功能性测试都能够独立于目标硬件系统进行测试。这对嵌入式系统开发者而言有以下主要好处。

  1. 单元测试能让开发者在目标硬件平台准备好之前就开始测试周期,开发者可以直接在宿主开发环境下开始初始测试(而不需要目标硬件平台)。早期测试能够为开发团队发现并修复缺陷提供尽可能充足的时间。此外,早期测试还能将测试工作较平均地分配于产品开发的各个阶段中,从而避免将所有的测试工作留到产品发布之前才进行,为开发团队争取了充足的时间。

  2. 单元测试采取一种“各个击破”的策略,允许用户将复杂的系统分为相对较简单的准独立系统进行测试。测试工具能够管理模块之间的关联性并使用桩函数来模拟这些模块的行为。

  

  图1:使用桩函数,开发者可以模拟真实环境和程序之间的相互影响对程序的某个模块进行测试,而不需要目标硬件平台以及暂时还未完成的其它代码模块。在测试环境中,桩函数充当了为待测模块提供外部关联性桥梁的作用。

  在代码修改过程中保护代码完整性

  复杂系统的开发者最大的烦恼就是不能确定对代码的修改是否改变或破坏了程序的既有功能性。为了打消这些顾虑,用户可以创建一个基准单元测试套件来捕捉代码的既有功能性。如果用户希望检查相对于基准单元测试套件的改变,只需要对修改过的代码定期地运行该测试套件即可。因为单元测试能够独立地测试系统的某些代码,所以这样一组回归测试套件可以持续地执行而无论目标硬件平台准备好与否。这种测试并不排斥对整个程序进行测试的分离回归测试套件。

  这样的测试套件作为变更检测完全能够让用户确保如果无意间破坏了既有功能性能够被立即告知。当目标硬件平台准备好后,用户可以直接用宿主环境下的测试来验证代码是否会在实际的目标硬件平台上正确地运行。虽然代码在宿主环境下进行了回归测试,但是在目标硬件平台上还是需要进行一定的自动系统测试

  验证错误处理

  由于消费类产品的错误处理可靠性需求的不同,所以系统测试情景变得更加复杂了。因为不能精确地预测其使用情况,所以系统的设计和测试都不能基于某个特定的情况。

  相反这些系统必须经过广泛地错误以及未预期输入的验证,以保证这些输入能够被正确地处理。

  使用含有桩函数的单元测试同样能够大大地简化错误测试过程。总的而言,在应用程序这一层级来测试错误条件是一件相当耗时的事,因为将程序置于“正确的错误状态”需要准备相对复杂的输入数据并且同时要求程序在其大量的可能状态中处于相应的状态。与之形成鲜明对比的是,使用“错误模拟”方法来对某些函数进行错误处理测试则要简单得多。

  例如,测试一个含有输入数据错误处理机制的测试是相当简单的:

  float signalToNoiseRatio (float signal,float noise,MODE mode)

  {

  if (MODE_MEASUREMENT == mode)

  {

  …

  if (signal < 0 || noise < 0)

  {

  handle_bad_data();

  }

  }

  }

  在这种情况下,在测试程序中对handle_bad_data()函数的调用是很简单的,因为测试该语句是否受程序输入数据控制是很简单的。

  尽管如此,很多情况下控制语句并不直接受控于函数接口,而是取决于系统处于的特定状态,如下例所示。将系统置于该错误状态可能会相当复杂,甚至可能牵扯到让设备接口处于某些特定状态,所以测试用例中的这个条件就需要通过模拟来实现。

  float shutDown ()

  {

  if (uploadingData())

  {

  userMessage (“Cannot execute shutdown while uploading data”);

  recoverShutDown();

  }

  else

  {

  // shut down indeed

  }

  }

  使用支持“智能桩函数”(smart stubs)的高级测试工具,对于复杂错误条件的测试比其它方法就简单了很多。“智能桩函数”允许通过原始函数的桩函数以及通过实现某些必要的特定功能的方法来执行代码。实际而言,当被测程序明显没有处于错误状态时,其相应待测函数将被调用以模拟错误实际发生的情况,这就是“错误模拟”的意义。在上述例子中,对错误处理函数uploadingData()的测试需要其桩函数以保证至少让其返回一次“真”。

  一些值得考虑的问题

  在宿主环境下进行测试可能意味着用以创建代码的编译器和目标系统编译器不同。如果交叉编译器提供商同时提供用在宿主环境下的编译器(例如Green Hills Software的本地编译器),则可以直接使用。如果没有,则可以使用支持大多数平台的GNU Compiler Collection(GCC)。虽然保证代码在宿主编译器和目标编译器上的一致性会对维护成本有些许的提升,但是与早期测试对整个项目带来的好处相比却是很合算的。

  单元测试不大可能发现因同步错误造成的应用程序级的错误条件或者与实际设备接口的错误。尽管如此,在嵌入式系统的开发过程中,单元测试能帮助开发者尽早地发现很多类错误,

  所以提高了系统整体开发效率并且消除了测试瓶颈。

  使用C++test来自动化单元测试过程

  用户可以使用Parasoft C++test来自动化对嵌入式系统软件的测试。

  Parasoft C++test是一套经广泛验证的最佳编码实践的自动化解决方案,它能有效地提高软件开发团队的开发效率以及软件的质量。C++test能帮助用户进行编码策略增强、静态代码分析、全面代码走查以及单元和组件测试,从而为用户保证其C以及C++代码按预期运行提供一个实际可行的方法。C++test可以在桌面环境下的主流IDE(包括Wind River Workbench以及Eclipse)以及回归测试过程中的命令行中以批处理的方式运行。C++test集成了Parasoft的GRS报告系统,它能提供一个基于Web交互界面的报表并为用户提供向下挖掘(drill-down)功能,基于C++test报告的这些结果,开发团队实时把握项目状态和趋势以及其它关键指标。

  对于嵌入式以及交叉开发而言,C++test可以在基于宿主环境和目标环境下执行代码分析以及数据流分析。在宿主环境中,开发者可以通过C++test的编码策略增强、静态代码分析、全面代码走查以及单元和组件测试模块来对代码进行“随时测试”式的验证以及回归测试。被测代码的外部依赖性被桩函数自动地取代,桩函数能真实地模拟硬件以及其它代码在实际运行中的表现。

  

 

  图2:Wind River Workbench中的C++test插件能为其用户提供一个简便的方法来使用C++test进行完整的代码分析和单元测试。

  通过扩展的基于宿主环境的测试,C++test能让用户在某个模块代码完成后立即对其进行测试,即使此时目标环境还未准备好或不能进行测试。这样,绝大部分的潜藏在程序中的逻辑问题都能够在早期被发现,从而让开发者修复这些错误变得十分迅捷,而在目标硬件平台上的测试则能更加注重于验证软硬件接口问题。此外,基于宿主环境的测试相对于目标系统而言更加容易自动运行和维护,这使得用户可以不用其它嵌入式开发工具就可以验证相对平台独立的代码正确性。

  当开发者在仿真器或实际目标硬件平台上进行测试时,在宿主环境下生成和优化过的测试套件可以被重用来验证软件在目标硬件上的功能性。先前的桩函数这时可以用实际代码或者系统接口来代替从而完成完整系统的测试,而不需要修改测试代码。C++test同时还提供一个内建功能来自动捕捉执行测试输出以及将其转变成后续回归测试时的“黄金”数据集。

  C++test让整个测试流程自动进行,包括测试用例生成、交叉编译、部署、执行以及将测试结果(包括覆盖率指标)导入GUI。测试可以通过GUI交互地进行或者通过命令行自动执行,以及以批处理的方式进行的回归测试。在交互模式下,用户可以对单个模块或者一组代码进行测试,从而让调试和验证都变得更简单。在批处理模式下,测试可以针对用户提供的代码或者根据文件名字或在磁盘中的位置来进行。

  同时,C++test还支持将其执行顺序进行完全的用户自定义。除了内建的自动化测试,用户还可以引入自定义测试脚本以及通过shell命令将测试工具根据代码具体结构和测试环境进行自定义。C++test的运行库也能被自定义并且针对不同的目标操作系统进行交叉编译。这种无可比拟的灵活性能够任意实现其希望的测试流程而不需要预设工具的功能。

  

 

  图3:C++test的可自定义工作流程让用户可以根据代码的构造来进行测试,然后使用这个测试套件在目标硬件环境下测试其功能性和可靠性。

 

 

2009-12-18 22:35:00 CiuSoftwareTesting 阅读数 536
  • 微信公众平台模板消息开发-微信开发14(PHP)

    会员免费看,http://edu.csdn.net/lecturer/842 右侧可办理会员卡。微信公众平台模板消息开发是子恒老师《子恒说微信开发》视频教程的第14部。详细讲解了用php开发微信公众平台模板消息。内容包含设置模板所属行业,获取微信模板ID,用公众号发送微信模板消息等等。欢迎反馈,微信号:QQ68183131

    3678 人正在学习 去看看 秦子恒

测试任务说明书模板

测试任务说明书是经理或开发项目的负责人写作的,传递给软件测试人员、软件开发人员、软件管理人员。

从用户的角度出发,测试实施任务和时间人员安排;软件测试人员、软件开发人员不能影响测试进度;对软件的开发过程中每个版本完成测试任务。 

供参考的测试任务说明书模板如下所示。

1概述

1.1 编写目的

1.2 项目背景

1.3 编写测试任务说明书需要的文档

2 测试任务

3 测试质量

4 测试范围

       4.1  流程测试

4.2  边界值测试

4.3  容错性测试

4.4  异常测试

4.5  安装测试

4.6  易用性测试

4.7  界面测试

4.8  接口测试

4.9  配置测试

4.10 性能测试

4.11 压力测试

4.12 兼容性测试

4.13 级测试

4.14 功能测试

4.15 单元测试

4.16 集成测试

4.17系统测试

4.18 回归测试

4.19 验收测试

4.20 文档测试

5.确定测试进度和管理

5.1确定测试进度

5.2管理

6.  测试任务的重点

6.1 单元测试

6.2 集成测试

6.3 系统测试

6.4 验收测试

7  测试注意事项

 

 

如何进行单元测试

阅读数 4203

没有更多推荐了,返回首页