Dev Glossary - kimschles/schlesinger-knowledge GitHub Wiki

Concepts and Technologies

  • Webhooks

    • An http request that is sent to an external server when a user or automated process triggers an event
  • Subpub

    • Subscribe and publish
  • Browserify

  • Daemon

    • A program that runs as a background process
    • Does not require user interaction
    • Examples: the Docker Daemon, the PostgreSQL daemon, turning off services with brew services
  • WebRTC

    • Real Time Communication between browsers, mobile apps and IoT devices
    • Used to create chat apps, video and audio sharing
    • JS APIs are available to use WebRTC with Browsers
  • TCP

    • Transmission control protocol
      • Used for transferring a reliable, ordered data stream
    • TCP/IP: transmission control protocol/internet protocol
  • UDP

    • User Datagram Protocol
      • Users sends messages (datagrams) to other users

CLI and Bash

  • source
    • Example usage: source .zshrc
      • To reload the file after making changes.

Git and Github

  • git reset --head
  • git push origin master --force-with-lease
    • force the push unless there are a lot of changes
  • cherrypick
    • To pull in changes from a specific commit

Tests

(in order from quick to slow)

  • Unit tests- test something small and isolated quickly
  • Integration tests- test that your units work together correctly (in modern front-end stuff, this would be any kind of component test)
  • Acceptance test- test that the software meets business requirements
  • e2e test- test the software from the perspective of a user
  • manual test- a QA person running the software by hand
  • user acceptance testing - actual users of your software following test scripts
  • acceptance is usually the boundary between automation and manual

Automated Tests

  • parameterized tests can be done at any level, and involve a table of inputs mapped to known outputs: they each get fed into the test suite one after the other
    • helpful when you have like dozens or hundreds of boundary conditions
  • theory tests are tests that exhaust every possible combination of inputs and outputs to prove that something will unconditionally work
  • generative tests are where the computer randomly picks the inputs for you
    • those can be deterministic (meaning that you generate them once, but it uses the same ones every time) or not
  • pairwise tests are for things that have too many possible combinations (usually because they have a fuck ton of inputs), so you test different pairs of inputs at different boundary conditions

Non-Functional Tests

  • most notably smoke testing (does it turn on?), performance testing (is it fast enough?), load testing (at what load will it break?), security testing (is it hackable?), stress testing (how much load can it handle all at once?), and usability testing (can our users figure this out?)