`
kuwoleft
  • 浏览: 1076626 次
文章分类
社区版块
存档分类
最新评论

自动化测试知识体系(ABOK)

 
阅读更多

<!-- [if !mso]> <mce:style><!-- v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} -->作为一名专业的自动化测试工程师,不应该仅仅局限于对工具的掌握和使用,应该建立测试的自动化知识体系( ABOK ): http://www.automatedtestinginstitute.com/home/index.php?option=com_content&view=category&id=69&Itemid=95


Automation Body of Knowledge (ABOK) 自动化知识体系

The Automation Body of Knowledge is a tool-independent skill set designed to help software test automation professionals address automation challenges that are present in the world of software testing. (ABOK是独立于工具的技巧集,设计的目的是帮助软件测试自动化工程师处理现实世界中的软件测试自动化的挑战。)Automated Software Testing is a discipline that is separate from Manual Software Testing, and must be treated as such.(软件自动化测试应该作为一个独立于手工测试的学科出现。) The ABOK acknowledges this, and provides engineers with a way to assess, improve, and better market their test automation skills more effectively than tool-specific benchmarks can do alone. This body of knowledge may also be used by organizations as specific criteria for more effectively assessing resources and establishing career development tracks. Not every automation engineer is required to be proficient in every one of the ABOK skill categories, but knowledge of the different skill categories is essential in the continued improvement, growth and development. It is recommended that each test automation effort, however, have a team that represents most, if not all of these skills, whether the team is composed of one or many resources.

The Skill categories are listed below, and may be clicked on to get a summary of each category. Skill categories1 through7 (macroscopic) include skill concentrations for automated test leads, while skills8 through12 (microscopic) include skill concentrations for automated test engineers. Given the state of many software projects, the Test Lead depends on the Automation Engineer for answers regarding automation planning, therefore the Automation Engineer may also want to consider a concentration in skills1 through7 as well.

Skill Category 1: Automation's Role in the STLC 自动化在软件测试生命周期( STLC )中的角色

Being successful in test automation first requires an understanding of what test automation is, and where it fits into the overall testing lifecycle.

Difference between software testing and software test automation 软件测试自动化与软件测试之间的区别

Software Testing is a discipline in which test logic is designed to be implemented by a human being. As opposed to, Software Test Automation designs script logic that allows that manual test logic to be implemented by a tool. An expansion of this concept asserts that software test automation involves tool support for all aspects of a test project, not just automation of test execution. With that being said, as a test automator, you should be aware of all phases of the testing lifecycle, along with tools that support those phases.

Test Tool Acquisition and Integration 测试工具选购与整合

The Test Tool Acquisition is the process of identifying the tool goals and objectives, making an effective business case and narrowing down a group of candidate tools to the selection(s) that best meet(s) the organizational needs. Test Tool Integration is, conversely, the process of gradually addressing tool considerations and widening the tool’s acceptance, use and benefits.The various sources provide extensive directions on how to conduct the tool selection and acquisition process. Most sources will agree, however, that this process should at a minimum include the following:

  • Making a well-informed decision to automate
  • Conducting a test tool evaluation
  • Addressing tool implementation considerations
  • Piloting the tool implementation

Often, organizations are pushed into making a decision about the introduction or expansion of test automation based on the ability to buy a specific automated test tool. It’s important to expand your vision to be able to identify several options – both commercial and non-commercial – and to be knowledgeable on how to perform an effective evaluation of these options so that a more informed decision can be made about test automation implementation.

Automation Benefits and Misconceptions 自动化的益处与误解

Behind every decision to introduce test automation is a wide variety of stated or implied goals and expectations for what the automation must accomplish. Without a proper understanding of reasonable test automation goals, the automation effort will not survive, and will be destined to sit on the proverbial shelf of your test organization. Understanding the impact of test automation means having a firm grasp on the benefits of test automation, accompanied by an understanding of the common misconceptionssurrounding test automation. Being equipped with this knowledge helps a Test Automator more effectively implement a test automation effort, “sell” the automation to the powers-that-be by presenting and tracking a business case, and manage effort-ending misconceptions and unrealistic expectations held by the organization decision makers.

Automation Return-on-Investment (ROI) 自动化的 ROI 计算

Software test automation is an investment in time and money, and like any investment, the stakeholders – normally managers or customers – are expecting a positive return from that investment. If their expectations are not sufficiently met, stakeholders will probably discontinue the investing in automation. The investment is justified by identifying the potential return-on-investment (ROI), a ratio of benefits to costs. There are several approaches for calculating ROI including:

  • Simple ROI Calculation – A percentage calculated in terms of the monetary savings that test automation provides.
  • Efficiency ROI Calculation – Examines test automation benefits in terms of time that is saved on certain portions of the testing effort.
  • Risk Reduction ROI Calculation – A percentage calculated in terms of the increased quality that results from the increased test coverage provided test automation.

Skill Category 2: Test Automation Types and Interfaces 测试自动化的类型和接口

Test Automation Types 测试自动化的类型

For simplicity the different types of test automation – functional (regression), unit, integration, performance, etc. – are often lumped into one ‘test automation’ category. It’s important to understand some of the basic differences among these different types, even if you don’t specialize in all of them, so that you can speak intelligently about them when questioned by members of the organization. Since all automators are often “painted with the same brush”, being totally oblivious to basic concepts in each type of automation can negatively impact all automation efforts in the organization. In addition, being able to display minimal knowledge in various types of automation may provide management with enough confidence in you to allow you to pilot a new automation effort, which would help you to ultimately expand your skills.

Test Automation Interfaces 测试自动化的接口

The main interfaces made available for application automation are:

  • Command Line Interface 命令行接口
  • Application Programming Interface 应用程序编程接口
  • Graphical User Interface 图形用户界面

The Graphical User Interface is probably the most popular interface for automation implementation, due to the fact if more closely simulates how a user might use the tool. The Command Line Interface and Application Programming Interface, however, are advantages given the fact that they make it simpler to implement test automation.

Skill Category 3: Automation Tools 自动化工具

Atest automation professional also must be prepared to provide insight into tools that support all aspects of the testing lifecycle. This requires an understanding of the different types and categories of tools that support the testing lifecycle, as well as the criteria for assessing these different types of tools.

These different types of tools include:

  • Software Configuration Management Tools
  • Business/System Modeling Tools
  • Requirements Management Tools
  • Unit Testing Tools
  • Test Management Tools
  • Defect Tracking Tools
  • Code Coverage Analyzer Tools
  • Functional System Test Automation Tools
  • Performance System Test Automation Tools

Skill Category 4: Test Automation Frameworks 测试自动化框架

Automation Scope 自动化的范围

Total automation cost is composed of both development costs and maintenance costs. (自动化的成本由开发成本和维护成本组成) As the automation framework becomes more defined, scripting increases in complexity. While this causes development costs to increase, it also causes maintenance costs to decrease. As the scope widens, maintenance becomes increasingly important. (随着测试范围的扩大,维护成本变得重要起来) Also, as maintenance becomes increasingly important, the automation framework must be more advanced in order to reduce total automation costs. Therefore, before making a determination of the framework that will be used for test automation, an evaluation must be conducted on the implied and/or stated scope of the organization’s automation effort.

Roles and Responsibilities 角色和职责

Each framework type will have one or more of the following roles for creation and implementation of the framework:

  • Team Lead 测试主管
  • Test Engineer 测试工程师
  • Lead Automation Architect 自动化测试架构师
  • Cross Coverage Coordinator 组织协调人员
  • Automation Engineer (Automator) 自动化测试工程师

Very often, one person may hold multiple roles.

Framework Generations 框架的发展

Over the years, automated testing has evolved, becoming increasingly defined and sophisticated with each new evolutionary phase. This evolution may be discussed in terms of three generations:

<!-- [if !supportLists]-->· <!-- [endif]-->First Generation – This generation is what this book refers to as the Common Approach. It is primarily driven by record and playback. 第一代 – 录制回放

  • Second Generation – The second-generation learns from the problems of the first generation. It involves creating a framework in which to automate tests. It also incorporates the concepts of functional decomposition, which simply means creating modular functions for executing fundamental actions that occur in the execution of the tests in a given test bed. These actions may then be called upon and executed independent of one another. This generation also more greatly separates test data from automation code, through greater use of parameterization. 第二代 功能分解

<!-- [if !supportLists]-->· <!-- [endif]-->Third Generation – The third-generation of automation builds upon the concepts of the second generation. It strongly depends on functional decomposition, but evaluates the functions at a much higher level of abstraction, so that code may be reused by tests within the same application, and by tests in different applications. This is accomplished by separating test data and specific application functionality from automation code. 第三代 – 数据与代码分离

During the design phase a determination must be made about which generation will define your automated test framework.

Skill Category 5: Automation Framework Design 自动化框架设计

The process of designing an automated test framework is not an exact science. It is possible to definitively identify the different types of frameworks, but the process used to select and implement a particular framework is a little more difficult to pinpoint in such a way that most of the industry experts agree. The most important thing however, at this point in automation history is to ensure that a well thought out approach based on common, successfully implemented industry practices is used and honed within a given organization. This skill category identifies an approach, from a high enough level that it will fit with where the IT industry currently is relative to test automation, while still remaining low-level enough to be useful for implementation. This approach involves the following steps:

  1. Selecting a FrameworkType 选择框架类型
  2. Identifying FrameworkComponents 确定框架组成部分
  3. Identifying FrameworkDirectory Structure 确定框架目录结构
  4. Developing Implementation Standards 建立实施标准
  5. Develop Automated Tests 开发自动化测试

Skill Category 6: Automated Test Script Concepts 自动化测试脚本思想

Test Selection 测试用例选择

Choosing what and when to automate involves an analysis of the following:

  • Automate items that are tedious for manual execution, but relatively easy to automate. 对于那些手工测试比较繁琐而又容易实现自动化的优先考虑自动化实现。
  • Items that need to be executed over and over again. 对于那些需要重复又重复执行的测试用例实现自动化。
  • Items that will increase coverage beyond what will realistically be done manually 对于那些能有效提高测试覆盖率的测试用例实现自动化。

In addition, the decision depends on the goals of the organization such as cost goals, efficiency goals, and risk mitigation goals.

Automated Test Design and Development 自动化测试的设计和开发

Automated test design and development are tied directly to the interface in which the tests will be created, the way quality attributes are applied at the test level, the elements that are common to automated tests, and the standards used for creation of tests.

Automated Test Execution, Analysis and Reporting 自动化测试的执行、分析和报告

The biggest items to address regarding test execution are:

  • How many machines will be used for automated test execution
  • Error handling
  • How the results are reported and analyzed

Skill Category 7: Quality Attribute Optimization 质量优化

This category defines various quality attributes of the automated test suite and identifies ways of addressing these attributes based on priorities and constraints surrounding each.

The following are some Quality Attributes that may be considered.

  • Maintainability
  • Portability
  • Flexibility
  • Robustness
  • Scalability
  • Reliability
  • Usability
  • Performance

Skill Category 8: Programming Concepts 编程思想

Whether you use a tool with a scripting language, tree structure and/or keywords, fundamental programming concepts remain paramount in effectively automating tests, and increasing the distance the test can cover through increased system coverage and test flexibility. Concepts such as variables, control flow statements (if..then..else, for..next, etc.), and modularity are discussed in this category.

Skill Category 9: Automation Objects 自动化对象

Recognizing Application Objects 识别应用程序对象

Once upon a time, functional software test automation primarily used an “analog” approach that relied on specific coordinate locations of a screen or application window for performing mouse and keyboard operations that simulated user activities on the application. This was slightly unreliable, and difficult to maintain on a large scale, because when the screen, window or application components moved ever so slightly, the automated test would fail because it was trying to operate on an element in a position in which it no longer existed. Modern test automation conversely takes a different approach that locates the objectson the screen based on propertiesthat define that object and then performs the desired operations once the object is found.

Object Maps 对象映射

One of the simplest ways to boost the maintainability and robustness of an automated test suite is through the introduction of Object Maps. Object Maps reduce the amount of information that is being maintained in an automated test by storing object properties in an external file and referencing objects according to variable names (also known as Logical Names) that are then tied to the properties.

Object Models 对象模型

Many software applications are composed of several interrelated objects, and an object model is an abstract representation of the hierarchical group of related objects that define an application and work together to complete a set of application functions. The advantages offered by object models include:

<!-- [if !supportLists]-->· <!-- [endif]-->Increased application understanding

<!-- [if !supportLists]-->· <!-- [endif]-->Increased scripting power

Dynamic Object Behavior 动态对象行为

One of the biggest challenges faced by automated test engineers is that of dynamic object behavior. People process information about the application based on visual inspection, while automated tests use object properties. People can, therefore, easily make adjustments when there is a slight change from a visual standpoint, and can ignore many property changes. The computer, however, cannot adjust as easily. The necessary adjustments have to be anticipated up front and programmed.

Skill Category 10: Debugging Techniques 调试技巧

Types of Errors 错误类型

Regardless of how well automated tests are designed and created, problems will occur. Sometimes the problems are related to the scripts, and sometimes they are related to the application, but the root cause is not always simple to find. The inability to effectively debug scripts can severely delay schedules, and can even bring automation to a screeching halt. The first step in script debugging is in understanding the types of errors that may be encountered. There are 4 main generic types of errors that may be encountered upon script execution:

  • Syntax Errors 语法错误
  • Run-time Errors 运行时错误
  • Logic Errors 逻辑错误
  • Application Errors 应用程序错误

Debugging Techniques 调试技巧

The trickiest part of debugging is finding out the true source of an error. This involves ensuring the error is reproducible, and then the process of finding the main source of the error must begin. Very often what seems to be the source of the error is actually just a symptom of the true error, so there are several techniques that may be employed to find the source of an error. At that point a determination may be made on whether or not the error is due to an application failure or a script issue. Then solutions for fixing the error may be addressed.Effective debugging typically mirrors the following process:

  • Identifying error existence 识别错误
  • Reproducing the error 重现错误
  • Localizing the error 定位错误
  • Fixing the error 修正错误

Skill Category 11: Error Handling 错误处理

Error Handling Implementation 错误处理的实现

Error handling is implemented in a variety of ways within automated test scripts, most of which can be summarized in the following three categories:

  • Step Implementation
  • Component Implementation
  • Run Implementation

Error Handling Development 错误处理脚本的开发

Error handling routines are critical for test automation, particularly for effectively resolving runtime errors and other unexpected system events, because excessive runtime errors are the enemy of test automation robustness. The figure below illustrates an error handling development process that may be used for implementing a successful error handling approach. These steps include:

  • Diagnose Potential Errors 诊断出潜在的错误
  • Define Error Capture Mechanism 定义错误捕获机制
  • Create Error Log Data 建立出错日志
  • Create Error Handler Routine 创建错误处理函数

<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:456.75pt; height:244.5pt'> <v:imagedata src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image001.png" mce_src="file:///C:/DOCUME~1/testware/LOCALS~1/Temp/msohtml1/01/clip_image001.png" o:href="http://www.automatedtestinginstitute.com/home/images/stories/ErrorHandling.png"/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

Skill Category 12: Automated Test Reporting 自动化测试报告

Test reporting and analysis is an extremely repetitive process, yet can be extremely time consuming. This category addresses what types of reports could be generated and how to effectively produce these reports, so that time may be saved in the analysis and reporting. The categories of reports that may be generated by an automated test framework include:

<!-- [if !supportLists]-->· <!-- [endif]-->High-level (Suites/Tests) reports 高层(测试集/测试脚本)报告

<!-- [if !supportLists]-->· <!-- [endif]-->Low-level (Verification Points) reports 底层(验证点)报告

分享到:
评论

相关推荐

    3D 绳结 Knots 3D 7.0.3 中文多语免费版.zip

    •按类别浏览或按名称,常用同义词或ABOK#搜索。 •支持横向和纵向模式以及全屏(放大一个结可查看更多细节)。 •观看结会自动结结,并随时暂停或调整动画的速度。 •在360度3D视图中旋转结,以便用手指轻扫从任何...

    Prof Lua:用于创建地下供暖系统剖面的工具-开源

    用于创建地下供暖系统配置文件的工具 Описание на русском языке(对俄罗斯语言的描述):http://forum.abok.ru/index.php?showtopic=117999

    基于matlab实现的空间调制通信过程,包含信号调制、天线选择等发送过程,以及采用最大似然估计的检测过程 .rar

    基于matlab实现的空间调制通信过程,包含信号调制、天线选择等发送过程,以及采用最大似然估计的检测过程。.rar

    基于matlab的关于生猪养殖场经营管理的研究.docx

    本文档是课题研究的研究报告内含调研以及源码设计以及结果分析

    网络作为特征提取器-python源码.zip

    网络作为特征提取器-python源码.zip

    JavaScript-javaweb项目

    JavaScript-javaweb项目

    node-v12.11.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    仿Slideby触屏版html5响应式手机wap网站模板下载.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    node-v10.18.1-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    IEC 60695-11-3:2012.pdf

    IEC 60695-11-3:2012.pdf

    2021-2010上市公司和讯网社会责任评级CSR-股东员工客户消费者环境社会责任分项评级

    上市公司和讯网社会责任评级CSR-股东责任员工责任客户消费者环境社会责任分项评级 得分(2010-2021年) "中国上市公司-和讯网社会责任数据"是 一份来自和讯网的数据集,它同步并收集了中国上市公司关于社会责任的相关信息。包括了 公司在股东责任、员工责任、供应商客户消费者权益责任、环境责任、社会责任中的表现和 成绩,以反映公司承担社会责任的程度。可以帮助大家了解公司在承担社会责任方面的具体 表现。这对于研究公司社会责任与公司业绩、公司声誉、公司风险等方面的关系具有参考意 义。 一、数据介绍 数据名称:上市公司和讯网社会责任评级CSR-股东责任员工责任 客户消费者环境社会责任分项评级得分 数据年份:2010-2021年 样本数量:每 年含2300-4600左右上市公司数据,总数据量40058条(注:因披露口径原因 ,2021年仅有430+上市公司数据) 数据格式:Excel面板数据 二、指标说 明 共计11个指标:股票名称、股票代码、年份、总得分、等级、股东责任、员工责任、 供应商客户和消费者权益责任、环境责任、社会责任、统计日期 三、部分excel数据 展示

    使用opencv进行人脸识别和对比-python源码.zip

    使用opencv进行人脸识别和对比-python源码.zip

    EmotionVGGnet情绪识别-python源码.zip

    EmotionVGGnet情绪识别-python源码.zip

    node-v12.1.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    MediaPipe人体姿势估计-python源码.zip

    MediaPipe人体姿势估计-python源码.zip

    构造并使用决策树进行分类-python源码.zip

    构造并使用决策树进行分类-python源码.zip

    <2024年5月软考高项极限冲刺>《1 考试简介》

    <2024年5月软考高项极限冲刺>《1 考试简介》

    【特效超多】仿德国开元旅游触屏版html5手机wap旅游网站模板下载.zip

    【特效超多】仿德国开元旅游触屏版html5手机wap旅游网站模板下载.zip

    JSP基于WEB网上论坛设计与实现(源代码+论文+开题报告+答辩PPT+外文翻译).zip

    JSP基于WEB网上论坛设计与实现(源代码+论文+开题报告+答辩PPT+外文翻译)

    仿YOKA服饰美容3G手机wap女性网站模板.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

Global site tag (gtag.js) - Google Analytics