SlideShare una empresa de Scribd logo
1 de 35
The  Ruby  Way  (Test) Meet a  Test  world [email_address]
什么是测试? 1. 测试是通过一系列手段检查边界,检查可能出现问题的的地方,对运行数度和并发性进行测试,查找代码的漏洞,向软件设计,开发者和用户展示软件系统的不稳定和不可交付性。 2. 广义的说,测试是通过种种手段收集问题,生成报告,向项目决策者提供决策依据,测试人员又称为质量保证人员,是软件开发的最后一道关卡。 3. 测试的目的 不是为了证明软件可以正确运行,与此相反,测试的目的是为了找到软件的漏洞,从而证明程序代码是否能交付。
测试的内容 1. 在测试中,按照测试的时间顺序和目的,分为: 单元测试 , 模块测试 , 集成测试 。 单元测试 :对被测代码每一个函数边界和功能检查。 模块测试 :当软件被按照模块划分开发时,在模块耦合之  前,对每一个模块进行的检查。 集成测试 :对于模块整合之后的测试或称为系统测试。
Ruby 中 测试框架 1.Ruby 是一个非常注重测试的语言,提供了一套测试框架,以进行单元测试和集成测试,名称为 RUBY 单元测试框架: ( Ruby Unit Testing Framework) ,保存与 Ruby 的 Runt 目录,包括 TestSuite , TestCace , tests , 和 Assertions 4 个部分 .
测试框架 1. 通过加载一行代码 require ‘test/unit’. 就给 Ruby 脚本加上了编写测试用例的能力。 一个简单的’ Hello world’ 测试例程( TestCase ): #hello_test require ’test/unit’ class TC_HelloTest<Test::Unit::TestCase def test_hello puts “test_hello” assert true end end 测试的结果如下: Loaded suite testhello  started  test_hello
Finished in 0.0 seconds. 1 tests,1assertions,0 failures, 0 errors 上面的输出结果: 1 tests,1assertions,0 failures, 0 errors 代表测试组合的测试已经成功执行,它有一个测试,一个断言,耗费了 0.0 秒, 0 failures, 0 errors  没有一个错误。下面是对代码的解释: 1.require ‘test/unit’ 在编写单元测试的时候,应该始终包含 require ‘test/unit’ ,它包含了可以编  写和运行单元测试的类和功能,提供对测试组合的操作。 2 . class TC_HelloTest<Test::Unit::TestCase 必须有一个 Test::Unit::TestCase 的 派生类 , TestCase 类是测试例程的宿主 3 . def test_hello 测试执行的函数,输出 “ test_hello” ,所有的测试方法必须遵循如下命名规范:名称必须以 test 开头,测试框架将不认为它是测试方法,也不会自动运行,他是一个普通 Ruby 方法。 4. assert true 断言是测试方法
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],TestSuite TestCase test test he  TestCase Test Assertion1
1.Test Suite( 测试组合 ) :一个测试组合是一大堆测试用例的集合,运行了一个测试组合以后,它将执行该测试组合中的每一个属于它的测试,例如,可以通过创建一个测试组合,来包含每一个测试单元,这有利于小组不断的进行进行编译和打包集成,有利于提高测试速度和测试的质量,上面的 testhello.rb 就是一个测试组合。 2.TestCase (测试例程): 测试例程是一个继承与 Test::Unit::TestCase 的类,包含了以 test 开头命名的测试方法,以及和内容相关的测试策略。 3. tests (测试)方法 :包含了断言和测试操作的方法,以 test 开头,表示某一特定的测试场景。 4.assertion( 断言 ) :用来判断一个对象(或表达式)是否是希望的结果。
测试流程 一个简单的测试框架: 在下面测试代码中,  UserVerify 用于表示用户校验模块,测试一个用户密码是否符合客户制定的安全规则,  UserVerify 中的  is_pass_format_ok? 方法将处理这个问题,如果用户的密码通过了测试规则,将返回 TRUE, 否则,将返回 FASLE 并且断言立即中止,不再执行。 测试代码: class UserVerity attr_accessor :username ,:password def initialize(username,password) @forbidwords =[‘123456’] @username =username @password =password end
def is_pass-format_ok? return  false if @password.nil? return  false if @password.empty? return  false if @password.size < 6 return  false if @ forbidwords? (@ password ) return  false if @password =~/[]?/ return  false if @password == @username  true end  end
使用测试框架示例: require ‘test/unit’ class TC_UserTest < Test::Unit::TestCase def test_hello assert true  end def test_passwords assert UserVerity.new(“root”,”abc”).is_pass_format_ok? assert UserVerity.new(“root”,”123456”).is_pass_format_ok? assert UserVerity.new(“root”,”1234567890”).is_pass_format_ok? assert UserVerity.new(“root”,”password”).is_pass_format_ok? assert UserVerity.new(“root”,”user”).is_pass_format_ok? assert UserVerity.new(“root”,”root”).is_pass_format_ok? assert UserVerity.new(“root”,”nil”).is_pass_format_ok? assert UserVerity.new(“root”,”1”).is_pass_format_ok? assert UserVerity.new(“root”,””).is_pass_format_ok?
这段程序的输出结果如下所示: Loaded suite userpwd Started . F Finished in 0.016 seconds. …… . 测试用例错误的详细信息 注意 Started 下面的 . F (小圆点和 F ) . : 测试通过。 F :测试失败 。 E :发生错误。
Test::Unit 支持的断言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
NetBeans 中的测试 ,[object Object]
 
