软件测试基础国信安教育GXAEducation单元测试软件测试基础什么是测试用例如何编写测试用例回顾软件测试基础单元测试的主要任务。单元测试的操作方法。单元测试所产生的测试文档。本课目的软件测试基础什么是单元测试。概念单元测试•测试单个程序模块是否满足了预定要求•测试多个模块集成时,是否满足了预定要求。•测试本系统与其它系统的吻合度集成测试系统测试《验收测试》软件测试基础有谁做过体检么?想一下体验的流程。你的身体单项指标是否正常?心脏、手、脚都在正常工作么?有没有哪个部件不干活,或是干的活不合适的。(单体测试)你的身体每个部件都挺正常,自己的本职工作也完成的挺好。但是它们之间的配合正常么?你的心脏正常的制造了血液,大脑也在不停的思考。可是心脏制造的血液能送到大脑么?大脑感觉到冷的时候,你的手肯不肯把衣服拿起来穿上。(集成测试)很好,你很健康。只要不碰到李刚的儿子,估计活到100岁没什么问题。可是你和其他人的配合怎么样?你是李刚的儿子么?别人和你说“早上好”时,你的回答是“你好”还是“神经病”?(系统测试)你聪明么?长的怎么样?除了你妈,还有别的女孩喜欢你么?(验收测试)概念软件测试基础测试方法论:5W2HWhy——为什么?为什么要做?不做行不行?What——做什么?目的是什么?When——什么时候做?Where——哪里?在哪里做?从哪里入手?Who——谁?谁来做?谁来检查?谁负责?How——怎么做?如何提高效率?方法是什么?HowMuch——多少?做到什么程度?性价比如何?概念软件测试基础什么是单元测试。采用白盒测试技术对程序中最基本的功能单元进行检查,从而保证每一个基本机能单元都达到了设计书的预定要求。单元测试只保证最基本单元(函数或类)内的逻辑正确性,对逻辑之间的整合性不做检查。但单元测试必须考虑与其它模块在接口上的整合性,即,传递给其它函数的参数是否正确,返回值的类型是否正确等。概念软件测试基础WAY——为什么。错误是你自己发现的。错误是别人发现的。5W2H软件测试基础WAY——为什么。单元测试可以尽早的发现BUG,从而保证将修改BUG的代价降到最低。单元测试可以加深你对仕样的理解,避免一些自以为是的做法。如果有人接手你的工作,单元测试所产生的文档要比枯燥的设计更受欢迎。如果你觉的写详细设计是在浪费时间,不写又没法理解思路,那么写个测试用例也是不错的选择。5W2H软件测试基础WHAT——干什么?目的是什么?。医生只负责测量你的身高和体重,至于这个身高能不能找到媳妇由孟非同志负责。单元测试仅负责测试最小单位(函数)的程序功能是否满足要求,至于这个函数是不是和其它函数是否匹配不归单元测试负责。5W2H软件测试基础WHAT——干什么?目的是什么?。医生只负责测量你的身高和体重,至于这个身高能不能找到媳妇由孟非同志负责。单元测试仅负责测试最小单位(函数)的程序功能是否满足要求,至于这个函数是不是和其它函数是否匹配不归单元测试负责。WAY软件测试基础单元测试的主要任务。单元测试语法检查(规范性)逻辑检查(执行路径)接口检查(参数、返回值)数据检查(变量、运算结果)错误处理主要任务软件测试基础WHEN——何时?什么时候做?做到什么时候?。测试先行。在代码之前就决定做哪些测试,可以帮助你更好的理清思路,并且写出更为清晰的代码。别忘了,插桩可是越早越好。证明你的程序完全满足设计的要求为止。5W2H软件测试基础WHERE——哪里?从哪里开始做?在什么地方做?。单元测试的依据是什么?代码?设计?。光看下面的代码,你能发现错误么?。If(a==1)return;再加上设计书呢?A的值为任意非零值的情况下,处理结束。在用户的工作场所做有助于你在发现用户业务问题时及时与用户沟通,不过,让用户看到你的程序那么多BUG……,好么?。5W2H软件测试基础WHO——谁来做?谁该做单元测试呢?开发人员?测试人员?别忘了,单元测试是白盒测试。5W2H软件测试基础HOW——怎么做?基本工作方法:根据是什么?内容是什么?结果是什么?5W2H顺序内容依据成果物1编写测试用例详细设计书测试用例2编写测试报告测试结果测试结果报告书3进行测试测试用例测试成果物4BUG报告测试结果BUG清单5编写测试说明书自身的测试思路,方法测试说明书软件测试基础测试用例方法1:根据详细设计书,找出所有的条件与最终结果,然后用因果图法制作测试用例。适用于分支、循环较少,且没有复杂的嵌套分支、嵌套循环的程序。方法2:绘制程序的流程图,然后用路径覆盖法制作测试用例。不管是哪一种方法,都需要用错误推测法对用例进行必要的补充。5W2H软件测试基础测试用例的注意事项想定结果必须明确,不允许出现万能结果。×:数据库内的数据被正常更新。○:数据库内的姓名字段被正常更新成“张三”。万能结果,这个结果话在哪个测试用例中都能用,放在哪个测试用例中都没用。测试数据必须明确指定。×:数据库有什么数据就用什么数据,那条合适用哪条○:事先针对测试要求向数据库内插入一组数据,测试必须在这组数据下进行。测试数据要严格遵守边界值错误处理的想定结果要写明错误信息、错误编号与处理内容。5W2H软件测试基础测试用例的内容5W2H软件测试基础测试用例的分类。5W2H常量定义代码的规范性变量的定义与初始化程序结构函数调用时的参数与返回值静态检查项软件测试基础测试用例的分类。5W2H函数调用时的参数与返回值边界值程序的执行路径预期外的运算结果(无数据等)错误处理动态检查项软件测试基础需要注意的边界值。日期、时间错误示例:某程序在运行时,画面上表示的时间为“91:2”原因:从数据库中取出的时间为0912,中间经过一次数值运算,变成了912,画面始终将前两位处理为小时的时间……类型错误示例:一个财务系统的用户在记帐时,记录了一笔10万元的应收款。结果到年底查账时,帐目显示为该用户还应该给对方65535元……原因:变量的类型被定义成了整型,最大只能存储65535元,大于这个数的,系统自动转换为-65535查询结果为0件,或有多条符合查询条件的数据,而我们只想更新一条。单元测试软件测试基础测试方法。插桩法对于中间运算结果,应该使用插桩技术进行验证。虚函数如果在程序中调用了一个还没有开发完成的函数,可以写一个虚函数来进行测试。单步插桩法的有效替代物。单元测试软件测试基础测试报告。测试过程与最终结果的截图。截图必须能够反映出输入数据、中间结果与最终结果。结果必须能够完全验证你的测试。单元测试软件测试基础第一次的测试报告本次测试的测试结果为(更新后的数据库):糟糕测试姓名年龄工资张三20100软件测试基础第二次的测试报告更新前的数据库:更新后的数据库:糟糕测试姓名年龄工资张三20100姓名年龄工资张三20100软件测试基础第三次的测试报告更新前的数据库:更新后的数据库:糟糕测试姓名年龄工资张三15100姓名年龄工资张三20100软件测试基础第四次的测试报告更新前的数据库:更新后的数据库:糟糕测试姓名年龄工资张三1515李四20200姓名年龄工资张三2015李四20200软件测试基础BUG报告与测试说明。BUG报告这一部分的内容将在以后的课程中讲解,暂略。测试说明。教材P78页单元测试软件测试基础HowMuch——多少?单元测试从没要求过100%覆盖率。单元测试在验证了详细设计书的全部内容后结束。5W2H课后总结&答疑?总结本课开始对具体的测试工作进行研究,并提出了5W2H工作法的概念。5W2H并不只适用于软件测试,对任何工作,5W2H都是适用的。作业根据下一页的详细设计编写测试用例。课后总结&答疑?