软件构造课程笔记02 软件测试与测试优先编程
确保程序正确性/健壮性的最普遍的手段:测试
1设计测试用例2用JUnit写测试程序
3自动化测试过程
1.软件测试 Software Testing
1.1什么是测试
测试是提高软件质量重要手段,是确定是否达到用户需求,且关注系统某一侧面质量特性
即使最好的测试也没法100%无误,但可以降低残留缺陷率
1.2测试的特点
测试的目标:破坏,证错
好的测试的标准:能发现错误、不溶于、“最佳特性”、介于简单与复杂之间
1.3测试层级(与软件编程顺序相对应)
单元测试:核实代码某个特定部分的功能,居于功能层面
集成测试:联合执行2个或更多的类,包,部分,子系统
系统测试:测试一个完整的集成系统,核实系统在它的最终布局中执行程序且满足了需求
1.4 其他测试
安装测试、兼容性测试、烟雾和健康测试、回归测试、验收测试、α测试/β测试、性能/负载/可扩展性、可用性测试、可访问性测试、安全测试
1.5静态测试,动态测试
静态测试:不需要执行,通过看代码。一次可以发现很多错误,发现错误立刻定位
动态测试:运行代码
1.6测试与debug
1.7白盒黑盒测试(必须两者皆执行)
白盒测试:针对内部代码结构测试
黑盒测试:针对程序外在表现行为测试
1.8软件测试难处
无法穷举,不能偶然测试,不能进行统计抽样测试
无统计分布规律,在离散输入空间差异巨大
2.测试用例 Test Case
测试用例=输入+执行条件+期望结果
3.测试优先的编程/测试驱动开发 Test-First Programming / Test-Driven Development (TDD)
=>分析需求,先写测试用例,再写代码