[object Object],[object Object]
测试专用数据库: ,[object Object]
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
 
控制器的功能测试: ,[object Object]
 
 
 
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
 
修改后:
 
动态夹具 ,[object Object],[object Object],[object Object]
Mock :
 
参考文章: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
To Be Continue……

Más contenido relacionado

Destacado

The ruby way iii
The ruby way iiiThe ruby way iii
The ruby way iiiDeng Peng
 
The ruby way ii
The ruby way iiThe ruby way ii
The ruby way iiDeng Peng
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署Deng Peng
 
The ruby way
The ruby wayThe ruby way
The ruby wayDeng Peng
 
Social Media Attribution - Havas Digital Insights
Social Media Attribution - Havas Digital InsightsSocial Media Attribution - Havas Digital Insights
Social Media Attribution - Havas Digital InsightsHavas Media
 
Export1
Export1Export1
Export1MPS
 

Destacado (6)

The ruby way iii
The ruby way iiiThe ruby way iii
The ruby way iii
 
The ruby way ii
The ruby way iiThe ruby way ii
The ruby way ii
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署
 
The ruby way
The ruby wayThe ruby way
The ruby way
 
Social Media Attribution - Havas Digital Insights
Social Media Attribution - Havas Digital InsightsSocial Media Attribution - Havas Digital Insights
Social Media Attribution - Havas Digital Insights
 
Export1
Export1Export1
Export1
 

Similar a The ruby way test

PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
Part04 软件测试方法论
Part04 软件测试方法论Part04 软件测试方法论
Part04 软件测试方法论aellaw
 
Selenium介绍
Selenium介绍Selenium介绍
Selenium介绍lory hou
 
第1章 软件测试概述
第1章 软件测试概述第1章 软件测试概述
第1章 软件测试概述Kerry Zhu
 
软件测试 -第1章 概述
软件测试 -第1章 概述软件测试 -第1章 概述
软件测试 -第1章 概述Kerry Zhu
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)Rick Hwang
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發AgileCommunity
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
Frank‘s Learning Summary - Agile testing
Frank‘s Learning Summary - Agile testingFrank‘s Learning Summary - Agile testing
Frank‘s Learning Summary - Agile testingFrank Lee
 
LABVIEW的自动化测试之路
LABVIEW的自动化测试之路LABVIEW的自动化测试之路
LABVIEW的自动化测试之路Dean Lee
 
Testing survey
Testing surveyTesting survey
Testing surveyTao He
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章浒 刘
 
PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formaljameslabs
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训lotusprince
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1yiditushe
 
常用JAVA代码质量静态检查工具
常用JAVA代码质量静态检查工具常用JAVA代码质量静态检查工具
常用JAVA代码质量静态检查工具dearhwj
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用yiditushe
 
测试快照
测试快照测试快照
测试快照jacquesqj
 

Similar a The ruby way test (20)

PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
PHPUnit
PHPUnitPHPUnit
PHPUnit
 
Part04 软件测试方法论
Part04 软件测试方法论Part04 软件测试方法论
Part04 软件测试方法论
 
Selenium介绍
Selenium介绍Selenium介绍
Selenium介绍
 
C++exception
C++exceptionC++exception
C++exception
 
第1章 软件测试概述
第1章 软件测试概述第1章 软件测试概述
第1章 软件测试概述
 
软件测试 -第1章 概述
软件测试 -第1章 概述软件测试 -第1章 概述
软件测试 -第1章 概述
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Frank‘s Learning Summary - Agile testing
Frank‘s Learning Summary - Agile testingFrank‘s Learning Summary - Agile testing
Frank‘s Learning Summary - Agile testing
 
LABVIEW的自动化测试之路
LABVIEW的自动化测试之路LABVIEW的自动化测试之路
LABVIEW的自动化测试之路
 
Testing survey
Testing surveyTesting survey
Testing survey
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 
PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formal
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 
常用JAVA代码质量静态检查工具
常用JAVA代码质量静态检查工具常用JAVA代码质量静态检查工具
常用JAVA代码质量静态检查工具
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用
 
测试快照
测试快照测试快照
测试快照
 

