软件|白盒测试和单元测试

软件|白盒测试和单元测试

定义
白盒测试是一种测试用例设计方法 , 盒子指的是被测试的软件 , 白盒指的是盒子是可视的 , 你清楚盒子内部的东西以及里面是如何运作的 。 \"白盒\"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试 。 \"白盒\"法是穷举路径测试 。 在使用这一方案时 , 测试者必须检查程序的内部结构 , 从检查程序的逻辑着手 , 得出测试数据 。 贯穿程序的独立路径数是天文数字 。
方法
常用的软件测试方法有两大类:静态测试方法和动态测试方法 。 其中软件的静态测试不要求在计算机上实际执行所测程序 , 主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序 , 而达到发现程序错误的过程 。 在动态分析技术中最重要的技术是路径和分支测试 。
【软件|白盒测试和单元测试】定义
通过工具来进行code review不在本次讨论范围内 。
编码规范问题:命名不规范、magic number
代码结构问题:重复代码、巨大的方法和类、分层不当、紧耦合
工具、框架使用不当:Spring、Hibernate、AJAX
实现问题:错误验证、异常处理、事务划分、线程、性能、安全、       实现过于复杂、代码可读性不佳、扩展性不好
测试问题:测试覆盖度不够、可测试性不好
代码评审不负责检查功能、逻辑是否正确 , 这些要靠单元测试和QA工作来解决
测试实例方法
1.语句覆盖每条语句至少执行一次 。
2.判定覆盖每个判定的每个分支至少执行一次 。
3.条件覆盖每个判定的每个条件应取到各种可能的值 。
4.判定/条件覆盖同时满足判定覆盖条件覆盖 。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次 。
6.路径覆盖使程序中每一条可能的路径至少执行一次 。
应用
1.保证一个模块中的所有独立路径至少被使用一次 。
2.对所有逻辑值均需测试 true 和 false 。
3.在上下边界及可操作范围内运行所有循环 。
4.检查内部数据结构以确保其有效性

·定义
单元测试(unit testing) , 是指对软件中的最小可测试单元进行检查和验证 。 对于单元测试中单元的含义 , 一般来说 , 要根据实际情况去判定其具体含义 , 如C语言中单元指一个函数 , Java里单元指一个类 , 图形化的软件中可以指一个窗口或一个菜单等 。 总的来说 , 单元就是人为规定的最小的被测功能模块 。 单元测试是在软件开发过程中要进行的最低级别的测试活动 , 软件的独立单元将在与程序的其他部分相隔离的情况下进行测试 。
意义
单元测试是由程序员自己来完成 , 最终受益的也是程序员自己 。 可以这么说 , 程序员有责任编写功能代码 , 同时也就有责任为自己的代码编写单元测试 。 执行单元测试 , 就是为了证明这段代码的行为和我们期望的一致 。
·创建Junit4
在需要测试的类上面右键->new->other->JUnit=->Junit Test Case->Next->New JUint4 test->Name->setup->teardown->Next->勾选你要测试的函数->Finish
注解和函数讲解
@Before-setUp:每一次执行前的准备工作
@After-teardown:每一次执行后的扫尾工作
@Test-testFunction:表示这是Junit单元测试的函数
创建Junit4
编写代码时 , 我们总是会做出一些假设 , 断言就是用于在代码中捕捉这些假设 。 断言表示为一些布尔表达式 , 程序员相信在程序中的某个特定点该表达式值为真 , 可以在任何时候启用和禁用断言验证 , 因此可以在测试时启用断言而在部署时禁用断言 。 同样 , 程序投入运行后 , 最终用户在遇到问题时可以重新启用断言 。
判断结果是否和预期一致
·常用断言
fail:本次执行失败;不写fail , 默认就是pass
assertEquals:判断相等则pass , 不等则fail
assertNotEquals:判断相等则fail , 不等则pass
assertNull , assertNotNull , assertTrue , assertFalse
相关注解讲解
@RunWith(Parameterized.class):指定本次执行使用参数化
@Parameters:参数
·相关函数讲解
data:参数化的函数 , 是一个集合或者迭代器
构造函数:用来把data里面的参数 , 传递到test函数;每一次执行都会执行一次 , 直到集合里面不再有元素 。