代码检查、评审、单元测试工具 大搜集_代码覆盖率检测工具-程序员宅基地

技术标签: 库、工程、工具用法  单元测试  

——看书真是迅速进入一个陌生领域的最快办法……系统的、体系完整的知识比起在互联网上七拼八凑出的认识强太多了!
先记下一些理论概念……

  • 软件生命周期模型
    分析
    设计与文档
    编码与审查
    测试与调试
    发布与维护

  • 软件测试对象的6种分类:
    单元测试(静态检查、动态测试)
    集成测试
    压力测试
    回归测试
    Alpha测试(系统测试)
    Bete测试(交付测试)

一、大致分类

0.项目集成构建与管理
Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,可以处理任何类型的构建或持续集成

1.团队评审工具
有助于团队通过共同的开发、测试和管理工作以便能生产出高质量代码的代码审查工具。它允许团队在一个透明、协作的框架下进行同行代码审查、用户故事和测试计划——即时保持整个团队知晓对代码所做的更改。
windows下GitHub的安装、配置以及项目的上传过程详细介绍
Tortoise SVN 使用教程
静态代码分析工具列表分析—代码分析工具列表(30款工具)

2.代码审查工具(静态分析)
华为DevCloud(提供指导修复)
三款主流静态源代码安全检测工具比较
静态代码分析工具清单:开源篇(各语言)
开源的C++静态分析工具
代码静态分析工具——splint的学习与使用
cppcheck一个静态C / c++代码分析工具

C++代码质量扫描主流工具深度比较
以下为工具在付费价格、规则数量、准确率、扫描效率、编译依赖、IDE支持、跨平台支持、可扩展开发方面的对比数据。注:本次竞品分析的选择了3款游戏项目(约500万行代码)。
在这里插入图片描述

3.OJ——Online Judge在线判题系统

用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。
OJ大集合

4.代码测试框架、(性能、安全等的单元测试)工具、测试辅助

0.测试数据生成(其余内容在下一节)
生成测试数据神器:使用python的faker库
Java 生成测试字符串的库:Java Faker
测试用例自动化生成工具
一个自动生成测试用例的项目

二、现有具体工具分类

1.软件模拟人工界面操作
AutoRunner (录制动作,生成系统脚本,自动运行的测试工具)

2.单元测试工具——代码段测试、用例自动生成……(官网链接,软件介绍)

parasoft官网(不止java,还有支持包括c++的一众语言):https://www.parasoft.com/
代理商1慧都:https://www.evget.com/supplier/439
代理商2麦克泰:http://www.bmrtech.com/proddetails_91614.html
parasoft Jtest 使用教程:生成、执行和扩展Junit测试
使用 Parasoft Jtest:一款优秀的 Java 代码优化和测试工具
parasoft c++test操作手册

JUnit 是一个回归测试框架,Junit唯一争议的地方便是需要自己编辑测试用例,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量。
java单元测试工具 junit
Junit的基本使用(详解)
Randoop随机测试&自动生成测试用例(它基于Junit格式自动生成测试用例.)

凯乐软件官网:http://www.kailesoft.com/
Visual Unit官方博客:http://www.51testing.com/html/58/35658.html
Visual Unit 简明教程

测试之家:http://www.tlemp.com/
雨田单元测试系统

LDRA:https://ldra.com/
使用LDRA Testbed对代码进行单元测试

星云测试/wings发布版开源:https://gitee.com/teststars/wings_release
c语言单元测试用例全自动生成软件wings介绍
Wings 与 parasoft c++ test 在单元测试用例自动生成能力的比对

3.ide工具
Visual Studio的宏扩展功能(可用来函数测试)
parasoft C++test(VS2010插件版)简明操作手册
单元测试框架 CppTest
Visual AssistX(代码补全、函数提示的好工具)
Visual Studio C++单元测试总结——3种方法可用

4.相关收费产品(百度广告的。)
(1)带有用例库管理的团队管理
测试用例编写工具ONES TestCase
(2)自动化测试
TestStand

5.其他待发掘的工具……

