title: Difference between functional test and end-to-end test
body: <p>What is the difference between functional test and end-to-end test?</p>
  
  <p><a href="https://www.techopedia.com/definition/7035/end-to-end-test" rel="noreferrer">Techopedia</a> says that end-to-end test is </p>
  
  <blockquote>
    <p>a methodology used to test whether the flow of
    an application is performing as designed from start to finish. The
    purpose of carrying out end-to-end tests is to identify system
    dependencies and to ensure that the right information is passed
    between various system components and systems.</p>
  </blockquote>
  
  <p><a href="https://www.techopedia.com/definition/19509/functional-testing" rel="noreferrer">Techopedia</a> also says the following about functional test:</p>
  
  <blockquote>
    <p>Functional testing is a software testing process used within software
    development in which software is tested to ensure that it conforms
    with all requirements. Functional testing is a way of checking
    software to ensure that it has all the required functionality that's
    specified within its functional requirements.</p>
  </blockquote>
  
  <p>After reading the above two paragraphs, I'm still confused about the difference between them.</p>
  
  <p>I have a node.js application which accepts requests, then parses the request, then sends the parsed data to a Database.</p>
  
  <pre><code>        requests               parse requests and send data to the database  
  
  Client ---------&gt; node.js app --------------------------------------------&gt; Database
  </code></pre>
  
  <p>How can I write end-to-end test and functional test for the node.js app I mentioned?</p>
  
  <p>I think in both types of the tests, I should treat the node.js app as a black box. And send requests to it. Then check if the output of the black box is correct or not.</p>
  
  <p>It seems that in my case, there's no difference between functional test and end-to-end test.</p>