How to print section titles like tab-list?

Here's a possible option using the background package to place the border, the tabs and the page number:

\documentclass{article}
\usepackage[a5paper,vmargin=2cm]{geometry}
\usepackage{background}
\usepackage{etoolbox}
\usepackage{totcount}
\usepackage{lipsum}

% to have access to the total number of sections
\regtotcounter{section}

% every section starts on a new page
\pretocmd{\section}{\clearpage}{}{}

% auxiliary lengths for the height of the frame and the width of each tab
\newlength\mylen
\newlength\mylena

% style for the section tabs
\tikzset{tab/.style={
  text width=\mylena,anchor=south,
  draw=gray,thick,rectangle,rounded corners=12pt,rotate=270,
  align=center,text height=20pt,
  text depth=25pt,inner sep=0pt,fill=gray!20,
  yshift=-18pt,font=\sffamily\LARGE}}
% style for the current section tab
\tikzset{selectedtab/.style={tab,color=white,fill=gray!90}}

% the page number is showed in the background material
\pagestyle{empty}

\AtBeginDocument{
% calculation of the width for each tab
\setlength\mylen{\dimexpr\textheight+2cm\relax}
\ifnum\totvalue{section}>0
\setlength\mylena{\dimexpr\mylen/\totvalue{section}\relax}
\fi

% the main part; as background material we place the border, 
% the section (current and other) tabs and the page number 
\backgroundsetup{
scale=1,
color=black,
angle=0,
opacity=1,
contents= {
  \begin{tikzpicture}[remember picture, overlay]
  \node[inner sep=0pt,text width=\the\dimexpr\textwidth+1.5cm\relax] 
    at (current page.center) (border) {\rule{0pt}{\dimexpr\textheight+2cm\relax}};
  \foreach \valsection in {0,...,\numexpr\totvalue{section}-1\relax}
  {
    \node[\ifnum\thesection<\numexpr\valsection+1\relax tab\else \ifnum\thesection>\numexpr\valsection+1\relax tab\else selectedtab\fi\fi,xshift=(0.5+\valsection)*\mylena] 
      at (border.north east) (tab-\valsection) {Section \the\numexpr\valsection+1\relax};
  }
  \node[draw=gray,line width=2pt,rectangle,rounded corners=10pt,inner sep=0pt,
    text width=\the\dimexpr\textwidth+1.5cm\relax,fill=white] 
    at (current page.center) {\rule{0pt}{\dimexpr\textheight+2cm\relax}};
  \node[font=\LARGE\sffamily,fill=white] 
    at (border.south) {\makebox[3em][c]{\thepage}};
\end{tikzpicture}}
  }
}

\begin{document}

\section{Test Section One}
\lipsum[1-3]
\section{Test Section Two}
\lipsum[1-3]
\section{Test Section Three}
\lipsum[1-3]
\section{Test Section Four}
\lipsum[2]

\end{document}

enter image description here

The document needs to be processed three times.

If the most recent version for the background package is not available, here's the code using the syntax for version 1.0:

\documentclass{article}
\usepackage[a5paper,vmargin=2cm]{geometry}
\usepackage{background}
\usepackage{etoolbox}
\usepackage{totcount}
\usepackage{lipsum}

% to have access to the total number of sections
\regtotcounter{section}

% every section starts on a new page
\pretocmd{\section}{\clearpage}{}{}

% auxiliary lengths for the height of the frame and the width of each tab
\newlength\mylen
\newlength\mylena

% style for the section tabs
\tikzset{tab/.style={
  text width=\mylena,anchor=south,
  draw=gray,thick,rectangle,rounded corners=12pt,rotate=270,
  align=center,text height=20pt,
  text depth=25pt,inner sep=0pt,fill=gray!20,
  yshift=-18pt,font=\sffamily\LARGE}}
% style for the current section tab
\tikzset{selectedtab/.style={tab,color=white,fill=gray!90}}

% the page number is showed in the background material
\pagestyle{empty}