其他总结类文章……
开源单元测试工具汇总
源代码、单元测试工具
一文了解十大 Java 开发者必备测试框架!
常用自动化测试工具
C++ 的单元测试工具 —— Catch

其他工具
Google C++单元测试框架—Gtest框架简介(译文)
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具
单元测试工具IBM Ration Purify
CppUnit测试框架入门
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。
Snaipe/Criterion-一个简单可扩展的 C 语言测试框架

三、各类功能小结

在获取源代码后可以做的工作↓

0.代码规范检查
提供基于内置编码规范的代码检查、基于用户自定义的编码规范的代码检查、自动修复代码规范错误和访问代码规范描述信息等功能。

1.静态程序分析
静态代码分析是指不运行源程序,仅通过分析源程序的语法、结构、接口等来检查程序正确性,找出代码隐藏的缺陷之处。
作为一个多人参与的项目中代码审查过程的一个阶段,因编写完一部分代码之后就可以进行静态分析,分析过程不需要执行整个程序,这有助于在项目早期发现以下问题:变量声明了但未使用、变量类型不匹配、变量在使用前未定义、不可达代码、死循环、数组越界、内存泄漏等。

在获取源代码并配置好环境后可以做的工作↓

2.自动化单元测试
自动建立测试环境,自动生成测试用例以及测试驱动程序和桩函数,自动执行
白盒(自动建立测试驱动程序和桩函数)、
黑盒(根据代码中定义的方法入口参数,自动生成大量黑盒测试用例)
回归测试(只需选择测试项目,即可重复执行原有的白盒和黑盒测试。)。

在获取源代码并设置好用例后可以做的工作↓

3.测试用例的生成与使用管理
测试用例管理
测试用例生成

4.其他功能

代码编写过程中↓
代码审查:的自动代码补全、函数提示。

项目编写过程中↓
团队评审辅助:共同的开发、测试和管理。

四、相关论文或资料:

【《软件测试(第2版)》,作者佟伟光】

关键字:测试用例自动生成
面向java函数调用路径的测试用例生成方法研究
基于动态链接库技术的测试程序实现方法
GUI自动化测试系列(一)测试用例的设计及自动生成
一种软件测试用例自动生成方法与流程
自动生成测试脚本方案浅析

关键字:静态测试软件设计
一种API自动化测试工具的设计与实现

搜索关键词:
测试用例自动生成工具
自动化测试工具
自动生成java测试用例的工具
java函数输入值生成测试工具
单元测试工具

下面这张图是Parasoft中文网上的自夸~(其中包括了很多测试公司)
在这里插入图片描述

五、测试工具(框架)集中整理

太多了:Free Open Source Windows Quality Assurance Software
(博客格式符用起来整理太累,不断更新……以下是还没放进列表的)

Boost.Test, UnitTest++, lest, bandit, igloo, CxxTest, cute
CodeTest :C
RTRT :C,C++,ADA,Java
Cantata :C,C++
Logiscope:C、C++、Java、Ada 等
VectorCast:C,C++,ADA
Tessy :C
AsmTester :汇编
Ounec5.0 扫描语言VB、C、C++、C#、Java,属于付费工具。
Coverity Prevent 扫描语言有C、C++、C#、Java,属于付费工具。
Stake SmartRiskAnalyzer 扫描语言C、C++、Java,属于付费工具。
Flawfinder 扫描语言C、C++、属于付费工具。
Static Code Analyzer 扫描语言C、C++、C#、Java,属于付费工具。
PolySpace Client 扫描语言C、C++、python、perl、php,开源
Fluid 扫描语言Java,开源。
静态代码分析工具清单:开源篇(各语言)
静态代码分析工具清单:开源篇(多语言)
开源静态代码审计软件分析比对

由于可能有重名,建议童鞋们搜索时用公司名+工具名来搜索,比如Parasoft Jtest
其中不乏一些小众、冷门、过气、因年代久远销声匿迹了的(以官网凉了为准)。

软件测试网:http://www.51testing.com

1.动态测试(输出检测)

