第一章
一、软件的多维视图:
按阶段分:build和run-time,构造和运行视图。
按动态性分:moment和period,时刻和阶段视图。
按构造对象的层次划分:code和component,代码和构建视图。
软件的质量:
1.外部因素:正确性最重要,健壮性与正确性互补。
2.内部因素:圈复杂度,高内聚,低耦合->可读性,复用性,便于维护。
二、测试
Test Case测试用例
测试用例:输入+执行条件+期望结果
Coverage of Testing覆盖度
Integration * 集成测试 (TDD)
Test-First Programming测试优先的编程
Process:
1.先写spec
2.再写符合spec的测试用例
3.写代码、执行测试、有问题再改、再执行测试用例,直到通过它
Testing Driven Development 测试驱动开发
Automated Testing and /Regression Testing回归测试
Unit Testing单元测试
对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试。
Junit:
setUp()或@Before:准备测试,完成初始化;
tearDown()或@After:清理测试环境
Black-box Testing黑盒测试
用于检查代码的功能,不关心内部实现细节
确保程序正确性/健壮性的最普遍的手段:测试
1 设计测试用例边界值分析
2 用JUnit写测试程序
3 自动化测试过程
等价类划分
基于等价类划分的测试:将被测函数的输入域划分为等价类,从等价类中导出测试用例。
针对每个输入数据需要满足的约束条件,划分等价类。
边界值分析方法:在等价类划分时,将边界作为等价类之一加入考虑
两种覆盖策略:
笛卡尔积:全覆盖。测试完备,但用例数量多,测试代价高。
覆盖每个取值:最少1次即可。测试用例少,代价低,但测试覆盖度未必高。
第二章:
一、软件生命周期与配置管理
1.SCM(软件配置管理):追踪和控制软件的变化。
基本单元:SCI(软件配置项),如源代码,文档等。SCI会随时间一起更新。
CMDB(配置管理数据库):存储软件的各配置项随时间发生变化的信息+基线
2.VCS(版本控制系统):
a.本地VCS。
b.集中式VCS(CVS,SVN等):仓库存储于独立的服务器,支持多开发者之间的协作。
c.分布式VCS(Git):仓库存储于独立的服务器+每个开发者的本地机器。
3.Git:
a.不发生变化的文件不反复存储,存储发生变化的文件(而非代码行)。
b.关于git指令:
git push,git pull向远程仓库提交或从远程仓库接收
git checkout -b m 创建并切换到分支m
git commit 向这个分支提交一个文件
git checkout master 切换回master
git merge m 将m分支和master合并
git branch -d m 删除m分支
4.软件构造的过程、系统和工具
IDE(集成开发环境):如eclipse
BULID工具Make, Ant, Maven, Gradle, Eclipse等