最新开发人员如何做好单元测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何做好单元测试
一.什么是单元测试?
单元测试是开发人员在程序编写或修改过程中,完成某一功能模块后,对完成的模块进行的测试。一个功能模块,一个类,一个方法,一个窗口,一个按钮,一个选择框,一个输入列等等都可以成为一个测试单元。一般来说,单元测试由开发人员完成。二.为什么要进行单元测试?
1.在集成测试前,开发人员做好单元测试,可以避免模块出现一些常见的错误,减少BUG率;
2.在集成测试或验收测试的过程中,开发人员修改问题之后,尤其要做好单元测试,这样可以避免修改带来其他的问题,减少修改后的BUG率。开发人员将问题修改后,不进行自我测试,直接交给测试人员的做法不是好习惯;
3.在试运行和实施中,开发人员修改问题后,做好单元测试,减少面对用户的BUG,减少出现错误数据的机会,可以提高软件的服务质量,提高实施的效率,否则由于
程序的问题带来的错误数据,将在很长一段时间内花费开发和维护人员大量的精力
进行调整和清理,还可能影响用户报表数据。
三.单元测试的覆盖范围
单元测试覆盖在程序的编码和修改的所有过程,包括:编码阶段,测试阶段,实施阶段,服务阶段。尤其是系统上线之后的实施阶段和服务阶段,修改问题后,需要严格的单元测试,这种情况下,往往还要配合流程的测试,避免修改影响其他流程的运行和流程数据。
四.典型测试用例
1.边界值测试
由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。开发人员对自己开发的模块的边界值情况是最了解的,因此针对各种边界情况进行测试,可以查出更多的错误。
2.路径测试
对开发人员来说,在编码中有多少分支情况是最清楚的,遍历所有的分支路径情况进行测试,可以覆盖所有的路径,检查每一种情况的运行结果是否符合预期结果。
对于程序中的if。。。else,或case等编写的部分,应做好路径的充分测试。
3.组合条件测试
如按条件组合进行查询的情况,需要测试多种组合形式。
4.等价类测试
如:用户密码不能小于6位的情况测试,一个有效类指挑一个6位的正确密码;
二个无效类指小于6位的密码一个和位数过大的密码一个(比如50位)。
5.具体功能点的功能测试
针对具体的模块的具体功能进行测试,测试基本的功能能否正常按要求完成。五.单元测试要注意的常见的问题
下面列出的都是在以往的测试过程中发现的常见的问题,这些问题的出现频率极高,往往影响提交的软件的质量,这些问题在开发人员的单元测试中应该加以注意,使提交给测试组或用户的软件达到可用性好,窗口统一美观,基本功能操作正常。
1.基本功能是否能成功完成?
2.窗口上的翻页功能是否能成功翻页?
3.排序功能是否能成功按选择列排序?
4.返回按钮是否能返回到应该的页面?
5.继续增加是否能成功?
6.组合查询是否所有的列参与组合查询都能成功进行?
7.显示的详细信息中,是否有显示的是代码不是名称的?
8.页面上是否因为其中的一列显示过长而使整个页面显示不美观的?
9.删除等危险操作是否有警告提示信息?
10.录入或修改信息后,系统是否能对信息进行有效性检查?
11.录入窗口上,对非空列是否有明确标识?系统是否对非空列进行非空检查?
12.重复提交的信息是否有唯一性检查?
13.保存成功后的信息,查询显示的结果是否与保存的信息一致?
14.完成一个操作后,窗口是否能及时刷新?刷新信息是否正确?
15.调试信息对话框是否已经隐藏?
16.需要修改状态值的操作,最好通过前台的查询或后台的数据进行查看,检查状态是否修改正确?
17.对数据库的操作的提示信息是否是用户能识别的信息?是否能避免用户的重复劳动?
18.窗口的整体风格是否一致?字体类型和大小是否一致?
19.所有提示信息是否恰当、友好?
20.执行某一功能时,系统的反应速度是否在可接受范围内?(这个往往大家并不重视,所以这个系统反应慢的问题在很多项目中都存在,其实通过调整SQL和索引后,
大多数慢的问题都可以明显得到改善。)
21.某些功能是否符合用户的操作习惯?
22.SQL是否最优化?
23.索引是否建立?建立是否合理?
六.单元测试建议测试点清单
现在我们所开发的系统基本上都是图形用户界面的,针对这样的图形用户界面,我们将它分解成以下的单元,并分别罗列出各单元的建议测试需求:
1.窗口
1)标题栏的文本是否准确?
2)所有的菜单项是否恰当?
3)帮助菜单项是否正常工作?
4)最大化、最小化按钮是否可见?他们是否应该这样?是否能正常工作?
5)如果一个窗口被最大化了,那么窗口上的对象(网格、数据窗口、按钮等其他控件)是否可以被正确地调整?
6)如果一个窗口被最小化了,是否可以显示恰当的图标?
7)水平和垂直滚动条是否可见?是否需要?
8)窗口是否可以改变大小?是否应该这样?
9)如果窗口可以改变大小,窗口上的所有对象(网格、数据窗口、按钮等其他控件)是否可以自动调整?
10)窗口是否可以移动?是否应该这样?
11)窗口的背景是否被设置为正确的颜色和模式?
12)用户是否会认为TAB键的顺序是合理的和方便的?
13)如果对窗口做了改变,用户是否在改变之前得到提示?
14)窗口的前景色和背景色是否搭配恰当,使文本易读?
15)需要用户操作的区域是否有可见的提示?
16)需要回车执行命令的地方是否有明确提示?
17)窗口的设计风格是否与整个系统的窗口设计风格一致?2.菜单
1)所有的菜单项的分组是否符合逻辑?
2)快捷键是否被定义?他们是否能正常工作?
3)多级菜单项是否被恰当地用某种标识标记出来?
4)多级菜单的使用是否影响窗口的整体美观?
5)菜单地设计是否在整个系统中保持一致?
6)不可用的菜单项是否变灰?
7)如果一个不可用的菜单项变为可用,它是否仍然是灰的?
3.对话框
1)是否所有对话框的标题都有意义?
2)对话框上的所有按钮是否被清楚地标记了?
3)是否所有地对话框都能够提供一个中断当前操作的机会?
4)对话框的文本是否清楚易懂?
5)对话框是否可以移动?是否应该这样?
6)对一些危险操作(如删除、提交)等,是否有对话框警告提示?4.静态文本
1)是否静态文本受保护,不可以被用户修改?
2)静态文本所使用的字体大小是否一致?
3)如果静态文本被应用程序动态地更改了,它是否可以正确地工作?
4)文本的前景色是否和窗口的背景色对比鲜明?
5.控制按钮
1)是否所有的控制按钮都被清楚地标记了?
2)如果按钮被单击,用户是否可以得到一个可见的提示或按钮变化?
3)窗口上的控制按钮是否被统一对齐?
4)按钮风格是否一致?是否有同样的字体类型和大小?
5)是否每个按钮都能按预计的要求工作?工作的结果是否正确?
6)是否合理地安排了缺省功能(如:用回车实现)?
7)是否合理安排了取消功能(如:用ESC键实现)?
6.单选按钮