动态测试工具:动态测试工具的一般采用"插桩"的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。动态测试工具的代表有:Compuware公司的DevPartner软件;Rational公司的Purify系列等。

名称 针对语言 所属公司 开源/商业收费 官网/下载地址 产品形式
googletest(Gtest) c++ google 开源 https://github.com/google/googletest 框架
JUnit java xUnit家族 开源 https://junit.org/ 框架
CUnit C cunit.sourceforge.net/ 框架
Catch C++ 开源 https://github.com/catchorg/Catch2/ 框架
NUnit .NET xUnit家族 开源
CppUnit c++ xUnit家族 开源 https://sourceforge.net/projects/cppunit/ 框架
cpptest (区别于parasoft的c++test) c++ http://sourceforge.net/projects/cpptest
Rational Suite 一大系列 —— IBM 收费
Coverage C/C++ Bullseye 收费
Cactus java 开源
BoundsChecker 开源
VcTester Ada, C/C++ http://www.eztester.com(凉了) 插件
NuMega Devpartner VB、VC++及Java Compuware

2.静态分析(代码质量)

静态测试工具:直接对代码进行分析,生成可执行文件。静态测试工具一般是对代码进行语法扫描,根据某种质量模型评价代码的质量,生成系统的调用关系图等。静态测试工具的代表有:Telelogic公司的Logiscope软件;PR公司的PRQA软件。

http://www.sohu.com/a/225782178_505788
https://www.cnblogs.com/hejing-swust/p/9451512.html

名称 针对语言 所属公司 开源/商业收费 官网/下载地址 产品形式
c++check(cppcheck) c++ —— —— https://sourceforge.net/projects/cppcheck http://cppcheck.sourceforge.net http://cppcheck.net/demo(在线试用) vs插件/应用/在线
Olink(Pork) c++ Mozilla —— http://danielwilkerson.com/oink/index.html
Dehydra c++ Mozilla —— https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Dehydra
C and C++ Code Counter c++ http://sourceforge.net/projects/cccc/
Splint c++
Weff++ for GNU g++的选项功能 c++
Klocwork c++ 收费
Gimpel c++ 收费
Coverity c++ 收费
SCA 很多 Fortify Software 收费
CxSuite 很多 Checkmarx 收费
CodeSecure ASP.NET、JAVA、PHP Armonize 收费
Hypersource JAVA art of defence
Prevent JAVA .NET C/C++ Coverity
Flawfinder C/C++ 开源
CodeSonar(集成了FindBugs、Checkstyle、PMD) C/C++ Grammatech http://www.51testing.com/html/51/10851-76264.html
DevInspect JAVA HP http://www.51testing.com/html/51/10851-76264.html
PC-Lint C/C++ 商用
Hammurapi java 开源
Lint4 java 开源
JDepend java 开源
BEAM(IBM Checking Tool for Bugs Errors and Mistakes) 商用
Yasca 开源
Inspector for JAVA JAVA SofCheck
KlocWork JAVA .NET C/C++,C# Insight
Ounce 6 JAVA .NET Ounce Labs
SecurityReview JAVA .NET Veracode
Prefast 微软 在Visual Studio的团队版本中,使用Prefast,打开Project Properties --> Configuration Properties --> Code Analysis -->Enable Code Analysis For C/C++ on build。选择 Yes(/analyze)即可。
Ncover Explorer(代码覆盖率分析)

~.综合应用

综合类(成套工具,测试同时包含静态分析,而非单纯框架)

名称 针对语言 所属公司 开源/商业收费 官网/下载地址 产品形式
c++test c++ parasoft 收费 https://www.parasoft.com/ vs插件/应用
Jtest java parasoft 收费 https://www.parasoft.com/ 应用
TestStand national instructments 有试用版 http://www.ni.com/zh-cn/shop/electronic-test-instrumentation/application-software-for-electronic-test-and-instrumentation-category/what-is-teststand.html?cid=Paid_Search-128991-China-BaiDu_TSD1_test_system
Logiscope
NuMega
Testbed C,C++,ADA,Cobol LDRA

