<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ JunoWei - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ freeCodeCamp 是一个免费学习编程的开发者社区，涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等，还有活跃的技术论坛和丰富的社区活动，在你学习编程和找工作时为你提供建议和帮助。 ]]>
        </description>
        <link>https://www.freecodecamp.org/chinese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ JunoWei - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/chinese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 26 May 2026 16:03:41 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/chinese/news/author/junowei/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ 云计算概述：初学者入门指南 ]]>
                </title>
                <description>
                    <![CDATA[ 随着数字化领域和科技的不断发展，云计算仍然是一个重要议题，值得开发人员学习。 你可能会在岗位招聘中遇到关于“云”的相关需求，可能会在对话中听到关于“云”的相关讨论，可能会在云服务商发布的广告中看到关于“云”的相关宣传，现在你对“云”充满好奇，想要知道更多。 在这篇文章中，我会将复杂的概念分成简单易懂的小模块，让你更加容易理解“云”。 这是本文中涉及的主要内容：  * 云计算出现前的世界  * 云计算是什么  * 云服务供应商  * 云服务类型  * 云计算助力解决的难题  * 云计算是如何帮助我们的  * 云计算部署模式 让我们从学习云计算的基础内容开始，然后你可以在云计算这个持续发展的领域深入学习。 云计算出现前的世界 要理解云计算，必须先理解云计算试图解决的问题。这将有助于你了解云计算的历史，并感激它为技术世界带来的便利。 “云”出现以前，部署网络服务曾是一个昂贵的过程。为了部署一套网络应用程序，首先需要采购符合存储要求的服务器，然后找到合适的空间存放，搭建好服务器后才能使用服务器托管应用程序。 除了服务器的购置费，为了维持服务器不间断运行并持续在线，后续还会有很多 ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/what-is-cloud-computing/</link>
                <guid isPermaLink="false">6603efb86f02f80413b53a43</guid>
                
                    <category>
                        <![CDATA[ 云计算 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ JunoWei ]]>
                </dc:creator>
                <pubDate>Wed, 27 Mar 2024 10:33:45 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2024/03/cloud-sky.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/what-is-cloud-computing/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What is Cloud Computing? Introduction to the Cloud for Beginners</a>
      </p><!--kg-card-begin: markdown--><p>随着数字化领域和科技的不断发展，云计算仍然是一个重要议题，值得开发人员学习。</p>
<p>你可能会在岗位招聘中遇到关于“云”的相关需求，可能会在对话中听到关于“云”的相关讨论，可能会在云服务商发布的广告中看到关于“云”的相关宣传，现在你对“云”充满好奇，想要知道更多。</p>
<p>在这篇文章中，我会将复杂的概念分成简单易懂的小模块，让你更加容易理解“云”。</p>
<p>这是本文中涉及的主要内容：</p>
<ul>
<li><a href="#the-world-before-cloud-computing">云计算出现前的世界</a></li>
<li><a href="#what-is-cloud-computing">云计算是什么</a></li>
<li><a href="#cloud-service-providers">云服务供应商</a></li>
<li><a href="#different-cloud-services">云服务类型</a></li>
<li><a href="#challenges-that-cloud-computing-helps-solve">云计算助力解决的难题</a></li>
<li><a href="#how-can-cloud-computing-help-you">云计算是如何帮助我们的</a></li>
<li><a href="#cloud-deployment-models">云计算部署模式</a></li>
</ul>
<p>让我们从学习云计算的基础内容开始，然后你可以在云计算这个持续发展的领域深入学习。</p>
<h2 id="the-world-before-cloud-computing">云计算出现前的世界</h2>
<p>要理解云计算，必须先理解云计算试图解决的问题。这将有助于你了解云计算的历史，并感激它为技术世界带来的便利。</p>
<p>“云”出现以前，部署网络服务曾是一个昂贵的过程。为了部署一套网络应用程序，首先需要采购符合存储要求的服务器，然后找到合适的空间存放，搭建好服务器后才能使用服务器托管应用程序。</p>
<p>除了服务器的购置费，为了维持服务器不间断运行并持续在线，后续还会有很多额外支出，譬如电费和保持服务器启动和在线所需的数据。同时还有安全问题，需要避免服务器遭到恶意破坏和盗取信息。</p>
<p>除此之外，大多数的开发人员都不是精通服务器的专家，所以要么培养开发人员做系统管理者，要么招聘系统管理的专职人员，负责搭建配置服务器保证应用程序的稳定运行。而安装部署一套新的应用程序，需要重复整个过程并产生新的费用。</p>
<p>扩展是指购买更多的服务器（或者是购买更好地服务器替换已有的服务器），配置符合现有配置的环境，然后将应用程序部署在新的服务器上。“云”时代之前，扩展应用程序并没有很方便，如果一开始控制成本，没有购入足够多的服务器或者是招聘足够多的系统工程师，最终可能导致算力不充足而需要扩展。</p>
<p>这些都是云计算出现以前我们面对的问题，或许你现在困惑“云计算是怎么解决这些问题”，请看下文讲解。</p>
<h2 id="what-is-cloud-computing">云计算是什么</h2>
<blockquote>
<p><strong>云计算</strong>是一种按需提供的计算系统资源，例如数据存储（云存储）、算力等，且不需要用户直接主动管理。<br>
云计算通过资源共享获取一致性，采用按使用量付费的模式，协助降低固定资产费用，同时可能需要用户支付超出预期的营业费用。– <a href="https://en.wikipedia.org/wiki/Cloud_computing">维基百科</a></p>
</blockquote>
<p>想象一下，云计算和在网吧中使用电脑类似。网吧中准备好了电脑，当你走进网吧时，只需要支付期望使用时间对应的费用，然后在这个时间段内就可以随便使用电脑。</p>
<p>而云计算呢，你不需要购入、运维服务器，也不用承担运行成本，你也不用担心软件问题或者这些服务器缺少特定的软件，因为这些都由云服务供应商负责。云计算体验感最佳的地方就在于，你只需要付费订购需要使用的服务器以及服务时间段。</p>
<p>进一步而言，当部署一套网络应用程序时，不用考虑很多事情，只用找到一个云服务供应商，选择符合程序要求的服务器，选择操作系统，然后就可以部署应用了。</p>
<p>用简单易懂的话解释，云计算就是让别人来管理你的计算需求。当需要上线网站、手机APP或其他类似应用时，不再需要购置实体的服务器进行部署，只要使用他人已经准备好的服务器，上传代码文件即可。这和租房子类似，而现在做的就是在另外一台电脑中租用了计算空间。</p>
<h2 id="cloud-service-providers">云服务供应商</h2>
<p>云服务供应商是指提供云服务的公司。这些公司通常有很多服务器和系统工程师，会提供全流程服务，用户无需担心类似服务器成本和运行费用等问题，他们会给用户提供一个用于连接服务器的用户界面，当用户需要时使用即可。</p>
<p>目前最受欢迎的云服务供应商是谷歌云、亚马逊（AWS）和微软（Azure），这些公司提供的服务都比较类似，但是定价模式、特点等各有不同。</p>
<p>以下是这些公司的提供内容的简介：</p>
<h3 id="">谷歌</h3>
<p>谷歌提供基础架构即服务IaaS（Compute Engine），容器即服务CaaS（Kubernetes Engine）以及平台即服务PaaS（App Engine）等服务，同时提供数据存储服务，如Cloud Storage, Cloud SQL以及Bigtable等产品。</p>
<h3 id="">亚马逊</h3>
<p>亚马逊是第一家提供云服务的公司，提供基础架构即服务IaaS（Elastic Compute, EC2），容器即服务CaaS（Elastic Kubernetes Service, EKS）以及平台即服务PaaS（Elastic Beanstalk）等产品，同时提供数据存储服务，如Amazon S3、 DynamoDb等产品。</p>
<h3 id="">微软</h3>
<p>微软提供基础架构即服务IaaS（Virtual Machine），容器即服务CaaS（Kubernetes Service, AKS）以及平台即服务PaaS（App Service）等产品，同时提供数据存储服务，如Cosmos DB等产品。</p>
<p>云服务供应商通常为了资源利用最大化会让用户共享服务器，但用户无需知道这方面的内容，也不用担心。接下来我们讲解一下以上提到的一些云服务类型，以便于更好理解这些云服务内容。</p>
<h2 id="different-cloud-services">云服务类型</h2>
<p>云服务供应商可以提供很多云服务类型，以下是最常见的服务类型：</p>
<h3 id="saas">SaaS（软件即服务）</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/05/saas-778x445.jpeg" alt="saas-778x445" width="600" height="400" loading="lazy"></p>
<p><a href="https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fgeeksuper.com%2Fadvantages-of-saas-platforms-for-online-courses%2F&amp;psig=AOvVaw0J54lC0WsxXAoS0L2czE27&amp;ust=1652833369985000&amp;source=images&amp;cd=vfe&amp;ved=0CA0QjhxqFwoTCIDvwOio5fcCFQAAAAAdAAAAABAO">Geek Super</a></p>
<p>这项服务是指用户直接使用一些软件应用，不用关心源代码、托管环境或者开发细节等事情。只是使用软件，并且相信软件会被持续管理与升级。</p>
<h3 id="paas">平台即服务（PaaS）</h3>
<p>这项服务是指用户只需专注应用的开发，其他的事项都已经准备好了（如硬件、计算环境和需要的软件）</p>
<h3 id="iaas">基础架构即服务（IaaS）</h3>
<p>这项服务是所有云服务中最复杂的类型，用户对订购的服务拥有最大的自主权，可以按照用户自己的想法适配和修改，但用户没有服务器的所属权。云服务供应商为用户提供所需的基础架构，用户负责搭建计算环境，安装运行应用程序所需的软件。这个方式与购买硬件非常类似，唯一的区别是用户租用并且虚拟拥有（没有实物）。</p>
<h2 id="challenges-that-cloud-computing-helps-solve">云计算助力解决的难题</h2>
<p>云计算可以避免每次开发新的应用时就需要购置并现场搭建物理服务器，最大的优势就是可以帮助公司降低成本，包括服务器费用和搭建配置服务器的人工费。</p>
<p>扩展服务器因为需要有大量的搭建和配置工作，所以通常都不是简单的事情。譬如，一个应用程序需要更多的存储空间，一般情况下可以通过给现有服务器外置一个数据存储来解决，但这种方法往往有局限性。</p>
<p>这时就会想到购置一个配置更好的服务器或者再购置一个服务器，无论是哪种方法，旧服务器上安装的与应用运行相关的所有软件，都需要在新的服务器上再安装一遍，并且还有把应用的文件转移到新服务器等操作。</p>
<p>通常情况下，这些服务器资源也不会被应用程序充分利用。从商业角度出发，这是一种损失。这个问题最初的解决方案是虚拟化，在服务器中安装虚拟环境，并在虚拟环境中安装应用运行需要的所有软件，应用就可以在虚拟环境中运行起来了。这个方案虽然实现了资源最大化利用，但并不完美。</p>
<h2 id="how-can-cloud-computing-help-you">云计算有什么好处</h2>
<p>云计算有很多好处，一些突出优势如下：</p>
<ul>
<li>相比于建立一个完整的数据中心，付费订购更加划算，只需要计划好需要使用的配置。</li>
<li>云服务供应商负责扩展和运维服务器。</li>
<li>搭建方便，开发人员只需要专注于代码编写，所有的服务器搭建配置都能通过云服务供应商提供的用户界面操作完成，可以缩短开发时间，应用程序交付速度也更快。</li>
<li>可访问性，云服务供应商一般在全球有多个数据中心，确保应用的使用者可以快速地连接到服务器。</li>
<li>数据安全，因为数据不再存储在物理服务器上，所以更不容易被恶意攻击或者盗取数据信息。</li>
</ul>
<h2 id="cloud-deployment-models">云计算部署模式</h2>
<p>云计算部署模式决定了数据（以及应用）存储位置和用户与服务器交互方式。</p>
<h3 id="">公有云</h3>
<p>公有云的所有事项都由云服务供应商负责，这是最受欢迎的模式。选择使用公有云，就不需要关心服务器的运维，并且有高可靠性和无限扩展的可能性，但通常也意味着需要和他人共享服务器。</p>
<p>这也是最便宜的模式，公司一般会采用按使用量付费的方式（所以无需过早提前支付）。</p>
<p>但这个模式有一个潜在弊端，因为所有事项由云服务供应商负责，意味着用户几乎没有服务器的控制权。</p>
<h3 id="">私有云</h3>
<p>私有云模式与传统托管应用程序的方式类似，需要有自己的数据中心，只有用户自己可以使用服务器，意味着用户拥有服务器的最高控制权限。</p>
<p>不同的是，用户可以给服务器的使用者——通常是用户公司的开发人员，提供一个私有的服务界面。用户仍然需要管理这些物理服务器，需要自行负责运维和扩展。</p>
<p>这个模式让用户可以自行控制并且尽可能地搭建安全性环境，所以比公有云更安全。如果基于合规要求必须保证数据不会被泄露，这种模式就最符合要求。</p>
<p>不过这种模式是高额成本的模式，虽然现在有了固定价格模型，但服务器和硬件依然很昂贵，同时还需要额外费用招人运维，而且扩展也需要每次购置新的设备。</p>
<h3 id="">混合云</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/05/What-is-Hybrid-Cloud.jpeg" alt="What-is-Hybrid-Cloud" width="600" height="400" loading="lazy"></p>
<p>混合云 | <a href="https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fw3codemasters.in%2Fwhat-is-hybrid-cloud-benefits-of-a-unified-hybrid-cloud-platform%2F&amp;psig=AOvVaw3ekfLv5gwNG2kjXGoFfWA4&amp;ust=1652833178148000&amp;source=images&amp;cd=vfe&amp;ved=0CA0QjhxqFwoTCPj5qKKp5fcCFQAAAAAdAAAAABAI">W3Codemasters</a></p>
<p>混合云是将公有云和私有云混合起来的模式，更具有灵活性。在使用公有云的同时，也可以按需搭建私有云。需要符合监管要求的数据可以存储在你自己的服务器上，云服务供应商则可以使访问更方便。当机构需要模式转换时，这种模式是最佳的选择，在转移过渡期间依然能够被使用维持商业运行。</p>
<p>举个例子，应用程序托管在公有云上，再连接安装在安全的私有云上的数据库。</p>
<p>这个模式因为需要一些自有服务器，所以定价比公有云更贵；而且因为数据和应用分散分布于多个服务器，比公有云也更为复杂。</p>
<h3 id="">如何选择部署模式</h3>
<p>基于用户的特殊需求决定使用公有云、私有云还是混合云。</p>
<ul>
<li>公有云定价合理获取便利</li>
<li>私有云提供更可靠的安全性和更高的控制权</li>
<li>混合云更加灵活，是介于公有云与私有云之间的方式</li>
</ul>
<p>一些重要因素，如安全需求、合规要求、可扩展性、IT架构中对控制权限的要求等，最终决定部署模式</p>
<h2 id="">总结</h2>
<p>学习了基础知识后，你现在可以开始深入学习云计算了。如果你有任何问题或者相关建议，请联系并转述给我。你可以通过<a href="https://www.linkedin.com/in/idris-aweda-zubair-5433121a3/">LinkedIn</a>、<a href="https://twitter.com/AwedaIdris">Twitter</a>、<a href="https://github.com/Zubs">Github</a>阅读更多我的文章或者关注我的工作，快速方便并且是免费的！</p>
<!--kg-card-end: markdown--> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 测试新手指南——什么是软件测试？ ]]>
                </title>
                <description>
                    <![CDATA[ 软件测试在软件开发全流程中占据重要地位，协助生产过程降本增效。 同时软件测试又是一个复杂且难懂的话题。 在本文中，我将介绍软件测试的主要环节，以及这些环节如何协助开发。 目录  * 什么是软件测试?  * 软件测试分类  * 功能测试类型  * 软件测试原则  * 为什么需要软件测试?  * 总结 什么是软件测试？ 软件测试就是确保软件或者应用程序正常运行的过程，测试方法种类繁多，方法不同需求也不同。 例如，单元测试需要编写测试用例验证代码是否存在缺陷；β测试需要回测历史版本确保既有功能的正常使用。 软件测试是软件开发生命周期的重要组成部分，协助提升开发效率和产品性能，打造符合要求的优质产品。 此外，测试还能降低缺陷率，降低开发成本投入，缩短开发时间。 软件测试分类 软件测试主要有两类： 功能测试 功能测试是验证系统是否按照客户需求或者规范运行。 这类测试旨在验证每个功能正确输入后会有对应的正确输出。 例如，编写一条测试创建用户的测试用例，用例中包含邮箱地址、姓名和密码等格式正确的输入内容，验证成功创建用户。 功能测试就是根据功能需求，模拟业务场景，验证功能的正 ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/software-testing-beginners-guide/</link>
                <guid isPermaLink="false">65dffc194985d903ee575f09</guid>
                
                    <category>
                        <![CDATA[ 软件测试 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ JunoWei ]]>
                </dc:creator>
                <pubDate>Tue, 27 Feb 2024 03:38:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2024/02/Tech-Blog-Cover--4--1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/software-testing-beginners-guide/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What is Software Testing? A Beginner's Guide</a>
      </p><!--kg-card-begin: markdown--><p>软件测试在软件开发全流程中占据重要地位，协助生产过程降本增效。</p>
<p>同时软件测试又是一个复杂且难懂的话题。</p>
<p>在本文中，我将介绍软件测试的主要环节，以及这些环节如何协助开发。</p>
<h3 id="">目录</h3>
<ul>
<li><a href="#what-is-software-testing">什么是软件测试?</a></li>
<li><a href="#types-of-software-testing">软件测试分类</a></li>
<li><a href="#different-types-of-functional-software-testing">功能测试类型</a></li>
<li><a href="#software-testing-principles">软件测试原则</a></li>
<li><a href="#why-is-software-testing-needed">为什么需要软件测试?</a></li>
<li><a href="#conclusion">总结</a></li>
</ul>
<h2 id="what-is-software-testing">什么是软件测试？</h2>
<p>软件测试就是确保软件或者应用程序正常运行的过程，测试方法种类繁多，方法不同需求也不同。</p>
<p>例如，单元测试需要编写测试用例验证代码是否存在缺陷；β测试需要回测历史版本确保既有功能的正常使用。</p>
<p>软件测试是软件开发生命周期的重要组成部分，协助提升开发效率和产品性能，打造符合要求的优质产品。</p>
<p>此外，测试还能降低缺陷率，降低开发成本投入，缩短开发时间。</p>
<h2 id="types-of-software-testing">软件测试分类</h2>
<p>软件测试主要有两类：</p>
<h3 id="">功能测试</h3>
<p>功能测试是验证系统是否按照客户需求或者规范运行。</p>
<p>这类测试旨在验证每个功能正确输入后会有对应的正确输出。</p>
<p>例如，编写一条测试创建用户的测试用例，用例中包含邮箱地址、姓名和密码等格式正确的输入内容，验证成功创建用户。</p>
<p>功能测试就是根据功能需求，模拟业务场景，验证功能的正常使用。</p>
<h3 id="">非功能测试</h3>
<p>非功能测试是验证终端用户的使用体验，如压力测试下的性能表现与稳定性，这对用户体验至关重要。</p>
<p>用户可能无法直观感知到非功能测试发现的代码问题，但也是系统中的重点问题。</p>
<p>非功能测试就是测试加压后软件会如何响应。</p>
<p>本文中，我们将聚焦阐述功能测试的内容。</p>
<h2 id="different-types-of-functional-software-testing">功能测试类型</h2>
<p>功能测试有很多类型，每一个都对应具体的目标，下文会简要介绍所有的类型。</p>
<h3 id="">单元测试</h3>
<p>最小可测试代码称为一个单元，单元测试是验证每一个可独立运行的代码块如何运行及运行的准确性。</p>
<p>目的是测试软件中的每一单元准确运行出所需要的结果。单元测试由开发人员在软件开发过程中自主完成。</p>
<p>单元测试可以发现独立代码模块内可能存在的各种缺陷。独立的函数、方法、过程、模块及对象都可作为一个单元。</p>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2022/09/image-404.png" alt="使用Python编写的单元测试的代码片段" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>使用Python编写的单元测试的代码片段</figcaption>
</figure>
<figure class="kg-card kg-card-image kg-card-hascaption">
    <img src="https://www.freecodecamp.org/news/content/images/2022/09/image-403.png" alt="使用Java编写的单元测试的代码片段" class="kg-image" width="600" height="400" loading="lazy">
    <figcaption>使用Java编写的单元测试的代码片段</figcaption>
</figure>
<h3 id="">集成测试</h3>
<p>软件测试的第二阶段，即完成单元测试后，需要进行集成测试，验证软件中的各个组件或者功能可以准确地联动运行。</p>
<p>测试独立单元或者组件组合成的完整功能，主要关注各单元或组件的交互中是否存在缺陷。</p>
<h3 id="">系统测试</h3>
<p>系统测试是测试整个完整的系统，旨在验证软件是否按照具体需求运行。</p>
<p>系统测试时，质量保证（QA）团队在真实的集成环境中验证APP或软件的每个部分运行是否正常。</p>
<h3 id="">验收测试</h3>
<p>验收测试是测试软件是否已达到可验收的标准，验证已完成的功能是否符合业务需求并且评估是否可交付。</p>
<p>在正式环境测试系统功能是否符合用户的需求、要求以及业务流程，目的是判断软件是否满足验收标准，用户或者客户是否愿意使用。</p>
<p>验收测试是在完成系统测试后，在产品发布之前的测试步骤，是软件测试的最后一项流程。</p>
<h3 id="">回归测试</h3>
<p>回归测试是软件增加新功能后，验证现有功能按照既定需求运行。当相关代码产生变动，如在项目中新增一个模块后，需要回归测试。</p>
<p>回归测试使用所有已执行的历史测试用例再次测试，验证现有功能依然能够准确运行。</p>
<h3 id="">α测试与β测试</h3>
<p>α测试是验收测试的一个环节，属于交付客户前的初次验证测试，通常由QA（质量保证）测试人员或者团队在公司内部完成。</p>
<p>β测试是验证测试的第二环节，将会在外部公网完成测试。</p>
<p>这一阶段将会把β测试版本发到真实生产环境，仅限部分特定人员可以点击查看。例如，freeCodeCamp的数据课程点击<a href="https://www.freecodecamp.org/news/freecodecamp-foundational-math-curriculum/">这里</a>可以获取。</p>
<h2 id="software-testing-principles">软件测试原则</h2>
<p>每个技术工作都有原则，这些条例将会有利于你打造更好的软件产品，减少缺陷的产生。</p>
<p>下面列出的几个写测试用例时需要遵循的软件测试原则：</p>
<h3 id="">测试是证明存在缺陷，而不是确保没有缺陷</h3>
<p>软件测试的目的是指出软件的缺陷，尽量减少缺陷存在的可能性。</p>
<p>各种类型的测试都无法保证软件不再存在缺陷，只是协助开发人员知道并定位缺陷，减少缺陷的保有量。</p>
<h3 id="">无法做到穷举测试</h3>
<p>穷举测试测试是指列出所有可能的输入或者前提条件测试软件</p>
<p>这个方法是不现实的，因为所有的测试用例都是以软件是正确的为基础，验证每一条测试用例的输入条件都会得到正确的输出结果。如果想要测试软件的所有内容，需要耗费大量的时间与精力，实用性并不高。</p>
<h3 id="">尽早介入测试</h3>
<p>尽早测试有利于避免小缺陷（bug），而且在软件开发生命周期的早期找到的缺陷，往往修复缺陷的成本比较低，所以测试应该从软件项目伊始就介入。</p>
<h3 id="">缺陷聚集效应</h3>
<p>缺陷聚集效应是指大部分的缺陷集中在应用程序或者软件的几个功能中。如果找到了问题集中出现的功能模块，你可以重点测试该模块。</p>
<p>在测试时需要牢记二八法则：80%的缺陷往往集中于20%的功能模块。</p>
<h3 id="">警惕杀虫剂悖论</h3>
<p>该原则的理论背景是在农作物上使用的杀虫剂越多时，农作物上的害虫抗药性就会越强，最终杀虫剂就会失效。</p>
<p>同理，如果一直使用既有的测试用例，发现的新缺陷只会越来越少，所以需要不断地更新测试用例并使用最新的测试用例验证软件。</p>
<h3 id="">测试与需求文档高度关联</h3>
<p>测试的基础是关联各类文档，根据功能需求文档验证测试软件的功能是否符合需求。</p>
<p>测试时需要根据软件的功能目的选择测试方法，因为不同的应用程序会有不同的功能，所以并不是所有的软件共用同一套测试方法。</p>
<p>例如，当测试电商网站的APP时，功能侧重商品展示，所以需要重点测试终端用户的商品页展示；当测试接口时，测试的重点是服务端被请求时，接口的响应返回情况。</p>
<p>这两种情况肯定不能使用相同的测试用例，这就是测试与需求文档高度关联。</p>
<h3 id="">无错误谬论</h3>
<p>一款基本完美无缺陷但不符合用户需求的软件，对终端用户来说，是不适用的。</p>
<p>所以，测试时要明确一点，基本完美无缺陷的软件需要匹配用户需求，测试用例不仅是测试代码的问题，而且应该是以用户使用习惯或者潜在使用可能为导向测试软件，这在测试环节中非常重要的原则，</p>
<p>而满足这个原则的最佳方式就是进行β测试。</p>
<h2 id="why-is-software-testing-needed">为什么需要软件测试？</h2>
<p>软件测试既可以确保软件无缺陷以及达到用户需求，还有另外的优势。</p>
<h3 id="">优化安全性能</h3>
<p>网络安全是在构建软件时是非常重要的环节，因为黑客可以恶意攻击存在安全漏洞的软件窃取相关信息，用户信息就可能泄露。</p>
<p>经历过测试的产品会让终端用户觉得这是一款安全可靠的产品，他们的信息不会被泄露。所以用户会更倾向于通过软件测试的无安全漏洞问题的软件。</p>
<h3 id="">改善产品质量</h3>
<p>在构建软件产品代码阶段就引入测试用例和其他测试方法，找到潜在问题，打造无缺陷、低风险、长期稳定运行的软件或者产品。</p>
<p>而且在测试时才会知道产品质量如何，通过测试可以发现非稳定复现的缺陷或者痛点问题，然后修复这些缺陷，在发布正式环境前尽可能打造一个最佳的产品版本。</p>
<h3 id="">提高客户满意度</h3>
<p>这就像你下载一个新APP后，结果使用时出现了报错，没有办法继续使用，最终可能导致你不会再使用这个APP。</p>
<p>这就是软件测试重要性的实际体现，软件发布正式环境交付用户使用前，通过测试可以发现类似的缺陷，同时也是给开发人员一次机会避免出现这样的问题。</p>
<p>早期开发阶段引入软件测试，也是给用户展示你重视用户体验的一种方式，有助于建立稳定长久的客户关系。</p>
<h3 id="">节省成本</h3>
<p>软件测试可以帮助你节省很多成本，开发环节的每个阶段都包含了许多事情，比如多团队间的明确沟通与合作，每一步都会有非常长的代办清单，随时都有可能出现混乱。</p>
<p>如果在产品周期内出现了这样的问题是非常棘手的，因为需要你同时处理人员关系，重新分配任务并且定位问题的本质。</p>
<p>同时，在修复问题时用户是没有办法使用APP的，不但违背了产品初衷而且还造成了不良的用户体验。软件测试可以解决这一系列的问题，并且持续测试的话，用户可以体验到最佳的产品。</p>
<h2 id="conclusion">总结</h2>
<p>总的来说，软件测试是开发环节中非常重要的一环，不仅可以让团队避免很多问题，还可以让用户使用到体验感良好且没有缺陷的产品。</p>
<p>如果你对软件测试感兴趣的话，可以点击<a href="https://www.freecodecamp.org/learn/quality-assurance/#quality-assurance-and-testing-with-chai">这里</a>查看freeCodecamp的质量保证课程学习更多的质量保证（QA）内容。QA人员就是专注测试软件或者APP缺陷的科技工作者。</p>
<!--kg-card-end: markdown--> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