The ruby way test

  • 1. The Ruby Way (Test) Meet a Test world [email_address]
  • 2. 什么是测试? 1. 测试是通过一系列手段检查边界,检查可能出现问题的的地方,对运行数度和并发性进行测试,查找代码的漏洞,向软件设计,开发者和用户展示软件系统的不稳定和不可交付性。 2. 广义的说,测试是通过种种手段收集问题,生成报告,向项目决策者提供决策依据,测试人员又称为质量保证人员,是软件开发的最后一道关卡。 3. 测试的目的 不是为了证明软件可以正确运行,与此相反,测试的目的是为了找到软件的漏洞,从而证明程序代码是否能交付。
  • 3. 测试的内容 1. 在测试中,按照测试的时间顺序和目的,分为: 单元测试 , 模块测试 , 集成测试 。 单元测试 :对被测代码每一个函数边界和功能检查。 模块测试 :当软件被按照模块划分开发时,在模块耦合之 前,对每一个模块进行的检查。 集成测试 :对于模块整合之后的测试或称为系统测试。
  • 4. Ruby 中 测试框架 1.Ruby 是一个非常注重测试的语言,提供了一套测试框架,以进行单元测试和集成测试,名称为 RUBY 单元测试框架: ( Ruby Unit Testing Framework) ,保存与 Ruby 的 Runt 目录,包括 TestSuite , TestCace , tests , 和 Assertions 4 个部分 .
  • 5. 测试框架 1. 通过加载一行代码 require ‘test/unit’. 就给 Ruby 脚本加上了编写测试用例的能力。 一个简单的’ Hello world’ 测试例程( TestCase ): #hello_test require ’test/unit’ class TC_HelloTest<Test::Unit::TestCase def test_hello puts “test_hello” assert true end end 测试的结果如下: Loaded suite testhello started test_hello
  • 6. Finished in 0.0 seconds. 1 tests,1assertions,0 failures, 0 errors 上面的输出结果: 1 tests,1assertions,0 failures, 0 errors 代表测试组合的测试已经成功执行,它有一个测试,一个断言,耗费了 0.0 秒, 0 failures, 0 errors 没有一个错误。下面是对代码的解释: 1.require ‘test/unit’ 在编写单元测试的时候,应该始终包含 require ‘test/unit’ ,它包含了可以编 写和运行单元测试的类和功能,提供对测试组合的操作。 2 . class TC_HelloTest<Test::Unit::TestCase 必须有一个 Test::Unit::TestCase 的 派生类 , TestCase 类是测试例程的宿主 3 . def test_hello 测试执行的函数,输出 “ test_hello” ,所有的测试方法必须遵循如下命名规范:名称必须以 test 开头,测试框架将不认为它是测试方法,也不会自动运行,他是一个普通 Ruby 方法。 4. assert true 断言是测试方法
  • 7.
  • 8. 1.Test Suite( 测试组合 ) :一个测试组合是一大堆测试用例的集合,运行了一个测试组合以后,它将执行该测试组合中的每一个属于它的测试,例如,可以通过创建一个测试组合,来包含每一个测试单元,这有利于小组不断的进行进行编译和打包集成,有利于提高测试速度和测试的质量,上面的 testhello.rb 就是一个测试组合。 2.TestCase (测试例程): 测试例程是一个继承与 Test::Unit::TestCase 的类,包含了以 test 开头命名的测试方法,以及和内容相关的测试策略。 3. tests (测试)方法 :包含了断言和测试操作的方法,以 test 开头,表示某一特定的测试场景。 4.assertion( 断言 ) :用来判断一个对象(或表达式)是否是希望的结果。
  • 9. 测试流程 一个简单的测试框架: 在下面测试代码中, UserVerify 用于表示用户校验模块,测试一个用户密码是否符合客户制定的安全规则, UserVerify 中的 is_pass_format_ok? 方法将处理这个问题,如果用户的密码通过了测试规则,将返回 TRUE, 否则,将返回 FASLE 并且断言立即中止,不再执行。 测试代码: class UserVerity attr_accessor :username ,:password def initialize(username,password) @forbidwords =[‘123456’] @username =username @password =password end
  • 10. def is_pass-format_ok? return false if @password.nil? return false if @password.empty? return false if @password.size < 6 return false if @ forbidwords? (@ password ) return false if @password =~/[]?/ return false if @password == @username true end end
  • 11. 使用测试框架示例: require ‘test/unit’ class TC_UserTest < Test::Unit::TestCase def test_hello assert true end def test_passwords assert UserVerity.new(“root”,”abc”).is_pass_format_ok? assert UserVerity.new(“root”,”123456”).is_pass_format_ok? assert UserVerity.new(“root”,”1234567890”).is_pass_format_ok? assert UserVerity.new(“root”,”password”).is_pass_format_ok? assert UserVerity.new(“root”,”user”).is_pass_format_ok? assert UserVerity.new(“root”,”root”).is_pass_format_ok? assert UserVerity.new(“root”,”nil”).is_pass_format_ok? assert UserVerity.new(“root”,”1”).is_pass_format_ok? assert UserVerity.new(“root”,””).is_pass_format_ok?
  • 12. 这段程序的输出结果如下所示: Loaded suite userpwd Started . F Finished in 0.016 seconds. …… . 测试用例错误的详细信息 注意 Started 下面的 . F (小圆点和 F ) . : 测试通过。 F :测试失败 。 E :发生错误。
  • 13.
  • 14.
  • 15.  
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.  
  • 21.
  • 22.  
  • 23.  
  • 24.  
  • 25.  
  • 26.
  • 27.
  • 28.  
  • 30.  
  • 31.
  • 33.  
  • 34.