小众、国产的:

名称 针对语言 所属公司 开源/商业收费 官网/下载地址 产品形式
雨田单元测试系统 C 试用收费 http://www.tlemp.com(凉半截) 应用
Visual Unit C++ 凯乐软件 http://www.kailesoft.com/ 应用
iUnit 湖南泛联新安 http://www.ubisectech.com/html/iUnit/index.html 应用
一系列 泽众软件 http://www.spasvo.com/
思客云 http://www.secureyun.cn/
云效-测试平台 阿里云 https://www.aliyun.com/product/yunxiao-testing
测试服务 WeTest 腾讯云 https://cloud.tencent.com/product/wetest
Testin 北京云测信息技术有限公司 https://www.testin.cn/
DT10 trinity http://www.trinitytec.com.cn/

3.软件测试工具(脚本录制与回放)

黑盒测试工具(功能自动化测试工具、软件测试工具)的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作。黑盒测试工具的代表有:Rational公司的TeamTest、Robot;Compuware公司的QACenter。

https://blog.csdn.net/henu_xk126com/article/details/81868591#commentBox
执行重复的手动测试——自动化执行测试用例取代人工执行测试用例

名称 所属公司 官网/下载地址 产品特点 针对方向
WinRunner 微软 windows系统软件
Mercury QuickTest Pro
SilkTest
Selenium
TPT Web自动化测试
QTP WEB自动化测试
AutoRunner 泽众软件 http://www.spasvo.com/autorunner
Watir
Selenium WEB自动化测试
MaxQ
WebInject
SoapUI 接口自动化测试
postman 接口自动化测试
robotium 手机自动化测试
appium 手机自动化测试

4.性能测试工具(预测系统行为和性能的负载测试工具)

MercuryInteractive的LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。

开源性能自动化测试工具:
Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator

名称 所属公司 官网/下载地址 产品特点 针对方向
LoadRunner MercuryInteractive
jmeter 开源

5.测试管理工具

测试管理工具对测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。测试管理工具的代表有:Rational公司的TestManager;Compureware公司的TrackRecord;Mercury Interactive公司的TestDirector等软件。

名称 所属公司 官网/下载地址 产品特点 产品形式
·Kiwi TCMS http://kiwitcms.org/ 开源
TestLink http://www.testlink.org/ 开源
TestCaseDB http://www.testcasedb.com 开源
Itest(国产) itest studio https://www.cnblogs.com/mypm/p/10649526.html https://itest.work/demo/ 网页版
飞蛾 CODING https://feie.work/
禅道项目管理系统 https://www.zentao.net/ 开源
Bugzilla https://www.bugzilla.org/
TestCenter (测试管理工具) http://www.opdown.com/soft/110667.html
腾讯Bugly https://bugly.qq.com/v2

以上于2019-10-12 23:11:49


以下更新于2022-1-29

来源《军用电源模块自动化测试系统的设计与实现》
Compuware 白盒测试工具

工具名 支持语言环境 简介
BoundsChecker C+、Delphi API 和 OLE 错误检查、指针和泄露错误和内存错误检查
ThueTime C+、Java、Visual Basic 代码运行效率检查、组件性能的分析
FailSafe Visual Basic 自动错误处理和恢复系统
Jcheck MS Visual J++ 图形化的线程和事件分析工具
TureCoverage C+、Java、Visual Basic 函数调用次数、所占比率统计以及稳定性
SmartCheck Visual Basic 函数调用次数、所占比率统计以及稳定性
CodeReview Visual Basic 自动源代码分析工具

常见黑盒功能测试工具

工具名 公司名
WinRunner Mercury Interactive
Astra Quicktest Mercury Interactive
LoadRunner Mercury Interactive
Robot IBM/Rational
TeamTest IBM/Rational
QARun Compuware
QALoad Compuware
SilkTest Segue Software
SilkPerformer Segue Software
e-Test Empirix
e-Load Empirix
WAS MS
WebLoad Radview
OpenSTA OpenSTA

