软件测试
内容
- 黑盒测试和白盒测试的定义
- 等价类的定义
- 测试整个系统
- 测试注册和登录功能
- 验收测试的优点
- 利用单元测试来测试应用程序的一部分
- 测试示列MVC控制器
2.1 黑盒和白盒测试
在不知道实现细节的前提下的测试称为黑盒测试,基于应用程序源码的测试称为白盒测试。
- 保证程序对给定的输入字符串生成正确的输出字符串
- 为了减少测试字符串的数量,必须建立等价类。
- 注意边界及非法的输入值。增加整数值时会发送什么,增加非数值的值时发送什么!
- 首先测试基本路径,然后测试边界,最大输入值加1,最小输入值减1。这些工作都已经执行过了,就可以测试无厘头的输入。如NULL值或非法数据类型
- web应用程序都使用cookie和服务器的会话管理来规避HTTP的无状态性。没有状态,除非证书(Credential)通过每一个HTTP请求被转发,否则一个应用程序不能区分匿名用户和注册用户。
2.2系统测试
2.3自动测试
浏览器测试自动化的最初方法是所谓的“捕获和重放”(capture and replay)工具。该工具不能捕获实际屏幕位置,而只能在JavaScript或者DOM级别上捕获浏览器事件。
Selenium测试使用DOM树上的断言来确保当前的HTML网页满足一定的指标。因为测试直接在浏览器里执行,即在浏览器中直接测试javaScript代码,这样Ajax应用程序也能接收Selenium测试,不同的断言允许检查任意HTML元素的存在或内容。HTML、ID、CSS选择器、JavaScript代码或者XPath语句可以访问元素(或DOM节点)。
不能对一个正在正常运行的系统进行测试, 当用户的数据被莫名其妙地修改时,他们对此或许并不觉得好玩,在一些情况下,创建测试系统比预期难,比如生产系统相当复杂或者相当强大以导致测试系统非常昂贵。
2.2.3 孤立测试
实际中,每一个测试需要一个数据库及相应的测试数据,这是测试工作流程的必由之路:注册->确认->真正登录。每一步骤必须与前面的测试相对独立。
除了管理和维护所有这些测试工具装置需要付出的努力之外,每一次测试都必须建立测试环境,这通常意味着我们要填充测试数据库。依靠应用程序,为了运行测试,在文件系统或预填充高速缓存中用某些数据创建文件是必要的。
2.2.4 验收测试
验收测试:至少关于功能部分的验收测试,可以通过如Selenium的工具实现自动化。即使开发软件是为了自己使用,这会迫使您的终端用户的角度考虑软件的功能性而不必担心实现问题。
优点:指出软件不能实现那些规格要求。
TDD(Test-Driven-Development) 测试驱动的开发模式
2.2.4 单元测试
通常只测试单独一个类,但测试包括聚合对象甚至是应用程序的整个架构层。单元测试通常是白盒测试。编写基于带测试代码。
2.2.5依赖性
- 常亮
- 全局变量
- 超全局变量
- 函数(用户定义或内置)
- 类(用户定义或内置)
- 静态方法
- 静态属性
- 对象
只有满足代码的所有依赖性时才能测试代码。隐式依赖有问题的。更倾向于以构造函数和有类型提示的方法参数的形式使依赖性明晰。这种技巧称为依赖注入。
使用显示依赖不仅使代码更容易测试,而且有助于本着单一、明确定义的职责编写对象。以为API的方法签名清楚地说明了一个类所具有的依赖性,使用和重用代码更简单。使用接口可增加代码的松散耦合性。
理论不看了 直接看实践了!!!!!!