In computing, network virtualization is the process of combining hardware and software network resources and network functionality into a single, software-based administrative entity, a virtual network. Network virtualization involves platform virtualization, often combined with resource virtualization. Network virtualization is categorized as either external virtualization, combining many networks or parts of networks into a virtual unit, or internal virtualization, providing network-like functionality to software containers on a single network server. In software testing, software developers use network virtualization to test software which are under development in a simulation of the network environments in which the software is intended to operate. As a component of application performance engineering, network virtualization enables developers to emulate connections between applications, services, dependencies, and end users in a test environment without having to physically test the software on all possible hardware or system software. The validity of the test depends on the accuracy of the network virtualization in emulating real hardware and operating systems. Various equipment and software vendors offer network virtualization by combining any of the following: Network hardware, such as switches and network adapters, also known as network interface cards (NICs) Network elements, such as firewalls and load balancers Networks, such as virtual LANs (VLANs) and containers such as virtual machines (VMs) Network storage devices Network machine-to-machine elements, such as telecommunications devices Network mobile elements, such as laptop computers, tablet computers, and smartphones Network media, such as Ethernet and Fibre Channel External network virtualization combines or subdivides one or more local area networks (LANs) into virtual networks to improve a large network's or data center's efficiency. A virtual local area network (VLAN) and network switch comprise the key components.