3、测试管理工具
测试管理工具用于对测试进行管理。一般而言,测试管理工具负责对测试计划、测试用例、测试实施进行管理、对产品缺陷跟踪管理、产品特性管理的等。
测试管理工具的代表有 Rational 公司的 TeamManager,Compuware 公司的TrackRecord、Mercury Interactive 公司的 TestDirector 等软件。
除此之外,还有专用于性能测试的工具包括有:Radview公司的WebLoad:Microsoft 公司的 WebStress 等工具;针对数据库测试的TestBytes;对应用性能进行优化的 EcoScope 等工具。

4、各种流程指导书

*各测试类型的测试方法作业指导书
文档审查作业指导书
代码审查作业指导书
静态分析作业指导书
代码走查作业指导书
逻辑测试作业指导书
功能测试作业指导书
性能测试作业指导书
接口测试作业指导书
API 接口测试脚本设计及实现作业指导书
人机交互界面测试作业指导书
强度测试作业指导书
余量测试作业指导书:
安全性测试作业指导书
恢复性测试作业指导书
边界测试作业指导节
数据处理测试作业指导书
安装测试作业指导书
容量测试作业指导书
互操作性测试作业指导书

*各测试活动作业指导书
测试需求分析作业指导书
测试策划作业指导书
测试设计和实现作业指导书
测试现行作业指导书
测试总结作业指导书
用章管理作业指导书

*工具使用作业指导书
LoadRunner 使用作业指导书
QTP 使用作业指导书
C++Test 使用作业指导书
Logiseqpe 使用作业指导书
QC 使用作业指导书
Selenium 作业指导书
Klaework 使用作业指导书
JACOCO 使用作业指导书

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_27382047/article/details/102485270

智能推荐

西门子HMI SMART 700 IE 设备概况以及WinCC flexible 2008常用配置小记-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏32次。——参考自:SIMATIC HMI设备 Smart 700 IE、Smart 1000 IE 操作说明HMI 设备一旦探测到操作员控件被触摸就会立即返回一个反馈。该反馈是独立的,与 PLC 的通讯无关。 因此,其并不指示相关动作是否已真正执行。设计Smart Panel 700 IE是Smart Panel 700的升级版。连接HMI与PC连接组态PC与SMART PANEL有两种连接方式,一种是通过 RS485/422 接口连接,另一种是通过以太网接口连接,后者接线图如下图所示:HM_wincc flexible 2008

设备驱动模型(kobject、kset、ktype)_kobject kset ktype-程序员宅基地

文章浏览阅读570次。转自https://blog.csdn.net/guet_kite/article/details/78368928设备驱动模型概述Linux早期时候,一个驱动对应一个设备,也就对应一个硬件地址,那当有两个一样的设备的时候,就要写两个驱动,显然是不合理的。应该是从Linux2.5开始,就引入了device-bus-driver模型。其中设备驱动模型主要结构分为kset、kobject、kty..._kobject kset ktype

关于换行以及换行属性_nowarp也会换行-程序员宅基地

文章浏览阅读1.9k次。对于CSS的white-space属性,我想大部分人应该和我差不多,最常用的就是nowrap属性,最多用来做超长省略号显示的时候会用到【hiahiahia~】起因是这样的:产品doggie策划了一个元旦活动,活动主页最下边需要显示配置的活动规则,注意,是配置的活动规则,所以,免不了运营小妹要在后台配置一个活动规则,肯定不指望她们能配置html文本的呀,对吧,于是她们配置的是这样的: 1、封垫苏菲房间都是克拉夫; 2、对方萨芬的刷分放大; 3、粉打发打发打发这样色的,于..._nowarp也会换行

BRVAH万能适配器_andriod brvah适配器万能官网-程序员宅基地