\AtBeginDocument{
% calculation of the width for each tab
\setlength\mylen{\dimexpr\textheight+2cm\relax}
\ifnum\totvalue{section}>0
\setlength\mylena{\dimexpr\mylen/\totvalue{section}\relax}
\fi

% the main part; as background material we place the border, 
% the section (current and other) tabs and the page number 
\SetBgScale{1}
\SetBgColor{black}
\SetBgAngle{0}
\SetBgOpacity{1}
\SetBgContents{
  \begin{tikzpicture}[remember picture, overlay]
  \node[inner sep=0pt,text width=\the\dimexpr\textwidth+1.5cm\relax] 
    at (current page.center) (border) {\rule{0pt}{\dimexpr\textheight+2cm\relax}};
  \foreach \valsection in {0,...,\numexpr\totvalue{section}-1\relax}
  {
    \node[\ifnum\thesection<\numexpr\valsection+1\relax tab\else \ifnum\thesection>\numexpr\valsection+1\relax tab\else selectedtab\fi\fi,xshift=(0.5+\valsection)*\mylena] 
      at (border.north east) (tab-\valsection) {Section \the\numexpr\valsection+1\relax};
  }
  \node[draw=gray,line width=2pt,rectangle,rounded corners=10pt,inner sep=0pt,
    text width=\the\dimexpr\textwidth+1.5cm\relax,fill=white] 
    at (current page.center) {\rule{0pt}{\dimexpr\textheight+2cm\relax}};
  \node[font=\LARGE\sffamily,fill=white] 
    at (border.south) {\makebox[3em][c]{\thepage}};
\end{tikzpicture}}
}

\begin{document}

\section{Test Section One}
\lipsum[1-3]
\section{Test Section Two}
\lipsum[1-3]
\section{Test Section Three}
\lipsum[1-3]
\section{Test Section Four}
\lipsum[2]

\end{document}

Here is another suggestion based on the answer of @Gonzalo Medina but using the scrlayer package to define a layer pagestyle:

\documentclass{article}
\usepackage[a5paper,vmargin=2cm]{geometry}
\usepackage{tikz}% loads also xcolor and graphicx
\usepackage{totcount}
\usepackage{lipsum}% for dummy text
\usepackage{etoolbox}

% to have access to the total number of sections
\regtotcounter{section}

% every section starts on a new page
\pretocmd{\section}{\clearpage}{}{}

% auxiliary length for the width of each tab
\newlength\mylena

\tikzset{
  tab/.style={% style for the section tabs
    text width=\mylena,
    draw=gray,
    thick,
    rectangle,
    rounded corners=12pt,
    align=center,
    text width=53pt,
    inner sep=0pt,
    fill=gray!20,
    font=\sffamily\LARGE,
    overlay
  },
  selectedtab/.style={% style for the current section tab
    tab,
    color=gray!90,
    text=white
  },
  pagenumber/.style={% style for the page number
    font=\LARGE\sffamily,
    fill=white,
    text width=3em,
    align=center
  }
}

\usepackage{scrlayer}
\DeclarePageStyleByLayers{border}{border.odd,border.even}
\pagestyle{border}

\DeclareNewLayer[
  background,
  oddpage,
  textarea,
  addvoffset=-1cm,
  addhoffset=-.75cm,
  addheight=2cm,
  addwidth=1.5cm,
  contents={%
  \ifnum\totvalue{section}>0
    \setlength\mylena{\dimexpr\layerheight/\totvalue{section}\relax}%
  \fi
    \begin{tikzpicture}
      \pgfdeclarelayer{background}
      \pgfsetlayers{background,main}
      \node[
        draw=gray,
        fill=white,
        inner sep=0pt,
        minimum width=\layerwidth-\pgflinewidth,
        minimum height=\layerheight-\pgflinewidth,
        rounded corners=10pt,
        line width=2pt
      ](border){};
      \node[pagenumber]at (border.south){\thepage};
      \begin{pgfonlayer}{background}
        \foreach \valsection in {0,...,\numexpr\totvalue{section}-1\relax}{%
          \node[
            \ifnum\value{section}<\numexpr\valsection+1\relax 
              tab%
            \else 
              \ifnum\value{section}>\numexpr\valsection+1\relax 
                tab%
              \else
                selectedtab%
              \fi
            \fi,
            minimum height=\mylena-\pgflinewidth
          ] at ([yshift=-(0.5+\valsection)*\mylena]border.north east)
          {%
            \hspace*{25pt}\rotatebox{-90}{Section \the\numexpr\valsection+1\relax}%
          };
        }
      \end{pgfonlayer}
    \end{tikzpicture}%
  }
]{border.odd}

\DeclareNewLayer[
  clone=border.odd,
  evenpage,
  contents={%
    \begin{tikzpicture}
      \node[
        draw=gray,
        fill=white,
        inner sep=0pt,
        minimum width=\layerwidth-\pgflinewidth,
        minimum height=\layerheight-\pgflinewidth,
        rounded corners=10pt,
        line width=2pt
      ](border){};
      \node[pagenumber]at (border.south){\thepage};
    \end{tikzpicture}%
  }
]{border.even}

\begin{document}
\section{Test Section One}
\lipsum[1-3]
\section{Test Section Two}
\lipsum[1-3]
\section{Test Section Three}
\lipsum[1-3]
\section{Test Section Four}
\lipsum[1-5]
\end{document}

Run twice to get

enter image description here

As in the example above it is possible to define different layers for even an odd pages. For a twosided article

\documentclass[twoside]{article}

the example above results in

enter image description here