勉強ノート20200519

Jtest
 - Jtest不是开源的
	 - Jtest是第一个自动化Java单元测试工具。Jtest自动测试任何Java类或部件,而不需要您写一个测试用例、驱动程序或桩函数。只要点击一个按钮,Jtest自动测试代码构造(白盒测试)、测试代码功能性(黑盒测试)、维护代码完整性(回归测试)和静态分析(编程标准执行和指标度量)。不需要复杂的设置,Jtest能够立即使用并指出问题。如果您使用“按合同设计”技术在代码中加入描述信息,Jtest能够自动建立和执行测试用例验证一个类的功能是否符合其功能描述。
	 - Jtest能够帮助您防止错误,其可定制的静态分析特性让您能够自动执行超过240个软件业认可的编程标准,建立和执行任何数量的定制编程标准,并对它们进行剪裁以适应特定的项目和团队。
   - 优势:
	 - 1)使预防代码错误成为可能,从而大大节约成本,提高软件质量和开发效率
	 - 2)使单元测试,包括白盒、黑盒以及回归测试成为可能
	 - 3)使代码规范检查和自动纠正成为可能
	 - 4)鼓励开发团队横向协作来预防代码错误
   - 特征:
	 - 1)通过简单的点击,自动实现代码基本错误的预防,这包括单元测试和代码规范的检查
	 - 2)生成并执行junit单元测试用例,对代码进行即时检查
	 - 3)提供了进行黑盒测试、模型测试和系统测试的快速途径
	 - 4)确认并阻止代码中不可捕获的异常、函数错误、内存泄漏、性能问题、安全弱点的问题
	 - 5)监视测试的覆盖范围
	 - 6)自动执行回归测试
	 - 7)支持DbC编码规范
	 - 8)检验超过350个来自java专家的开发规范
	 - 9)自动纠正违反超过160个编码规范的错误
	 - 10)允许用户通过图形方式或自动创建方式来自定义编码规范
	 - 11)支持大型团队开发中测试设置和测试文件的共享
	 - 12)实现和EclipseIDE 的安全集成
CodeAnalyzer (コード品質管理)
 - 支持多系统、多语言、多规则 	
    	- CA基于Java开发,Java Swing的模式支持系统跨平台运行;支持C、C++、Java等多种编程语言扫描;支持windows平台、linux平台、命令行环境、IDE环境。规则包含国军标5369,MISRAC:2004,国军标5369(C++),Java sun 编程规范,Java sun 安全规则等。
无需测试用例的测试 	
      -  CA是根据预定的规则对代码进行扫描分析,检查代码是否符合编码规范和各种规则,查找可能的错误,无需编写测试用例可以实现自动化测试,节省大量的人力。
基于编译的代码分析 
       - 静态分析工具基于编译和基于模式的两种方法。CA基于编译的方法,是对整个代码进行扫描分析,相对于基于模式的方法,扫描某个段落的上下文,来判断是否违反了规则,能获得更和完备的分析,便于用户自定义规则的实现。
集成与扩展性 	
     -   CA是基于用户的软件生命周期环境来设计的,通过提供开放的接口,支持与测试管理软件、项目管理软件等集成。CA提供了图形用户界面(GUI)、命令行、外部接口(DLL)等多样化的用户接口,用户可以根据自己的需求,通过图形界面将源代码逐个导入到CA里进行分析,也可以通过SHELL或者批处理命令BAT来调用命令行;通过对外接口API,CA支持根据代码符合规范的程度对程序员编写的代码评分,还可以轻松实现CA和配置管理工具SVN的集成。
代码级测试覆盖 	  
      -  CA支持对源代码进行解析,得到代码的控制流程图,通过对流程图进行代码走查,实现代码级的测试覆盖,轻松实现XUnit单元测试模块的构建。CA还可以通过时间设定,只检验更新的代码,提高效率。
 - 多样化分析报告 	
     -   CA支持控制报告的输出形式,将分析结果返回到日志文件或者将分析结果返回数据库表中,为客户提供进一步处理的资料。包括缺陷统计信息、安全漏洞统计信息、软件架构分析、类关系分析、函数调用关系分析、脚本关系分析、度量分析等。
チェックスタイル
-   CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。
-   CheckStyle检验的主要内容
	-   Javadoc注释
	-   命名约定
	-   标题
	-   Import语句
	-   体积大小
	-   空白
	-   修饰符
	-   块
	-   代码问题
	-   类设计
	-   混合检查(包括一些有用的比如非必须的System.out和printstackTrace)
抽象クラスとインターフェイスの違い:
抽象类要被子类继承,接口要被类实现
接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现
接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
接口是设计的结果,抽象类是重构的结果。
抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。
抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量
抽象类主要用来抽象类别,接口主要用来抽象功能。
リスト
List采用的是异步处理方式,性能高,而Vector采用的是同步处理方式,性能低
List属于非线程安全,Vector属于线程安全
List接口 
  List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组
Map接口
请注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
ベクタークラス
   Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例 如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该 异常。
1. リヒター置換原理の定義
1、里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
2、里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。
3、里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
2. リヒター置換原理の意味
1、子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法
在我们做系统设计时,经常会设计接口或抽象类,然后由子类来实现抽象方法,这里使用的其实就是里氏替换原则。子类可以实现父类的抽象方法很好理解,事实上,子类也必须完全实现父类的抽象方法,哪怕写一个空方法,否则会编译报错。
里氏替换原则的关键点在于不能覆盖父类的非抽象方法。父类中凡是已经实现好的方法,实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些规范,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏。而里氏替换原则就是表达了这一层含义。
2、子类中可以增加自己特有的方法
在继承父类属性和方法的同时,每个子类也都可以有自己的个性,在父类的基础上扩展自己的功能。前面其实已经提到,当功能扩展时,子类尽量不要重写父类的方法,而是另写一个方法
3、当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松

おすすめ

転載: blog.csdn.net/qq_43767886/article/details/106211256