文章浏览阅读353次。BRVAH一.简介二.使用一.简介BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。二.使用在使用时,首先要项目的build.gradle导入allprojects { repositories { google() jcenter() ..._andriod brvah适配器万能官网

计算机文化基础作品ppt,计算机文化基础PPT课件-程序员宅基地

文章浏览阅读91次。计算机文化基础PPT课件2019-03-15计算机文化基础PPT课件 第1章http://wenku.baidu.com/view/e7ef8b6925c52cc58bd6be97.html计算机文化基础PPT课件 第2章 Windows 2000操作系统http://wenku.baidu.com/view/e85671f5f61fb7360b4c6594.html计算机文化基础PPT课件 ..._计算机文化基础ppt

获得迭代器最后一个元素_处理迭代器最后一个元素-程序员宅基地

文章浏览阅读3k次。来源python123获得迭代器最后一个元素问题尝试使用 * 迭代器展开运算,返回 range(0, 1000, 4) 的最后一个元素。print([x for x in range(0,1000,4)][-1])输出:996..._处理迭代器最后一个元素

随便推点

第七章 PX4-Pixhawk-Mavlink解析_px4 mavlink 波特率-程序员宅基地

文章浏览阅读5.2k次,点赞3次,收藏25次。第七章 PX4-Mavlink解析首先我们是还是来说一说mavlink吧。Mavlink协议是无人机的一种开源通信协议。可以理解就是按照一定的格式来发送数据。这一章节涉及到了消息的打包发送和接收解析。 首先我们还是找到入口函数然后回到脚本启动中找到mavlink的启动,这个找到应该不难吧,前面几章都有这个。这里有一个需要提一下,很多_px4 mavlink 波特率

Python 中RSA的用法 使用pyOpenssl 生成RSA密钥对, 使用rsa 加解密_import base64 import rsa from openssl.crypto impor-程序员宅基地

文章浏览阅读1.6k次,点赞4次,收藏8次。1. pyOpenSSL 生成RSA密钥对, 效率比较高2. rsa 加解密方法简单3. 代码import rsaimport base64from OpenSSL.crypto import PKeyfrom OpenSSL.crypto import TYPE_RSA, FILETYPE_PEM, FILETYPE_ASN1from OpenSSL.crypto import dum..._import base64 import rsa from openssl.crypto import pkey from openssl.crypto

Android 架构设计(四):组件化?_android 组件化 去除相关组件-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏3次。同系列传送门Android 架构设计(一):设计模式分析_赵星海的博客-程序员宅基地Android 架构设计(二):分包和文件结构_赵星海的博客-程序员宅基地_android 分包结构Android 架构设计(三):技术选型_赵星海的博客-程序员宅基地关于组件化,我这边分三步与大家分享:1定义,2需求,3优劣,4改造步骤(含框架推荐);1、组件化的定义:各个业务模块可单独运行,模块相互联系只可以使用唯一的入口。如图:2、当前项目是否需要采用组件化?首先看项目大小,.._android 组件化 去除相关组件

通过设置偏移 添加RecyclerView分隔线_rv_list.additemdecoration(new recyclerviewdivider距-程序员宅基地

文章浏览阅读701次。添加RecyclerView分隔线_rv_list.additemdecoration(new recyclerviewdivider距离左侧

深入理解计算机系统--计算机系统漫游_深入理解计算机系统 jeancheng-程序员宅基地

文章浏览阅读282次。第一章 计算机系统漫游 计算机系统是由硬件和系统软件组成的。所有计算机系统都是由相似的硬件和软件组成,它们又执行着相似的功能。 以hello程序为例。 1.1信息就是位+上下文 hello程序的生命是从源程序(源文件)开始的。源程序是程序员编写的,hello.c。源程序是 0和1 的比特位,8个一组。ASCII标准来表示文本字符。 这样的文件称为文本文件,所有其他_深入理解计算机系统 jeancheng

python读取json字符串_json数据处理:读取文件中的json字符串,转为python字典-程序员宅基地

文章浏览阅读1.4k次。方法1:读取文件中的json字符串,再用json.loads转为python字典import jsonstr_file = ‘./960x540/config.json‘with open(str_file, ‘r‘) as f:print("Load str file from {}".format(str_file))str1 = f.read()r = json.loads(str1)pri..._python 提取json元素 获取两个字段的值组成字典